diff --git a/lib/mixins/element-mixin.js b/lib/mixins/element-mixin.js index 7de4ad63b5..e3b227fc00 100644 --- a/lib/mixins/element-mixin.js +++ b/lib/mixins/element-mixin.js @@ -9,7 +9,7 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN */ import '../utils/boot.js'; -import { rootPath, strictTemplatePolicy, allowTemplateFromDomModule, legacyOptimizations } from '../utils/settings.js'; +import { rootPath, strictTemplatePolicy, allowTemplateFromDomModule, legacyOptimizations, syncInitialRender } from '../utils/settings.js'; import { dedupingMixin } from '../utils/mixin.js'; import { stylesFromTemplate, stylesFromModuleImports } from '../utils/style-gather.js'; import { pathFromUrl, resolveCss, resolveUrl } from '../utils/resolve-url.js'; @@ -659,7 +659,7 @@ export const ElementMixin = dedupingMixin(base => { n.attachShadow({mode: 'open'}); } n.shadowRoot.appendChild(dom); - if (legacyOptimizations && window.ShadyDOM) { + if (syncInitialRender && window.ShadyDOM) { ShadyDOM.flushInitial(n.shadowRoot); } return n.shadowRoot; diff --git a/lib/utils/settings.js b/lib/utils/settings.js index cdbcb8e36c..edd2eb4d7d 100644 --- a/lib/utils/settings.js +++ b/lib/utils/settings.js @@ -140,4 +140,22 @@ export let legacyOptimizations = false; */ export const setLegacyOptimizations = function(useLegacyOptimizations) { legacyOptimizations = useLegacyOptimizations; +}; + +/** + * Setting to perform initial rendering synchronously when running under ShadyDOM. + * This matches the behavior of Polymer 1. + */ +export let syncInitialRender = false; + +/** + * Sets `syncInitialRender` globally for all elements to enable synchronous + * initial rendering. + * + * @param {boolean} useSyncInitialRender enable or disable synchronous initial + * rendering globally. + * @return {void} + */ +export const setSyncInitialRender = function(useSyncInitialRender) { + syncInitialRender = useSyncInitialRender; }; \ No newline at end of file diff --git a/test/runner.html b/test/runner.html index d8a54cae0f..2286a18745 100644 --- a/test/runner.html +++ b/test/runner.html @@ -37,7 +37,7 @@ 'unit/shady-events.html', 'unit/shady-content.html', 'unit/shady-dynamic.html', - 'unit/shady-dynamic.html?legacyOptimizations', + 'unit/shady-dynamic.html?syncInitialRender=true', 'unit/styling-scoped.html', 'unit/styling-cross-scope-var.html', 'unit/styling-cross-scope-apply.html', diff --git a/test/unit/shady-dynamic.html b/test/unit/shady-dynamic.html index e6cf699aef..0398818c40 100644 --- a/test/unit/shady-dynamic.html +++ b/test/unit/shady-dynamic.html @@ -20,9 +20,9 @@ }; @@ -1331,8 +1331,8 @@ document.body.removeChild(re); }); -test('initial distribution is synchronous when `legacyOptimizations` is true', function() { - if (!window.legacyOptimizations) { +test('initial distribution is synchronous when `syncInitialRender` is true', function() { + if (!window.syncInitialRender) { this.skip(); } const el = document.createElement('x-test');