From ffd32a28510cbcd22aeef885a0ea5ee326ece28b Mon Sep 17 00:00:00 2001 From: Steve Orvell Date: Tue, 14 Apr 2015 15:00:23 -0700 Subject: [PATCH] Added `scopeSubtree(container, shouldObserve)` to support element use of normal dom api under shady dom in a specific subtree. --- src/lib/dom-api.html | 4 ++- src/standard/styling.html | 42 ++++++++++++++++++++++++-- src/standard/x-styling.html | 14 +++++---- test/unit/styling-remote-elements.html | 42 ++++++++++++++++++++++++++ test/unit/styling-remote.html | 2 ++ test/unit/styling-scoped-elements.html | 42 ++++++++++++++++++++++++++ test/unit/styling-scoped.html | 2 ++ test/unit/styling.js | 10 +++++- 8 files changed, 147 insertions(+), 11 deletions(-) diff --git a/src/lib/dom-api.html b/src/lib/dom-api.html index ffdc49e3..472545cb 100644 --- a/src/lib/dom-api.html +++ b/src/lib/dom-api.html @@ -245,7 +245,9 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN }, _addNodeToHost: function(node) { - var root = this._ownerShadyRootForNode(node); + var checkNode = node.nodeType === Node.DOCUMENT_FRAGMENT_NODE ? + node.firstChild : node; + var root = this._ownerShadyRootForNode(checkNode); if (root) { root.host._elementAdd(node); } diff --git a/src/standard/styling.html b/src/standard/styling.html index 7aa2bdeb..00eb56f6 100644 --- a/src/standard/styling.html +++ b/src/standard/styling.html @@ -20,6 +20,7 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN var prepTemplate = Polymer.Base._prepTemplate; var prepElement = Polymer.Base._prepElement; var baseStampTemplate = Polymer.Base._stampTemplate; + var nativeShadow = Polymer.Settings.useNativeShadow; Polymer.Base.addFeature({ @@ -29,11 +30,11 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN var port = Polymer.DomModule.import(this.is); if (this._encapsulateStyle === undefined) { this._encapsulateStyle = - Boolean(port && !Polymer.Settings.useNativeShadow); + Boolean(port && !nativeShadow); } // scope css // NOTE: dom scoped via annotations - if (Polymer.Settings.useNativeShadow || this._encapsulateStyle) { + if (nativeShadow || this._encapsulateStyle) { this._scopeCss(); } }, @@ -107,7 +108,7 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN _scopeStyles: function(styles) { for (var i=0, l=styles.length, s; (i + + + + + + + + \ No newline at end of file diff --git a/test/unit/styling-remote.html b/test/unit/styling-remote.html index 55eb6e8a..b831684e 100644 --- a/test/unit/styling-remote.html +++ b/test/unit/styling-remote.html @@ -36,6 +36,8 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN + + diff --git a/test/unit/styling-scoped-elements.html b/test/unit/styling-scoped-elements.html index 0447e1ec..12576690 100644 --- a/test/unit/styling-scoped-elements.html +++ b/test/unit/styling-scoped-elements.html @@ -148,4 +148,46 @@ is: 'x-button', extends: 'button' }); + + + + + + + + + \ No newline at end of file diff --git a/test/unit/styling-scoped.html b/test/unit/styling-scoped.html index 98cc2218..154b2c96 100644 --- a/test/unit/styling-scoped.html +++ b/test/unit/styling-scoped.html @@ -36,6 +36,8 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN + + diff --git a/test/unit/styling.js b/test/unit/styling.js index f7c37502..5302c471 100644 --- a/test/unit/styling.js +++ b/test/unit/styling.js @@ -117,6 +117,14 @@ suite('scoped-styling', function() { assertComputed(specialButton, '11px'); }); + test('element subtree added via dom api', function() { + var container = document.querySelector('x-dynamic-scope').$.container; + var a = container.querySelector('.added'); + assertComputed(a, '17px'); + var b = container.querySelector('.sub-added'); + assertComputed(b, '18px'); + }); + if (window.Polymer && !Polymer.Settings.useNativeShadow) { suite('scoped-styling-shady-only', function() { @@ -127,7 +135,7 @@ suite('scoped-styling', function() { test('styles shimmed in registration order', function() { var s$ = document.head.querySelectorAll('style[scope]'); - var expected = ['x-child2', 'x-styled', 'x-button']; + var expected = ['x-child2', 'x-styled', 'x-button', 'x-dynamic-scope']; var actual = []; for (var i=0; i