blob: b0927eea3e6c2764f2d024925335e7950a046926 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
// a place for hacks
;(function(){
var version = navigator.appVersion.match(/^.*Chrome\/(\d+)\..*$/)
if (!version) return
version = parseInt(version[1])
if (version <= 26) return
setTimeout(fixToolbarItem, 1000)
function fixToolbarItem() {
var toolbarItems = document.querySelectorAll(".toolbar-item.toggleable")
for (var i=0; i<toolbarItems.length; i++) {
var style = toolbarItems[i].style
if (style.display != "none") {
toolbarItems[i].style.display = "inline-block"
}
}
}
})();
// __proto__ inheritance support; Weinre client classes only
(function () {
var hasProto = "__proto__" in Object.prototype;
if (!hasProto) {
Object.defineProperty(Object.prototype, '__proto__', {set : function(value){
var tmpFunc = new Function();
tmpFunc.prototype = Object.create(value);
function copyProperties(a, b) {
var d;
for (var i in b) {
d = Object.getOwnPropertyDescriptor(b, i);
if (d &&(d.get || d.set)) {
Object.defineProperty(a, i, d);
} else {
a[i] = b[i];
}
}
return a;
}
function findProtoOwner(root, proto, depth){
if (depth > 1) return;
var props = Object.getOwnPropertyNames(root),
prop,
d;
for (var i = props.length; i--;) {
prop = props[i];
d = Object.getOwnPropertyDescriptor(root, prop);
if (d && (d.get || d.set)) continue;
if (typeof(root[prop]) === 'function' && root[prop].prototype === proto) {
return root[prop];
}
if (root[prop] && root[prop].prototype instanceof WebInspector.Object) {
var owner = findProtoOwner(root[prop], proto, depth+1);
if (owner) return owner;
}
}
}
copyProperties(tmpFunc.prototype, this);
// hack to be able to redefine object prototype; we can't do it another way
// because we have prototype as 'this' here only
var owner = findProtoOwner (window.WebInspector, this, 0);
if (owner) {
owner.prototype = new tmpFunc();
owner.prototype.proto = value;
}
}, get : function(){
return this.proto;
}});
}
})();
//if (!Object.prototype.__defineGetter__) {
// Object.prototype.__defineGetter__ = function (key, fn) {
// Object.defineProperty(this, key, {get: fn});
// }
//}
//
//if (!Object.prototype.__defineSetter__) {
// Object.prototype.__defineSetter__ = function (key, fn) {
// Object.defineProperty(this, key, {set: fn, configurable: true, writable : true});
// }
//}
// hack for not existing scrollIntoViewIfNeeded
if (!HTMLElement.prototype.scrollIntoViewIfNeeded){
HTMLElement.prototype.scrollIntoViewIfNeeded = function(alignWithTop) {
return this.scrollIntoView(alignWithTop);
};
}
// hack for not existing setBaseAndExtent
if (!Selection.prototype.setBaseAndExtent){
Selection.prototype.setBaseAndExtent = Selection.prototype.selectAllChildren;
}