OLD | NEW |
1 if (!HTMLElement.prototype.createShadowRoot | 1 if (!HTMLElement.prototype.createShadowRoot |
2 || window.__forceShadowDomPolyfill) { | 2 || window.__forceShadowDomPolyfill) { |
3 | 3 |
4 /* | 4 /* |
5 * Copyright 2013 The Polymer Authors. All rights reserved. | 5 * Copyright 2013 The Polymer Authors. All rights reserved. |
6 * Use of this source code is governed by a BSD-style | 6 * Use of this source code is governed by a BSD-style |
7 * license that can be found in the LICENSE file. | 7 * license that can be found in the LICENSE file. |
8 */ | 8 */ |
9 (function() { | 9 (function() { |
10 // TODO(jmesserly): fix dart:html to use unprefixed name | 10 // TODO(jmesserly): fix dart:html to use unprefixed name |
(...skipping 574 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
585 Array.prototype.splice.apply(previous, spliceArgs); | 585 Array.prototype.splice.apply(previous, spliceArgs); |
586 }); | 586 }); |
587 }; | 587 }; |
588 | 588 |
589 function ObservedSet(callback) { | 589 function ObservedSet(callback) { |
590 this.arr = []; | 590 this.arr = []; |
591 this.callback = callback; | 591 this.callback = callback; |
592 this.isObserved = true; | 592 this.isObserved = true; |
593 } | 593 } |
594 | 594 |
| 595 // TODO(rafaelw): Consider surfacing a way to avoid observing prototype |
| 596 // ancestors which are expected not to change (e.g. Element, Node...). |
595 var objProto = Object.getPrototypeOf({}); | 597 var objProto = Object.getPrototypeOf({}); |
596 var arrayProto = Object.getPrototypeOf([]); | 598 var arrayProto = Object.getPrototypeOf([]); |
597 ObservedSet.prototype = { | 599 ObservedSet.prototype = { |
598 reset: function() { | 600 reset: function() { |
599 this.isObserved = !this.isObserved; | 601 this.isObserved = !this.isObserved; |
600 }, | 602 }, |
601 | 603 |
602 observe: function(obj) { | 604 observe: function(obj) { |
603 if (!isObject(obj) || obj === objProto || obj === arrayProto) | 605 if (!isObject(obj) || obj === objProto || obj === arrayProto) |
604 return; | 606 return; |
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
727 this.value = undefined; | 729 this.value = undefined; |
728 this.oldValue = undefined; | 730 this.oldValue = undefined; |
729 this.oldValues = undefined; | 731 this.oldValues = undefined; |
730 this.changeFlags = undefined; | 732 this.changeFlags = undefined; |
731 this.started = false; | 733 this.started = false; |
732 } | 734 } |
733 | 735 |
734 CompoundPathObserver.prototype = createObject({ | 736 CompoundPathObserver.prototype = createObject({ |
735 __proto__: PathObserver.prototype, | 737 __proto__: PathObserver.prototype, |
736 | 738 |
| 739 // TODO(rafaelw): Consider special-casing when |object| is a PathObserver |
| 740 // and path 'value' to avoid explicit observation. |
737 addPath: function(object, path) { | 741 addPath: function(object, path) { |
738 if (this.started) | 742 if (this.started) |
739 throw Error('Cannot add more paths once started.'); | 743 throw Error('Cannot add more paths once started.'); |
740 | 744 |
741 var path = path instanceof Path ? path : getPath(path); | 745 var path = path instanceof Path ? path : getPath(path); |
742 var value = path ? path.getValueFrom(object) : undefined; | 746 var value = path ? path.getValueFrom(object) : undefined; |
743 | 747 |
744 this.observed.push(object, path); | 748 this.observed.push(object, path); |
745 this.values.push(value); | 749 this.values.push(value); |
746 }, | 750 }, |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
791 return; | 795 return; |
792 | 796 |
793 if (this.valueFn) { | 797 if (this.valueFn) { |
794 this.value = this.valueFn(this.values); | 798 this.value = this.valueFn(this.values); |
795 | 799 |
796 if (areSameValue(this.value, this.oldValue)) | 800 if (areSameValue(this.value, this.oldValue)) |
797 return false; | 801 return false; |
798 | 802 |
799 this.reportArgs = [this.value, this.oldValue]; | 803 this.reportArgs = [this.value, this.oldValue]; |
800 } else { | 804 } else { |
801 this.reportArgs = [this.values, this.oldValues, this.changeFlags]; | 805 this.reportArgs = [this.values, this.oldValues, this.changeFlags, |
| 806 this.observed]; |
802 } | 807 } |
803 | 808 |
804 return true; | 809 return true; |
805 }, | 810 }, |
806 | 811 |
807 sync: function(hard) { | 812 sync: function(hard) { |
808 if (hard) { | 813 if (hard) { |
809 this.getValues(); | 814 this.getValues(); |
810 if (this.valueFn) | 815 if (this.valueFn) |
811 this.value = this.valueFn(this.values); | 816 this.value = this.valueFn(this.values); |
(...skipping 1128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1940 function enclosedBy(a, b) { | 1945 function enclosedBy(a, b) { |
1941 if (a === b) | 1946 if (a === b) |
1942 return true; | 1947 return true; |
1943 if (a instanceof wrappers.ShadowRoot) { | 1948 if (a instanceof wrappers.ShadowRoot) { |
1944 var host = scope.getHostForShadowRoot(a); | 1949 var host = scope.getHostForShadowRoot(a); |
1945 return enclosedBy(rootOfNode(host), b); | 1950 return enclosedBy(rootOfNode(host), b); |
1946 } | 1951 } |
1947 return false; | 1952 return false; |
1948 } | 1953 } |
1949 | 1954 |
1950 function isMutationEvent(type) { | 1955 var mutationEventsAreSilenced = 0; |
1951 switch (type) { | 1956 |
1952 case 'DOMAttrModified': | 1957 function muteMutationEvents() { |
1953 case 'DOMAttributeNameChanged': | 1958 mutationEventsAreSilenced++; |
1954 case 'DOMCharacterDataModified': | |
1955 case 'DOMElementNameChanged': | |
1956 case 'DOMNodeInserted': | |
1957 case 'DOMNodeInsertedIntoDocument': | |
1958 case 'DOMNodeRemoved': | |
1959 case 'DOMNodeRemovedFromDocument': | |
1960 case 'DOMSubtreeModified': | |
1961 return true; | |
1962 } | |
1963 return false; | |
1964 } | 1959 } |
1965 | 1960 |
| 1961 function unmuteMutationEvents() { |
| 1962 mutationEventsAreSilenced--; |
| 1963 } |
| 1964 |
| 1965 var OriginalMutationEvent = window.MutationEvent; |
| 1966 |
1966 function dispatchOriginalEvent(originalEvent) { | 1967 function dispatchOriginalEvent(originalEvent) { |
1967 // Make sure this event is only dispatched once. | 1968 // Make sure this event is only dispatched once. |
1968 if (handledEventsTable.get(originalEvent)) | 1969 if (handledEventsTable.get(originalEvent)) |
1969 return; | 1970 return; |
1970 handledEventsTable.set(originalEvent, true); | 1971 handledEventsTable.set(originalEvent, true); |
1971 | 1972 |
1972 // Don't do rendering if this is a mutation event since rendering might | 1973 // Don't do rendering if this is a mutation event since rendering might |
1973 // mutate the DOM which would fire more events and we would most likely | 1974 // mutate the DOM which would fire more events and we would most likely |
1974 // just iloop. | 1975 // just iloop. |
1975 if (!isMutationEvent(originalEvent.type)) | 1976 if (originalEvent instanceof OriginalMutationEvent) { |
| 1977 if (mutationEventsAreSilenced) |
| 1978 return; |
| 1979 } else { |
1976 scope.renderAllPending(); | 1980 scope.renderAllPending(); |
| 1981 } |
1977 | 1982 |
1978 var target = wrap(originalEvent.target); | 1983 var target = wrap(originalEvent.target); |
1979 var event = wrap(originalEvent); | 1984 var event = wrap(originalEvent); |
1980 return dispatchEvent(event, target); | 1985 return dispatchEvent(event, target); |
1981 } | 1986 } |
1982 | 1987 |
1983 function dispatchEvent(event, originalWrapperTarget) { | 1988 function dispatchEvent(event, originalWrapperTarget) { |
1984 var eventPath = retarget(originalWrapperTarget); | 1989 var eventPath = retarget(originalWrapperTarget); |
1985 | 1990 |
1986 // For window load events the load event is dispatched at the window but | 1991 // For window load events the load event is dispatched at the window but |
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2095 else | 2100 else |
2096 listener.handler.handleEvent(event); | 2101 listener.handler.handleEvent(event); |
2097 | 2102 |
2098 if (stopImmediatePropagationTable.get(event)) | 2103 if (stopImmediatePropagationTable.get(event)) |
2099 return false; | 2104 return false; |
2100 | 2105 |
2101 } catch (ex) { | 2106 } catch (ex) { |
2102 if (window.onerror) | 2107 if (window.onerror) |
2103 window.onerror(ex.message); | 2108 window.onerror(ex.message); |
2104 else | 2109 else |
2105 console.error(ex); | 2110 console.error(ex, ex.stack); |
2106 } | 2111 } |
2107 } | 2112 } |
2108 | 2113 |
2109 if (anyRemoved) { | 2114 if (anyRemoved) { |
2110 var copy = listeners.slice(); | 2115 var copy = listeners.slice(); |
2111 listeners.length = 0; | 2116 listeners.length = 0; |
2112 for (var i = 0; i < copy.length; i++) { | 2117 for (var i = 0; i < copy.length; i++) { |
2113 if (!copy[i].removed) | 2118 if (!copy[i].removed) |
2114 listeners.push(copy[i]); | 2119 listeners.push(copy[i]); |
2115 } | 2120 } |
(...skipping 368 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2484 wrapped: wrapped | 2489 wrapped: wrapped |
2485 }; | 2490 }; |
2486 } | 2491 } |
2487 }; | 2492 }; |
2488 } | 2493 } |
2489 | 2494 |
2490 scope.adjustRelatedTarget = adjustRelatedTarget; | 2495 scope.adjustRelatedTarget = adjustRelatedTarget; |
2491 scope.elementFromPoint = elementFromPoint; | 2496 scope.elementFromPoint = elementFromPoint; |
2492 scope.getEventHandlerGetter = getEventHandlerGetter; | 2497 scope.getEventHandlerGetter = getEventHandlerGetter; |
2493 scope.getEventHandlerSetter = getEventHandlerSetter; | 2498 scope.getEventHandlerSetter = getEventHandlerSetter; |
| 2499 scope.muteMutationEvents = muteMutationEvents; |
| 2500 scope.unmuteMutationEvents = unmuteMutationEvents; |
2494 scope.wrapEventTargetMethods = wrapEventTargetMethods; | 2501 scope.wrapEventTargetMethods = wrapEventTargetMethods; |
2495 scope.wrappers.CustomEvent = CustomEvent; | 2502 scope.wrappers.CustomEvent = CustomEvent; |
2496 scope.wrappers.Event = Event; | 2503 scope.wrappers.Event = Event; |
2497 scope.wrappers.EventTarget = EventTarget; | 2504 scope.wrappers.EventTarget = EventTarget; |
2498 scope.wrappers.FocusEvent = FocusEvent; | 2505 scope.wrappers.FocusEvent = FocusEvent; |
2499 scope.wrappers.MouseEvent = MouseEvent; | 2506 scope.wrappers.MouseEvent = MouseEvent; |
2500 scope.wrappers.MutationEvent = MutationEvent; | 2507 scope.wrappers.MutationEvent = MutationEvent; |
2501 scope.wrappers.UIEvent = UIEvent; | 2508 scope.wrappers.UIEvent = UIEvent; |
2502 | 2509 |
2503 })(this.ShadowDOMPolyfill); | 2510 })(this.ShadowDOMPolyfill); |
(...skipping 1091 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3595 // Copyright 2013 The Polymer Authors. All rights reserved. | 3602 // Copyright 2013 The Polymer Authors. All rights reserved. |
3596 // Use of this source code is goverened by a BSD-style | 3603 // Use of this source code is goverened by a BSD-style |
3597 // license that can be found in the LICENSE file. | 3604 // license that can be found in the LICENSE file. |
3598 | 3605 |
3599 (function(scope) { | 3606 (function(scope) { |
3600 'use strict'; | 3607 'use strict'; |
3601 | 3608 |
3602 var HTMLElement = scope.wrappers.HTMLElement; | 3609 var HTMLElement = scope.wrappers.HTMLElement; |
3603 var getInnerHTML = scope.getInnerHTML; | 3610 var getInnerHTML = scope.getInnerHTML; |
3604 var mixin = scope.mixin; | 3611 var mixin = scope.mixin; |
| 3612 var muteMutationEvents = scope.muteMutationEvents; |
3605 var registerWrapper = scope.registerWrapper; | 3613 var registerWrapper = scope.registerWrapper; |
3606 var setInnerHTML = scope.setInnerHTML; | 3614 var setInnerHTML = scope.setInnerHTML; |
| 3615 var unmuteMutationEvents = scope.unmuteMutationEvents; |
3607 var unwrap = scope.unwrap; | 3616 var unwrap = scope.unwrap; |
3608 var wrap = scope.wrap; | 3617 var wrap = scope.wrap; |
3609 | 3618 |
3610 var contentTable = new WeakMap(); | 3619 var contentTable = new WeakMap(); |
3611 var templateContentsOwnerTable = new WeakMap(); | 3620 var templateContentsOwnerTable = new WeakMap(); |
3612 | 3621 |
3613 // http://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/templates/index.html#
dfn-template-contents-owner | 3622 // http://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/templates/index.html#
dfn-template-contents-owner |
3614 function getTemplateContentsOwner(doc) { | 3623 function getTemplateContentsOwner(doc) { |
3615 if (!doc.defaultView) | 3624 if (!doc.defaultView) |
3616 return doc; | 3625 return doc; |
3617 var d = templateContentsOwnerTable.get(doc); | 3626 var d = templateContentsOwnerTable.get(doc); |
3618 if (!d) { | 3627 if (!d) { |
3619 // TODO(arv): This should either be a Document or HTMLDocument depending | 3628 // TODO(arv): This should either be a Document or HTMLDocument depending |
3620 // on doc. | 3629 // on doc. |
3621 d = doc.implementation.createHTMLDocument(''); | 3630 d = doc.implementation.createHTMLDocument(''); |
3622 while (d.lastChild) { | 3631 while (d.lastChild) { |
3623 d.removeChild(d.lastChild); | 3632 d.removeChild(d.lastChild); |
3624 } | 3633 } |
3625 templateContentsOwnerTable.set(doc, d); | 3634 templateContentsOwnerTable.set(doc, d); |
3626 } | 3635 } |
3627 return d; | 3636 return d; |
3628 } | 3637 } |
3629 | 3638 |
3630 function extractContent(templateElement) { | 3639 function extractContent(templateElement) { |
3631 // templateElement is not a wrapper here. | 3640 // templateElement is not a wrapper here. |
3632 var doc = getTemplateContentsOwner(templateElement.ownerDocument); | 3641 var doc = getTemplateContentsOwner(templateElement.ownerDocument); |
3633 var df = unwrap(doc.createDocumentFragment()); | 3642 var df = unwrap(doc.createDocumentFragment()); |
3634 var child; | 3643 var child; |
| 3644 muteMutationEvents(); |
3635 while (child = templateElement.firstChild) { | 3645 while (child = templateElement.firstChild) { |
3636 df.appendChild(child); | 3646 df.appendChild(child); |
3637 } | 3647 } |
| 3648 unmuteMutationEvents(); |
3638 return df; | 3649 return df; |
3639 } | 3650 } |
3640 | 3651 |
3641 var OriginalHTMLTemplateElement = window.HTMLTemplateElement; | 3652 var OriginalHTMLTemplateElement = window.HTMLTemplateElement; |
3642 | 3653 |
3643 function HTMLTemplateElement(node) { | 3654 function HTMLTemplateElement(node) { |
3644 HTMLElement.call(this, node); | 3655 HTMLElement.call(this, node); |
3645 if (!OriginalHTMLTemplateElement) { | 3656 if (!OriginalHTMLTemplateElement) { |
3646 var content = extractContent(node); | 3657 var content = extractContent(node); |
3647 contentTable.set(this, wrap(content)); | 3658 contentTable.set(this, wrap(content)); |
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3801 'use strict'; | 3812 'use strict'; |
3802 | 3813 |
3803 var Element = scope.wrappers.Element; | 3814 var Element = scope.wrappers.Element; |
3804 var HTMLContentElement = scope.wrappers.HTMLContentElement; | 3815 var HTMLContentElement = scope.wrappers.HTMLContentElement; |
3805 var HTMLShadowElement = scope.wrappers.HTMLShadowElement; | 3816 var HTMLShadowElement = scope.wrappers.HTMLShadowElement; |
3806 var Node = scope.wrappers.Node; | 3817 var Node = scope.wrappers.Node; |
3807 var ShadowRoot = scope.wrappers.ShadowRoot; | 3818 var ShadowRoot = scope.wrappers.ShadowRoot; |
3808 var assert = scope.assert; | 3819 var assert = scope.assert; |
3809 var getHostForShadowRoot = scope.getHostForShadowRoot; | 3820 var getHostForShadowRoot = scope.getHostForShadowRoot; |
3810 var mixin = scope.mixin; | 3821 var mixin = scope.mixin; |
| 3822 var muteMutationEvents = scope.muteMutationEvents; |
3811 var oneOf = scope.oneOf; | 3823 var oneOf = scope.oneOf; |
| 3824 var unmuteMutationEvents = scope.unmuteMutationEvents; |
3812 var unwrap = scope.unwrap; | 3825 var unwrap = scope.unwrap; |
3813 var wrap = scope.wrap; | 3826 var wrap = scope.wrap; |
3814 | 3827 |
3815 /** | 3828 /** |
3816 * Updates the fields of a wrapper to a snapshot of the logical DOM as needed. | 3829 * Updates the fields of a wrapper to a snapshot of the logical DOM as needed. |
3817 * Up means parentNode | 3830 * Up means parentNode |
3818 * Sideways means previous and next sibling. | 3831 * Sideways means previous and next sibling. |
3819 * @param {!Node} wrapper | 3832 * @param {!Node} wrapper |
3820 */ | 3833 */ |
3821 function updateWrapperUpAndSideways(wrapper) { | 3834 function updateWrapperUpAndSideways(wrapper) { |
(...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4112 // has been added. | 4125 // has been added. |
4113 added.set(newChildWrapper, true); | 4126 added.set(newChildWrapper, true); |
4114 | 4127 |
4115 newChildRenderNode.sync(added); | 4128 newChildRenderNode.sync(added); |
4116 } | 4129 } |
4117 | 4130 |
4118 lastIndex += addedCount; | 4131 lastIndex += addedCount; |
4119 } | 4132 } |
4120 | 4133 |
4121 for (var i = lastIndex; i < newChildren.length; i++) { | 4134 for (var i = lastIndex; i < newChildren.length; i++) { |
4122 newChildren[i++].sync(added); | 4135 newChildren[i].sync(added); |
4123 } | 4136 } |
4124 } | 4137 } |
4125 }; | 4138 }; |
4126 | 4139 |
4127 function ShadowRenderer(host) { | 4140 function ShadowRenderer(host) { |
4128 this.host = host; | 4141 this.host = host; |
4129 this.dirty = false; | 4142 this.dirty = false; |
4130 this.invalidateAttributes(); | 4143 this.invalidateAttributes(); |
4131 this.associateNode(host); | 4144 this.associateNode(host); |
4132 } | 4145 } |
(...skipping 12 matching lines...) Expand all Loading... |
4145 var shadowRoot = host.shadowRoot; | 4158 var shadowRoot = host.shadowRoot; |
4146 | 4159 |
4147 this.associateNode(host); | 4160 this.associateNode(host); |
4148 var topMostRenderer = !renderNode; | 4161 var topMostRenderer = !renderNode; |
4149 var renderNode = opt_renderNode || new RenderNode(host); | 4162 var renderNode = opt_renderNode || new RenderNode(host); |
4150 | 4163 |
4151 for (var node = shadowRoot.firstChild; node; node = node.nextSibling) { | 4164 for (var node = shadowRoot.firstChild; node; node = node.nextSibling) { |
4152 this.renderNode(shadowRoot, renderNode, node, false); | 4165 this.renderNode(shadowRoot, renderNode, node, false); |
4153 } | 4166 } |
4154 | 4167 |
4155 if (topMostRenderer) | 4168 if (topMostRenderer) { |
| 4169 //muteMutationEvents(); |
4156 renderNode.sync(); | 4170 renderNode.sync(); |
| 4171 //unmuteMutationEvents(); |
| 4172 } |
4157 | 4173 |
4158 this.dirty = false; | 4174 this.dirty = false; |
4159 }, | 4175 }, |
4160 | 4176 |
4161 invalidate: function() { | 4177 invalidate: function() { |
4162 if (!this.dirty) { | 4178 if (!this.dirty) { |
4163 this.dirty = true; | 4179 this.dirty = true; |
4164 pendingDirtyRenderers.push(this); | 4180 pendingDirtyRenderers.push(this); |
4165 if (renderTimer) | 4181 if (renderTimer) |
4166 return; | 4182 return; |
(...skipping 989 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5156 var unwrapIfNeeded = ShadowDOMPolyfill.unwrapIfNeeded; | 5172 var unwrapIfNeeded = ShadowDOMPolyfill.unwrapIfNeeded; |
5157 function getTag(obj) { | 5173 function getTag(obj) { |
5158 // TODO(jmesserly): do we still need these? | 5174 // TODO(jmesserly): do we still need these? |
5159 if (obj instanceof NodeList) return 'NodeList'; | 5175 if (obj instanceof NodeList) return 'NodeList'; |
5160 if (obj instanceof ShadowRoot) return 'ShadowRoot'; | 5176 if (obj instanceof ShadowRoot) return 'ShadowRoot'; |
5161 if (window.MutationRecord && (obj instanceof MutationRecord)) | 5177 if (window.MutationRecord && (obj instanceof MutationRecord)) |
5162 return 'MutationRecord'; | 5178 return 'MutationRecord'; |
5163 if (window.MutationObserver && (obj instanceof MutationObserver)) | 5179 if (window.MutationObserver && (obj instanceof MutationObserver)) |
5164 return 'MutationObserver'; | 5180 return 'MutationObserver'; |
5165 | 5181 |
| 5182 // TODO(jmesserly): this prevents incorrect interaction between ShadowDOM |
| 5183 // and dart:html's <template> polyfill. Essentially, ShadowDOM is |
| 5184 // polyfilling native template, but our Dart polyfill fails to detect this |
| 5185 // because the unwrapped node is an HTMLUnknownElement, leading it to |
| 5186 // think the node has no content. |
| 5187 if (obj instanceof HTMLTemplateElement) return 'HTMLTemplateElement'; |
| 5188 |
5166 var unwrapped = unwrapIfNeeded(obj); | 5189 var unwrapped = unwrapIfNeeded(obj); |
5167 if (obj !== unwrapped) { | 5190 if (obj !== unwrapped) { |
5168 // Fix up class names for Firefox. | 5191 // Fix up class names for Firefox. |
5169 // For some of them (like HTMLFormElement and HTMLInputElement), | 5192 // For some of them (like HTMLFormElement and HTMLInputElement), |
5170 // the "constructor" property of the unwrapped nodes points at the | 5193 // the "constructor" property of the unwrapped nodes points at the |
5171 // same constructor as the wrapper. | 5194 // same constructor as the wrapper. |
5172 var ctor = obj.constructor | 5195 var ctor = obj.constructor |
5173 if (ctor === unwrapped.constructor) { | 5196 if (ctor === unwrapped.constructor) { |
5174 var name = ctor._ShadowDOMPolyfill$cacheTag_; | 5197 var name = ctor._ShadowDOMPolyfill$cacheTag_; |
5175 if (!name) { | 5198 if (!name) { |
(...skipping 531 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5707 css.push(cssRules[i].cssText); | 5730 css.push(cssRules[i].cssText); |
5708 } | 5731 } |
5709 return css.join('\n\n'); | 5732 return css.join('\n\n'); |
5710 } | 5733 } |
5711 | 5734 |
5712 // exports | 5735 // exports |
5713 scope.ShadowCSS.shimShadowDOMStyling2 = shimShadowDOMStyling2; | 5736 scope.ShadowCSS.shimShadowDOMStyling2 = shimShadowDOMStyling2; |
5714 })(window.Platform); | 5737 })(window.Platform); |
5715 | 5738 |
5716 } | 5739 } |
OLD | NEW |