diff --git a/lib/mixins/element-mixin.js b/lib/mixins/element-mixin.js index b31e25f8b4..9dbc0fd965 100644 --- a/lib/mixins/element-mixin.js +++ b/lib/mixins/element-mixin.js @@ -11,7 +11,7 @@ */ import '../utils/boot.js'; -import { rootPath, strictTemplatePolicy, allowTemplateFromDomModule, legacyOptimizations, legacyWarnings, syncInitialRender, supportsAdoptingStyleSheets} from '../utils/settings.js'; +import { rootPath, strictTemplatePolicy, allowTemplateFromDomModule, legacyOptimizations, legacyWarnings, syncInitialRender, supportsAdoptingStyleSheets, useAdoptedStyleSheetsWithBuiltCSS } 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'; @@ -304,7 +304,8 @@ export const ElementMixin = dedupingMixin(base => { // potentially not shareable and sharing the ones that could be shared // would require some coordination. To keep it simple, all the includes // and styles are collapsed into a single shareable stylesheet. - if (builtCSS && supportsAdoptingStyleSheets) { + if (useAdoptedStyleSheetsWithBuiltCSS && builtCSS && + supportsAdoptingStyleSheets) { // Remove styles in template and make a shareable stylesheet const styles = template.content.querySelectorAll('style'); if (styles) { diff --git a/lib/utils/settings.js b/lib/utils/settings.js index f67f55fe97..ee70d3c14b 100644 --- a/lib/utils/settings.js +++ b/lib/utils/settings.js @@ -338,4 +338,22 @@ export let legacyNoObservedAttributes = */ export const setLegacyNoObservedAttributes = function(noObservedAttributes) { legacyNoObservedAttributes = noObservedAttributes; -}; \ No newline at end of file +}; + +/** + * Setting to enable use of `adoptedStyleSheets` for sharing style sheets + * between component instances' shadow roots, if the app uses built Shady CSS + * styles. + */ +export let useAdoptedStyleSheetsWithBuiltCSS = + window.Polymer && window.Polymer.useAdoptedStyleSheetsWithBuiltCSS || false; + +/** + * Sets `useAdoptedStyleSheetsWithBuiltCSS` globally. + * + * @param {boolean} value enable or disable `useAdoptedStyleSheetsWithBuiltCSS` + * @return {void} + */ +export const setUseAdoptedStyleSheetsWithBuiltCSS = function(value) { + useAdoptedStyleSheetsWithBuiltCSS = value; +}; diff --git a/test/unit/styling-build-adopted-stylesheets.html b/test/unit/styling-build-adopted-stylesheets.html index b917cfe505..ae11d5c336 100644 --- a/test/unit/styling-build-adopted-stylesheets.html +++ b/test/unit/styling-build-adopted-stylesheets.html @@ -18,7 +18,11 @@