From 934d1acb5f89c1f160287ba3a47e79293d7519ae Mon Sep 17 00:00:00 2001 From: Steven Orvell Date: Fri, 24 Feb 2017 19:42:30 -0800 Subject: [PATCH 1/8] Fixes #4036 by explaining that users must call `flush` on return value from `Polymer.dom().observerNodes`. --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 4631e2fb..7cb418ca 100644 --- a/README.md +++ b/README.md @@ -161,6 +161,7 @@ Polymer 2.0 elements will stamp their templates into shadow roots created using * Selection of distributed content into named slots must use `slot="..."` rather than tag/class/attributes selected by `` * Re-distributing content by placing a `` into an element that itself has named slots requires placing a `name` attribute on the `` to indicate what content _it_ selects from its host children, and placing a `slot` attribute to indicate where its selected content should be slotted into its parent * In the V1 "Shady DOM" shim, initial distribution of children into `` is asynchronous (microtask) to creating the `shadowRoot`, meaning distribution occurs after observers/`ready` (in Polymer 1.0's shim, initial distribution occurred before `ready`). In order to force distribution synchronously, call `ShadyDOM.flush()`. +* Calling `Polymer.dom.flush` no longer results in callbacks registered with `Polymer.dom.observeNodes` being called. Instead, the object returned from `Polymer.dom.observeNodes` now contains a `flush` method which can be used to immediately call the registered callback if any changes are pending. #### Scoped styling From 8c8793cc86151d22d1ad6937e5cbba10dbf62be0 Mon Sep 17 00:00:00 2001 From: Steven Orvell Date: Fri, 24 Feb 2017 19:43:23 -0800 Subject: [PATCH 2/8] Fixes #4335. Exposes `Polymer.RenderStatus.flush`. --- src/utils/render-status.html | 12 +++++++++++- test/unit/render-status.html | 16 ++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/utils/render-status.html b/src/utils/render-status.html index 3cc26f58..2af8ccd8 100644 --- a/src/utils/render-status.html +++ b/src/utils/render-status.html @@ -48,6 +48,14 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN queue.length = 0; } + function flush() { + flushQueue(beforeRenderQueue); + flushQueue(afterRenderQueue); + if (beforeRenderQueue.length || afterRenderQueue.length) { + flush(); + } + } + Polymer.RenderStatus = { beforeNextRender: function(context, callback, args) { @@ -62,7 +70,9 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN schedule(); } afterRenderQueue.push([context, callback, args]); - } + }, + + flush: flush }; diff --git a/test/unit/render-status.html b/test/unit/render-status.html index b27d7c32..110af834 100644 --- a/test/unit/render-status.html +++ b/test/unit/render-status.html @@ -73,6 +73,22 @@ suite('render-status', function() { document.body.appendChild(el); }); + test('flush', function() { + let el = document.createElement('x-foo'); + let beforeCalled; + el.beforeNextRender = function() { + beforeCalled = true; + } + let afterCalled; + el.afterNextRender = function() { + afterCalled = true; + } + document.body.appendChild(el); + Polymer.RenderStatus.flush(); + assert.isTrue(beforeCalled); + assert.isTrue(afterCalled); + }); + }); From c677ad5b2956999bdb715193c80c63ac67f3b00d Mon Sep 17 00:00:00 2001 From: Steven Orvell Date: Fri, 24 Feb 2017 19:43:58 -0800 Subject: [PATCH 3/8] Fixes #3963. Adds test for `domHost`. --- test/unit/polymer-dom.html | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/test/unit/polymer-dom.html b/test/unit/polymer-dom.html index 0f96313a..470bc653 100644 --- a/test/unit/polymer-dom.html +++ b/test/unit/polymer-dom.html @@ -331,6 +331,12 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN assert.equal(el.isLocalDescendant(el.$.container), true); }); + test('domHost', function() { + var el = fixture('slot'); + assert.equal(el.domHost, document); + assert.equal(el.$.container.domHost, el); + }); + }) From 48298d6c1f638eeffbe0fe9c25a3429eee8f79aa Mon Sep 17 00:00:00 2001 From: Steven Orvell Date: Fri, 24 Feb 2017 19:45:45 -0800 Subject: [PATCH 4/8] Fixes #4336. Exposes `Polymer.FlattenedNodesObserver`. --- src/legacy/polymer.dom.html | 168 +--- src/utils/flattened-nodes-observer.html | 180 ++++ test/runner.html | 1 + test/unit/flattened-nodes-observer.html | 1047 +++++++++++++++++++++++ 4 files changed, 1231 insertions(+), 165 deletions(-) create mode 100644 src/utils/flattened-nodes-observer.html create mode 100644 test/unit/flattened-nodes-observer.html diff --git a/src/legacy/polymer.dom.html b/src/legacy/polymer.dom.html index 37dc17a3..beb8aaf0 100644 --- a/src/legacy/polymer.dom.html +++ b/src/legacy/polymer.dom.html @@ -8,30 +8,11 @@ Code distributed by Google as part of the polymer project is also subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt --> - - + diff --git a/test/runner.html b/test/runner.html index 3dd64a4c..41b417e3 100644 --- a/test/runner.html +++ b/test/runner.html @@ -60,6 +60,7 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN 'unit/array-selector.html', 'unit/polymer-dom.html', 'unit/polymer-dom-observeNodes.html', + 'unit/flattened-nodes-observer.html', 'unit/importHref.html', 'unit/dynamic-import.html', 'unit/gestures.html', diff --git a/test/unit/flattened-nodes-observer.html b/test/unit/flattened-nodes-observer.html new file mode 100644 index 00000000..5ce1db76 --- /dev/null +++ b/test/unit/flattened-nodes-observer.html @@ -0,0 +1,1047 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
A
B
+ +
static A
static B
+ +
+ + + + + From 29ea17754de33b79b33fbb0ac83cd8c79cf61222 Mon Sep 17 00:00:00 2001 From: Steven Orvell Date: Fri, 24 Feb 2017 20:04:11 -0800 Subject: [PATCH 5/8] Fixes #4198. Adds legacy settings for polyfill status. --- src/legacy/polymer.dom.html | 11 ++++++++--- test/unit/polymer-dom.html | 7 +++++++ 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/legacy/polymer.dom.html b/src/legacy/polymer.dom.html index beb8aaf0..b20bb8a6 100644 --- a/src/legacy/polymer.dom.html +++ b/src/legacy/polymer.dom.html @@ -192,9 +192,14 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN Polymer.dom.addDebouncer = Polymer.enqueueDebouncer; - Polymer.Settings = { - useShadow: true - }; + // expose BC settings. + let settings = Polymer.Settings || {}; + settings.useShadow = !(window.ShadyDOM); + settings.useNativeCSSProperties = + Boolean(!window.ShadyCSS || window.ShadyCSS.nativeCss); + settings.useNativeCustomElements = + !(window.customElements.polyfillWrapFlushCallback); + Polymer.Settings = settings; })(); diff --git a/test/unit/polymer-dom.html b/test/unit/polymer-dom.html index 470bc653..19523c8c 100644 --- a/test/unit/polymer-dom.html +++ b/test/unit/polymer-dom.html @@ -337,6 +337,13 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN assert.equal(el.$.container.domHost, el); }); + test('legacy settings agree with webcomponents settings', function() { + var flags = window.WebComponents.flags; + assert.equal(Polymer.Settings.useShadow, !flags.shadydom); + assert.equal(Polymer.Settings.useNativeCustomElements, !flags.ce); + assert.equal(Polymer.Settings.useNativeCSSProperties, !flags.shimcssproperties); + }); + }) From e07f9e1d61df0b22afd1873acb5449d7e79301b3 Mon Sep 17 00:00:00 2001 From: Steven Orvell Date: Fri, 24 Feb 2017 20:59:45 -0800 Subject: [PATCH 6/8] test fixes --- test/unit/dom-repeat-elements.html | 2 +- test/unit/dom-repeat.html | 61 ++++++++++++++---------------- 2 files changed, 30 insertions(+), 33 deletions(-) diff --git a/test/unit/dom-repeat-elements.html b/test/unit/dom-repeat-elements.html index eb5b84b7..bf5406d4 100644 --- a/test/unit/dom-repeat-elements.html +++ b/test/unit/dom-repeat-elements.html @@ -345,7 +345,7 @@ window.data = [