OLD | NEW |
1 /** | 1 /** |
2 * @license | 2 * @license |
3 * Copyright (c) 2014 The Polymer Project Authors. All rights reserved. | 3 * Copyright (c) 2014 The Polymer Project Authors. All rights reserved. |
4 * This code may only be used under the BSD style license found at http://polyme
r.github.io/LICENSE.txt | 4 * This code may only be used under the BSD style license found at http://polyme
r.github.io/LICENSE.txt |
5 * The complete set of authors may be found at http://polymer.github.io/AUTHORS.
txt | 5 * The complete set of authors may be found at http://polymer.github.io/AUTHORS.
txt |
6 * The complete set of contributors may be found at http://polymer.github.io/CON
TRIBUTORS.txt | 6 * The complete set of contributors may be found at http://polymer.github.io/CON
TRIBUTORS.txt |
7 * Code distributed by Google as part of the polymer project is also | 7 * Code distributed by Google as part of the polymer project is also |
8 * subject to an additional IP rights grant found at http://polymer.github.io/PA
TENTS.txt | 8 * subject to an additional IP rights grant found at http://polymer.github.io/PA
TENTS.txt |
9 */ | 9 */ |
10 // @version 0.7.5 | 10 // @version 0.7.20 |
11 if (typeof WeakMap === "undefined") { | 11 if (typeof WeakMap === "undefined") { |
12 (function() { | 12 (function() { |
13 var defineProperty = Object.defineProperty; | 13 var defineProperty = Object.defineProperty; |
14 var counter = Date.now() % 1e9; | 14 var counter = Date.now() % 1e9; |
15 var WeakMap = function() { | 15 var WeakMap = function() { |
16 this.name = "__st" + (Math.random() * 1e9 >>> 0) + (counter++ + "__"); | 16 this.name = "__st" + (Math.random() * 1e9 >>> 0) + (counter++ + "__"); |
17 }; | 17 }; |
18 WeakMap.prototype = { | 18 WeakMap.prototype = { |
19 set: function(key, value) { | 19 set: function(key, value) { |
20 var entry = key[this.name]; | 20 var entry = key[this.name]; |
(...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
299 function forwardMethodsToWrapper(constructors, names) { | 299 function forwardMethodsToWrapper(constructors, names) { |
300 constructors.forEach(function(constructor) { | 300 constructors.forEach(function(constructor) { |
301 names.forEach(function(name) { | 301 names.forEach(function(name) { |
302 constructor.prototype[name] = function() { | 302 constructor.prototype[name] = function() { |
303 var w = wrapIfNeeded(this); | 303 var w = wrapIfNeeded(this); |
304 return w[name].apply(w, arguments); | 304 return w[name].apply(w, arguments); |
305 }; | 305 }; |
306 }); | 306 }); |
307 }); | 307 }); |
308 } | 308 } |
| 309 scope.addForwardingProperties = addForwardingProperties; |
309 scope.assert = assert; | 310 scope.assert = assert; |
310 scope.constructorTable = constructorTable; | 311 scope.constructorTable = constructorTable; |
311 scope.defineGetter = defineGetter; | 312 scope.defineGetter = defineGetter; |
312 scope.defineWrapGetter = defineWrapGetter; | 313 scope.defineWrapGetter = defineWrapGetter; |
313 scope.forwardMethodsToWrapper = forwardMethodsToWrapper; | 314 scope.forwardMethodsToWrapper = forwardMethodsToWrapper; |
314 scope.isIdentifierName = isIdentifierName; | 315 scope.isIdentifierName = isIdentifierName; |
315 scope.isWrapper = isWrapper; | 316 scope.isWrapper = isWrapper; |
316 scope.isWrapperFor = isWrapperFor; | 317 scope.isWrapperFor = isWrapperFor; |
317 scope.mixin = mixin; | 318 scope.mixin = mixin; |
318 scope.nativePrototypeTable = nativePrototypeTable; | 319 scope.nativePrototypeTable = nativePrototypeTable; |
(...skipping 792 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1111 return eventPath.slice(); | 1112 return eventPath.slice(); |
1112 }, | 1113 }, |
1113 stopPropagation: function() { | 1114 stopPropagation: function() { |
1114 stopPropagationTable.set(this, true); | 1115 stopPropagationTable.set(this, true); |
1115 }, | 1116 }, |
1116 stopImmediatePropagation: function() { | 1117 stopImmediatePropagation: function() { |
1117 stopPropagationTable.set(this, true); | 1118 stopPropagationTable.set(this, true); |
1118 stopImmediatePropagationTable.set(this, true); | 1119 stopImmediatePropagationTable.set(this, true); |
1119 } | 1120 } |
1120 }; | 1121 }; |
| 1122 var supportsDefaultPrevented = function() { |
| 1123 var e = document.createEvent("Event"); |
| 1124 e.initEvent("test", true, true); |
| 1125 e.preventDefault(); |
| 1126 return e.defaultPrevented; |
| 1127 }(); |
| 1128 if (!supportsDefaultPrevented) { |
| 1129 Event.prototype.preventDefault = function() { |
| 1130 if (!this.cancelable) return; |
| 1131 unsafeUnwrap(this).preventDefault(); |
| 1132 Object.defineProperty(this, "defaultPrevented", { |
| 1133 get: function() { |
| 1134 return true; |
| 1135 }, |
| 1136 configurable: true |
| 1137 }); |
| 1138 }; |
| 1139 } |
1121 registerWrapper(OriginalEvent, Event, document.createEvent("Event")); | 1140 registerWrapper(OriginalEvent, Event, document.createEvent("Event")); |
1122 function unwrapOptions(options) { | 1141 function unwrapOptions(options) { |
1123 if (!options || !options.relatedTarget) return options; | 1142 if (!options || !options.relatedTarget) return options; |
1124 return Object.create(options, { | 1143 return Object.create(options, { |
1125 relatedTarget: { | 1144 relatedTarget: { |
1126 value: unwrap(options.relatedTarget) | 1145 value: unwrap(options.relatedTarget) |
1127 } | 1146 } |
1128 }); | 1147 }); |
1129 } | 1148 } |
1130 function registerGenericEvent(name, SuperEvent, prototype) { | 1149 function registerGenericEvent(name, SuperEvent, prototype) { |
(...skipping 607 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1738 this.previousSibling_ = undefined; | 1757 this.previousSibling_ = undefined; |
1739 this.treeScope_ = undefined; | 1758 this.treeScope_ = undefined; |
1740 } | 1759 } |
1741 var OriginalDocumentFragment = window.DocumentFragment; | 1760 var OriginalDocumentFragment = window.DocumentFragment; |
1742 var originalAppendChild = OriginalNode.prototype.appendChild; | 1761 var originalAppendChild = OriginalNode.prototype.appendChild; |
1743 var originalCompareDocumentPosition = OriginalNode.prototype.compareDocumentPo
sition; | 1762 var originalCompareDocumentPosition = OriginalNode.prototype.compareDocumentPo
sition; |
1744 var originalIsEqualNode = OriginalNode.prototype.isEqualNode; | 1763 var originalIsEqualNode = OriginalNode.prototype.isEqualNode; |
1745 var originalInsertBefore = OriginalNode.prototype.insertBefore; | 1764 var originalInsertBefore = OriginalNode.prototype.insertBefore; |
1746 var originalRemoveChild = OriginalNode.prototype.removeChild; | 1765 var originalRemoveChild = OriginalNode.prototype.removeChild; |
1747 var originalReplaceChild = OriginalNode.prototype.replaceChild; | 1766 var originalReplaceChild = OriginalNode.prototype.replaceChild; |
1748 var isIe = /Trident|Edge/.test(navigator.userAgent); | 1767 var isIEOrEdge = /Trident|Edge/.test(navigator.userAgent); |
1749 var removeChildOriginalHelper = isIe ? function(parent, child) { | 1768 var removeChildOriginalHelper = isIEOrEdge ? function(parent, child) { |
1750 try { | 1769 try { |
1751 originalRemoveChild.call(parent, child); | 1770 originalRemoveChild.call(parent, child); |
1752 } catch (ex) { | 1771 } catch (ex) { |
1753 if (!(parent instanceof OriginalDocumentFragment)) throw ex; | 1772 if (!(parent instanceof OriginalDocumentFragment)) throw ex; |
1754 } | 1773 } |
1755 } : function(parent, child) { | 1774 } : function(parent, child) { |
1756 originalRemoveChild.call(parent, child); | 1775 originalRemoveChild.call(parent, child); |
1757 }; | 1776 }; |
1758 Node.prototype = Object.create(EventTarget.prototype); | 1777 Node.prototype = Object.create(EventTarget.prototype); |
1759 mixin(Node.prototype, { | 1778 mixin(Node.prototype, { |
(...skipping 956 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2716 function methodRequiresRendering(name) { | 2735 function methodRequiresRendering(name) { |
2717 Object.defineProperty(HTMLElement.prototype, name, { | 2736 Object.defineProperty(HTMLElement.prototype, name, { |
2718 value: function() { | 2737 value: function() { |
2719 scope.renderAllPending(); | 2738 scope.renderAllPending(); |
2720 return unsafeUnwrap(this)[name].apply(unsafeUnwrap(this), arguments); | 2739 return unsafeUnwrap(this)[name].apply(unsafeUnwrap(this), arguments); |
2721 }, | 2740 }, |
2722 configurable: true, | 2741 configurable: true, |
2723 enumerable: true | 2742 enumerable: true |
2724 }); | 2743 }); |
2725 } | 2744 } |
2726 [ "getBoundingClientRect", "getClientRects", "scrollIntoView" ].forEach(method
RequiresRendering); | 2745 [ "focus", "getBoundingClientRect", "getClientRects", "scrollIntoView" ].forEa
ch(methodRequiresRendering); |
2727 registerWrapper(OriginalHTMLElement, HTMLElement, document.createElement("b"))
; | 2746 registerWrapper(OriginalHTMLElement, HTMLElement, document.createElement("b"))
; |
2728 scope.wrappers.HTMLElement = HTMLElement; | 2747 scope.wrappers.HTMLElement = HTMLElement; |
2729 scope.getInnerHTML = getInnerHTML; | 2748 scope.getInnerHTML = getInnerHTML; |
2730 scope.setInnerHTML = setInnerHTML; | 2749 scope.setInnerHTML = setInnerHTML; |
2731 })(window.ShadowDOMPolyfill); | 2750 })(window.ShadowDOMPolyfill); |
2732 | 2751 |
2733 (function(scope) { | 2752 (function(scope) { |
2734 "use strict"; | 2753 "use strict"; |
2735 var HTMLElement = scope.wrappers.HTMLElement; | 2754 var HTMLElement = scope.wrappers.HTMLElement; |
2736 var mixin = scope.mixin; | 2755 var mixin = scope.mixin; |
(...skipping 401 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3138 } | 3157 } |
3139 HTMLUnknownElement.prototype = Object.create(HTMLElement.prototype); | 3158 HTMLUnknownElement.prototype = Object.create(HTMLElement.prototype); |
3140 registerWrapper(OriginalHTMLUnknownElement, HTMLUnknownElement); | 3159 registerWrapper(OriginalHTMLUnknownElement, HTMLUnknownElement); |
3141 scope.wrappers.HTMLUnknownElement = HTMLUnknownElement; | 3160 scope.wrappers.HTMLUnknownElement = HTMLUnknownElement; |
3142 })(window.ShadowDOMPolyfill); | 3161 })(window.ShadowDOMPolyfill); |
3143 | 3162 |
3144 (function(scope) { | 3163 (function(scope) { |
3145 "use strict"; | 3164 "use strict"; |
3146 var Element = scope.wrappers.Element; | 3165 var Element = scope.wrappers.Element; |
3147 var HTMLElement = scope.wrappers.HTMLElement; | 3166 var HTMLElement = scope.wrappers.HTMLElement; |
3148 var registerObject = scope.registerObject; | 3167 var registerWrapper = scope.registerWrapper; |
3149 var defineWrapGetter = scope.defineWrapGetter; | 3168 var defineWrapGetter = scope.defineWrapGetter; |
| 3169 var unsafeUnwrap = scope.unsafeUnwrap; |
| 3170 var wrap = scope.wrap; |
| 3171 var mixin = scope.mixin; |
3150 var SVG_NS = "http://www.w3.org/2000/svg"; | 3172 var SVG_NS = "http://www.w3.org/2000/svg"; |
| 3173 var OriginalSVGElement = window.SVGElement; |
3151 var svgTitleElement = document.createElementNS(SVG_NS, "title"); | 3174 var svgTitleElement = document.createElementNS(SVG_NS, "title"); |
3152 var SVGTitleElement = registerObject(svgTitleElement); | |
3153 var SVGElement = Object.getPrototypeOf(SVGTitleElement.prototype).constructor; | |
3154 if (!("classList" in svgTitleElement)) { | 3175 if (!("classList" in svgTitleElement)) { |
3155 var descr = Object.getOwnPropertyDescriptor(Element.prototype, "classList"); | 3176 var descr = Object.getOwnPropertyDescriptor(Element.prototype, "classList"); |
3156 Object.defineProperty(HTMLElement.prototype, "classList", descr); | 3177 Object.defineProperty(HTMLElement.prototype, "classList", descr); |
3157 delete Element.prototype.classList; | 3178 delete Element.prototype.classList; |
3158 } | 3179 } |
3159 defineWrapGetter(SVGElement, "ownerSVGElement"); | 3180 function SVGElement(node) { |
| 3181 Element.call(this, node); |
| 3182 } |
| 3183 SVGElement.prototype = Object.create(Element.prototype); |
| 3184 mixin(SVGElement.prototype, { |
| 3185 get ownerSVGElement() { |
| 3186 return wrap(unsafeUnwrap(this).ownerSVGElement); |
| 3187 } |
| 3188 }); |
| 3189 registerWrapper(OriginalSVGElement, SVGElement, document.createElementNS(SVG_N
S, "title")); |
3160 scope.wrappers.SVGElement = SVGElement; | 3190 scope.wrappers.SVGElement = SVGElement; |
3161 })(window.ShadowDOMPolyfill); | 3191 })(window.ShadowDOMPolyfill); |
3162 | 3192 |
3163 (function(scope) { | 3193 (function(scope) { |
3164 "use strict"; | 3194 "use strict"; |
3165 var mixin = scope.mixin; | 3195 var mixin = scope.mixin; |
3166 var registerWrapper = scope.registerWrapper; | 3196 var registerWrapper = scope.registerWrapper; |
3167 var unwrap = scope.unwrap; | 3197 var unwrap = scope.unwrap; |
3168 var wrap = scope.wrap; | 3198 var wrap = scope.wrap; |
3169 var OriginalSVGUseElement = window.SVGUseElement; | 3199 var OriginalSVGUseElement = window.SVGUseElement; |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3259 arguments[0] = unwrap(arguments[0]); | 3289 arguments[0] = unwrap(arguments[0]); |
3260 return unsafeUnwrap(this).createPattern.apply(unsafeUnwrap(this), argument
s); | 3290 return unsafeUnwrap(this).createPattern.apply(unsafeUnwrap(this), argument
s); |
3261 } | 3291 } |
3262 }); | 3292 }); |
3263 registerWrapper(OriginalCanvasRenderingContext2D, CanvasRenderingContext2D, do
cument.createElement("canvas").getContext("2d")); | 3293 registerWrapper(OriginalCanvasRenderingContext2D, CanvasRenderingContext2D, do
cument.createElement("canvas").getContext("2d")); |
3264 scope.wrappers.CanvasRenderingContext2D = CanvasRenderingContext2D; | 3294 scope.wrappers.CanvasRenderingContext2D = CanvasRenderingContext2D; |
3265 })(window.ShadowDOMPolyfill); | 3295 })(window.ShadowDOMPolyfill); |
3266 | 3296 |
3267 (function(scope) { | 3297 (function(scope) { |
3268 "use strict"; | 3298 "use strict"; |
| 3299 var addForwardingProperties = scope.addForwardingProperties; |
3269 var mixin = scope.mixin; | 3300 var mixin = scope.mixin; |
3270 var registerWrapper = scope.registerWrapper; | 3301 var registerWrapper = scope.registerWrapper; |
3271 var setWrapper = scope.setWrapper; | 3302 var setWrapper = scope.setWrapper; |
3272 var unsafeUnwrap = scope.unsafeUnwrap; | 3303 var unsafeUnwrap = scope.unsafeUnwrap; |
3273 var unwrapIfNeeded = scope.unwrapIfNeeded; | 3304 var unwrapIfNeeded = scope.unwrapIfNeeded; |
3274 var wrap = scope.wrap; | 3305 var wrap = scope.wrap; |
3275 var OriginalWebGLRenderingContext = window.WebGLRenderingContext; | 3306 var OriginalWebGLRenderingContext = window.WebGLRenderingContext; |
3276 if (!OriginalWebGLRenderingContext) return; | 3307 if (!OriginalWebGLRenderingContext) return; |
3277 function WebGLRenderingContext(impl) { | 3308 function WebGLRenderingContext(impl) { |
3278 setWrapper(impl, this); | 3309 setWrapper(impl, this); |
3279 } | 3310 } |
3280 mixin(WebGLRenderingContext.prototype, { | 3311 mixin(WebGLRenderingContext.prototype, { |
3281 get canvas() { | 3312 get canvas() { |
3282 return wrap(unsafeUnwrap(this).canvas); | 3313 return wrap(unsafeUnwrap(this).canvas); |
3283 }, | 3314 }, |
3284 texImage2D: function() { | 3315 texImage2D: function() { |
3285 arguments[5] = unwrapIfNeeded(arguments[5]); | 3316 arguments[5] = unwrapIfNeeded(arguments[5]); |
3286 unsafeUnwrap(this).texImage2D.apply(unsafeUnwrap(this), arguments); | 3317 unsafeUnwrap(this).texImage2D.apply(unsafeUnwrap(this), arguments); |
3287 }, | 3318 }, |
3288 texSubImage2D: function() { | 3319 texSubImage2D: function() { |
3289 arguments[6] = unwrapIfNeeded(arguments[6]); | 3320 arguments[6] = unwrapIfNeeded(arguments[6]); |
3290 unsafeUnwrap(this).texSubImage2D.apply(unsafeUnwrap(this), arguments); | 3321 unsafeUnwrap(this).texSubImage2D.apply(unsafeUnwrap(this), arguments); |
3291 } | 3322 } |
3292 }); | 3323 }); |
| 3324 var OriginalWebGLRenderingContextBase = Object.getPrototypeOf(OriginalWebGLRen
deringContext.prototype); |
| 3325 if (OriginalWebGLRenderingContextBase !== Object.prototype) { |
| 3326 addForwardingProperties(OriginalWebGLRenderingContextBase, WebGLRenderingCon
text.prototype); |
| 3327 } |
3293 var instanceProperties = /WebKit/.test(navigator.userAgent) ? { | 3328 var instanceProperties = /WebKit/.test(navigator.userAgent) ? { |
3294 drawingBufferHeight: null, | 3329 drawingBufferHeight: null, |
3295 drawingBufferWidth: null | 3330 drawingBufferWidth: null |
3296 } : {}; | 3331 } : {}; |
3297 registerWrapper(OriginalWebGLRenderingContext, WebGLRenderingContext, instance
Properties); | 3332 registerWrapper(OriginalWebGLRenderingContext, WebGLRenderingContext, instance
Properties); |
3298 scope.wrappers.WebGLRenderingContext = WebGLRenderingContext; | 3333 scope.wrappers.WebGLRenderingContext = WebGLRenderingContext; |
3299 })(window.ShadowDOMPolyfill); | 3334 })(window.ShadowDOMPolyfill); |
3300 | 3335 |
3301 (function(scope) { | 3336 (function(scope) { |
3302 "use strict"; | 3337 "use strict"; |
| 3338 var Node = scope.wrappers.Node; |
3303 var GetElementsByInterface = scope.GetElementsByInterface; | 3339 var GetElementsByInterface = scope.GetElementsByInterface; |
3304 var NonElementParentNodeInterface = scope.NonElementParentNodeInterface; | 3340 var NonElementParentNodeInterface = scope.NonElementParentNodeInterface; |
3305 var ParentNodeInterface = scope.ParentNodeInterface; | 3341 var ParentNodeInterface = scope.ParentNodeInterface; |
3306 var SelectorsInterface = scope.SelectorsInterface; | 3342 var SelectorsInterface = scope.SelectorsInterface; |
3307 var mixin = scope.mixin; | 3343 var mixin = scope.mixin; |
3308 var registerObject = scope.registerObject; | 3344 var registerObject = scope.registerObject; |
3309 var DocumentFragment = registerObject(document.createDocumentFragment()); | 3345 var registerWrapper = scope.registerWrapper; |
| 3346 var OriginalDocumentFragment = window.DocumentFragment; |
| 3347 function DocumentFragment(node) { |
| 3348 Node.call(this, node); |
| 3349 } |
| 3350 DocumentFragment.prototype = Object.create(Node.prototype); |
3310 mixin(DocumentFragment.prototype, ParentNodeInterface); | 3351 mixin(DocumentFragment.prototype, ParentNodeInterface); |
3311 mixin(DocumentFragment.prototype, SelectorsInterface); | 3352 mixin(DocumentFragment.prototype, SelectorsInterface); |
3312 mixin(DocumentFragment.prototype, GetElementsByInterface); | 3353 mixin(DocumentFragment.prototype, GetElementsByInterface); |
3313 mixin(DocumentFragment.prototype, NonElementParentNodeInterface); | 3354 mixin(DocumentFragment.prototype, NonElementParentNodeInterface); |
| 3355 registerWrapper(OriginalDocumentFragment, DocumentFragment, document.createDoc
umentFragment()); |
| 3356 scope.wrappers.DocumentFragment = DocumentFragment; |
3314 var Comment = registerObject(document.createComment("")); | 3357 var Comment = registerObject(document.createComment("")); |
3315 scope.wrappers.Comment = Comment; | 3358 scope.wrappers.Comment = Comment; |
3316 scope.wrappers.DocumentFragment = DocumentFragment; | |
3317 })(window.ShadowDOMPolyfill); | 3359 })(window.ShadowDOMPolyfill); |
3318 | 3360 |
3319 (function(scope) { | 3361 (function(scope) { |
3320 "use strict"; | 3362 "use strict"; |
3321 var DocumentFragment = scope.wrappers.DocumentFragment; | 3363 var DocumentFragment = scope.wrappers.DocumentFragment; |
3322 var TreeScope = scope.TreeScope; | 3364 var TreeScope = scope.TreeScope; |
3323 var elementFromPoint = scope.elementFromPoint; | 3365 var elementFromPoint = scope.elementFromPoint; |
3324 var getInnerHTML = scope.getInnerHTML; | 3366 var getInnerHTML = scope.getInnerHTML; |
3325 var getTreeScope = scope.getTreeScope; | 3367 var getTreeScope = scope.getTreeScope; |
3326 var mixin = scope.mixin; | 3368 var mixin = scope.mixin; |
3327 var rewrap = scope.rewrap; | 3369 var rewrap = scope.rewrap; |
3328 var setInnerHTML = scope.setInnerHTML; | 3370 var setInnerHTML = scope.setInnerHTML; |
3329 var unsafeUnwrap = scope.unsafeUnwrap; | 3371 var unsafeUnwrap = scope.unsafeUnwrap; |
3330 var unwrap = scope.unwrap; | 3372 var unwrap = scope.unwrap; |
| 3373 var wrap = scope.wrap; |
3331 var shadowHostTable = new WeakMap(); | 3374 var shadowHostTable = new WeakMap(); |
3332 var nextOlderShadowTreeTable = new WeakMap(); | 3375 var nextOlderShadowTreeTable = new WeakMap(); |
3333 function ShadowRoot(hostWrapper) { | 3376 function ShadowRoot(hostWrapper) { |
3334 var node = unwrap(unsafeUnwrap(hostWrapper).ownerDocument.createDocumentFrag
ment()); | 3377 var node = unwrap(unsafeUnwrap(hostWrapper).ownerDocument.createDocumentFrag
ment()); |
3335 DocumentFragment.call(this, node); | 3378 DocumentFragment.call(this, node); |
3336 rewrap(node, this); | 3379 rewrap(node, this); |
3337 var oldShadowRoot = hostWrapper.shadowRoot; | 3380 var oldShadowRoot = hostWrapper.shadowRoot; |
3338 nextOlderShadowTreeTable.set(this, oldShadowRoot); | 3381 nextOlderShadowTreeTable.set(this, oldShadowRoot); |
3339 this.treeScope_ = new TreeScope(this, getTreeScope(oldShadowRoot || hostWrap
per)); | 3382 this.treeScope_ = new TreeScope(this, getTreeScope(oldShadowRoot || hostWrap
per)); |
3340 shadowHostTable.set(this, hostWrapper); | 3383 shadowHostTable.set(this, hostWrapper); |
(...skipping 12 matching lines...) Expand all Loading... |
3353 return nextOlderShadowTreeTable.get(this) || null; | 3396 return nextOlderShadowTreeTable.get(this) || null; |
3354 }, | 3397 }, |
3355 get host() { | 3398 get host() { |
3356 return shadowHostTable.get(this) || null; | 3399 return shadowHostTable.get(this) || null; |
3357 }, | 3400 }, |
3358 invalidateShadowRenderer: function() { | 3401 invalidateShadowRenderer: function() { |
3359 return shadowHostTable.get(this).invalidateShadowRenderer(); | 3402 return shadowHostTable.get(this).invalidateShadowRenderer(); |
3360 }, | 3403 }, |
3361 elementFromPoint: function(x, y) { | 3404 elementFromPoint: function(x, y) { |
3362 return elementFromPoint(this, this.ownerDocument, x, y); | 3405 return elementFromPoint(this, this.ownerDocument, x, y); |
| 3406 }, |
| 3407 getSelection: function() { |
| 3408 return document.getSelection(); |
| 3409 }, |
| 3410 get activeElement() { |
| 3411 var unwrappedActiveElement = unwrap(this).ownerDocument.activeElement; |
| 3412 if (!unwrappedActiveElement || !unwrappedActiveElement.nodeType) return nu
ll; |
| 3413 var activeElement = wrap(unwrappedActiveElement); |
| 3414 if (activeElement === this.host) { |
| 3415 return null; |
| 3416 } |
| 3417 while (!this.contains(activeElement) && !this.host.contains(activeElement)
) { |
| 3418 while (activeElement.parentNode) { |
| 3419 activeElement = activeElement.parentNode; |
| 3420 } |
| 3421 if (activeElement.host) { |
| 3422 activeElement = activeElement.host; |
| 3423 } else { |
| 3424 return null; |
| 3425 } |
| 3426 } |
| 3427 return activeElement; |
3363 } | 3428 } |
3364 }); | 3429 }); |
3365 scope.wrappers.ShadowRoot = ShadowRoot; | 3430 scope.wrappers.ShadowRoot = ShadowRoot; |
3366 })(window.ShadowDOMPolyfill); | 3431 })(window.ShadowDOMPolyfill); |
3367 | 3432 |
3368 (function(scope) { | 3433 (function(scope) { |
3369 "use strict"; | 3434 "use strict"; |
3370 var registerWrapper = scope.registerWrapper; | 3435 var registerWrapper = scope.registerWrapper; |
3371 var setWrapper = scope.setWrapper; | 3436 var setWrapper = scope.setWrapper; |
3372 var unsafeUnwrap = scope.unsafeUnwrap; | 3437 var unsafeUnwrap = scope.unsafeUnwrap; |
(...skipping 571 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3944 containsNode: function(node, allowPartial) { | 4009 containsNode: function(node, allowPartial) { |
3945 return unsafeUnwrap(this).containsNode(unwrapIfNeeded(node), allowPartial)
; | 4010 return unsafeUnwrap(this).containsNode(unwrapIfNeeded(node), allowPartial)
; |
3946 }, | 4011 }, |
3947 getRangeAt: function(index) { | 4012 getRangeAt: function(index) { |
3948 return wrap(unsafeUnwrap(this).getRangeAt(index)); | 4013 return wrap(unsafeUnwrap(this).getRangeAt(index)); |
3949 }, | 4014 }, |
3950 removeRange: function(range) { | 4015 removeRange: function(range) { |
3951 unsafeUnwrap(this).removeRange(unwrap(range)); | 4016 unsafeUnwrap(this).removeRange(unwrap(range)); |
3952 }, | 4017 }, |
3953 selectAllChildren: function(node) { | 4018 selectAllChildren: function(node) { |
3954 unsafeUnwrap(this).selectAllChildren(unwrapIfNeeded(node)); | 4019 unsafeUnwrap(this).selectAllChildren(node instanceof ShadowRoot ? unsafeUn
wrap(node.host) : unwrapIfNeeded(node)); |
3955 }, | 4020 }, |
3956 toString: function() { | 4021 toString: function() { |
3957 return unsafeUnwrap(this).toString(); | 4022 return unsafeUnwrap(this).toString(); |
3958 } | 4023 } |
3959 }; | 4024 }; |
3960 if (OriginalSelection.prototype.extend) { | 4025 if (OriginalSelection.prototype.extend) { |
3961 Selection.prototype.extend = function(node, offset) { | 4026 Selection.prototype.extend = function(node, offset) { |
3962 unsafeUnwrap(this).extend(unwrapIfNeeded(node), offset); | 4027 unsafeUnwrap(this).extend(unwrapIfNeeded(node), offset); |
3963 }; | 4028 }; |
3964 } | 4029 } |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4017 "use strict"; | 4082 "use strict"; |
4018 var GetElementsByInterface = scope.GetElementsByInterface; | 4083 var GetElementsByInterface = scope.GetElementsByInterface; |
4019 var Node = scope.wrappers.Node; | 4084 var Node = scope.wrappers.Node; |
4020 var ParentNodeInterface = scope.ParentNodeInterface; | 4085 var ParentNodeInterface = scope.ParentNodeInterface; |
4021 var NonElementParentNodeInterface = scope.NonElementParentNodeInterface; | 4086 var NonElementParentNodeInterface = scope.NonElementParentNodeInterface; |
4022 var Selection = scope.wrappers.Selection; | 4087 var Selection = scope.wrappers.Selection; |
4023 var SelectorsInterface = scope.SelectorsInterface; | 4088 var SelectorsInterface = scope.SelectorsInterface; |
4024 var ShadowRoot = scope.wrappers.ShadowRoot; | 4089 var ShadowRoot = scope.wrappers.ShadowRoot; |
4025 var TreeScope = scope.TreeScope; | 4090 var TreeScope = scope.TreeScope; |
4026 var cloneNode = scope.cloneNode; | 4091 var cloneNode = scope.cloneNode; |
| 4092 var defineGetter = scope.defineGetter; |
4027 var defineWrapGetter = scope.defineWrapGetter; | 4093 var defineWrapGetter = scope.defineWrapGetter; |
4028 var elementFromPoint = scope.elementFromPoint; | 4094 var elementFromPoint = scope.elementFromPoint; |
4029 var forwardMethodsToWrapper = scope.forwardMethodsToWrapper; | 4095 var forwardMethodsToWrapper = scope.forwardMethodsToWrapper; |
4030 var matchesNames = scope.matchesNames; | 4096 var matchesNames = scope.matchesNames; |
4031 var mixin = scope.mixin; | 4097 var mixin = scope.mixin; |
4032 var registerWrapper = scope.registerWrapper; | 4098 var registerWrapper = scope.registerWrapper; |
4033 var renderAllPending = scope.renderAllPending; | 4099 var renderAllPending = scope.renderAllPending; |
4034 var rewrap = scope.rewrap; | 4100 var rewrap = scope.rewrap; |
4035 var setWrapper = scope.setWrapper; | 4101 var setWrapper = scope.setWrapper; |
4036 var unsafeUnwrap = scope.unsafeUnwrap; | 4102 var unsafeUnwrap = scope.unsafeUnwrap; |
4037 var unwrap = scope.unwrap; | 4103 var unwrap = scope.unwrap; |
4038 var wrap = scope.wrap; | 4104 var wrap = scope.wrap; |
4039 var wrapEventTargetMethods = scope.wrapEventTargetMethods; | 4105 var wrapEventTargetMethods = scope.wrapEventTargetMethods; |
4040 var wrapNodeList = scope.wrapNodeList; | 4106 var wrapNodeList = scope.wrapNodeList; |
4041 var implementationTable = new WeakMap(); | 4107 var implementationTable = new WeakMap(); |
4042 function Document(node) { | 4108 function Document(node) { |
4043 Node.call(this, node); | 4109 Node.call(this, node); |
4044 this.treeScope_ = new TreeScope(this, null); | 4110 this.treeScope_ = new TreeScope(this, null); |
4045 } | 4111 } |
4046 Document.prototype = Object.create(Node.prototype); | 4112 Document.prototype = Object.create(Node.prototype); |
4047 defineWrapGetter(Document, "documentElement"); | 4113 defineWrapGetter(Document, "documentElement"); |
4048 defineWrapGetter(Document, "body"); | 4114 defineWrapGetter(Document, "body"); |
4049 defineWrapGetter(Document, "head"); | 4115 defineWrapGetter(Document, "head"); |
| 4116 defineGetter(Document, "activeElement", function() { |
| 4117 var unwrappedActiveElement = unwrap(this).activeElement; |
| 4118 if (!unwrappedActiveElement || !unwrappedActiveElement.nodeType) return null
; |
| 4119 var activeElement = wrap(unwrappedActiveElement); |
| 4120 while (!this.contains(activeElement)) { |
| 4121 while (activeElement.parentNode) { |
| 4122 activeElement = activeElement.parentNode; |
| 4123 } |
| 4124 if (activeElement.host) { |
| 4125 activeElement = activeElement.host; |
| 4126 } else { |
| 4127 return null; |
| 4128 } |
| 4129 } |
| 4130 return activeElement; |
| 4131 }); |
4050 function wrapMethod(name) { | 4132 function wrapMethod(name) { |
4051 var original = document[name]; | 4133 var original = document[name]; |
4052 Document.prototype[name] = function() { | 4134 Document.prototype[name] = function() { |
4053 return wrap(original.apply(unsafeUnwrap(this), arguments)); | 4135 return wrap(original.apply(unsafeUnwrap(this), arguments)); |
4054 }; | 4136 }; |
4055 } | 4137 } |
4056 [ "createComment", "createDocumentFragment", "createElement", "createElementNS
", "createEvent", "createEventNS", "createRange", "createTextNode" ].forEach(wra
pMethod); | 4138 [ "createComment", "createDocumentFragment", "createElement", "createElementNS
", "createEvent", "createEventNS", "createRange", "createTextNode" ].forEach(wra
pMethod); |
4057 var originalAdoptNode = document.adoptNode; | 4139 var originalAdoptNode = document.adoptNode; |
4058 function adoptNodeNoRemove(node, doc) { | 4140 function adoptNodeNoRemove(node, doc) { |
4059 originalAdoptNode.call(unsafeUnwrap(doc), unwrap(node)); | 4141 originalAdoptNode.call(unsafeUnwrap(doc), unwrap(node)); |
(...skipping 345 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4405 if (!nativeConstructor) return; | 4487 if (!nativeConstructor) return; |
4406 var element = document.createElement(tagName); | 4488 var element = document.createElement(tagName); |
4407 var wrapperConstructor = element.constructor; | 4489 var wrapperConstructor = element.constructor; |
4408 window[nativeConstructorName] = wrapperConstructor; | 4490 window[nativeConstructorName] = wrapperConstructor; |
4409 } | 4491 } |
4410 Object.keys(elements).forEach(overrideConstructor); | 4492 Object.keys(elements).forEach(overrideConstructor); |
4411 Object.getOwnPropertyNames(scope.wrappers).forEach(function(name) { | 4493 Object.getOwnPropertyNames(scope.wrappers).forEach(function(name) { |
4412 window[name] = scope.wrappers[name]; | 4494 window[name] = scope.wrappers[name]; |
4413 }); | 4495 }); |
4414 })(window.ShadowDOMPolyfill); | 4496 })(window.ShadowDOMPolyfill); |
OLD | NEW |