From 6d221d9315d63541612b0031cf5219badb774590 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emilio=20Cobos=20=C3=81lvarez?= Date: Wed, 12 Sep 2018 21:13:03 +0000 Subject: [PATCH] Make ShadowRoot stylesheet list work only when the shadow root is connected. This avoids the issue of triggering stylesheet loads for disconnected stuff and such, and is more consistent with Chrome and WebKit. This is per the recent CSSWG resolution at https://github.com/w3c/csswg-drafts/issues/3096. Differential Revision: https://phabricator.services.mozilla.com/D5699 bugzilla-url: https://bugzilla.mozilla.org/show_bug.cgi?id=1490791 gecko-commit: 71f86120ca35d113a2462b2ffe68bc5accc813e4 gecko-integration-branch: autoland gecko-reviewers: smaug --- shadow-dom/ShadowRoot-interface.html | 4 +++- shadow-dom/untriaged/styles/test-003.html | 6 +----- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/shadow-dom/ShadowRoot-interface.html b/shadow-dom/ShadowRoot-interface.html index 6b49f93b3ec8ab..bda361e5987d1c 100644 --- a/shadow-dom/ShadowRoot-interface.html +++ b/shadow-dom/ShadowRoot-interface.html @@ -94,8 +94,10 @@ var host = document.createElement('div'); var shadowRoot = host.attachShadow({'mode': mode}); - assert_equals(shadowRoot.styleSheets.length, 0, 'shadowRoot.styleSheets must be empty when the shadow root does not contain any stylesheets'); shadowRoot.innerHTML = ''; + assert_equals(shadowRoot.styleSheets.length, 0, 'shadowRoot.styleSheets must be empty when the shadow root is not connected'); + + document.body.appendChild(host); assert_equals(shadowRoot.styleSheets.length, 2, 'shadowRoot.styleSheets must contain two items when the shadow root has two style elements'); var styles = shadowRoot.querySelectorAll('style'); assert_equals(shadowRoot.styleSheets[0], styles[0].sheet, 'shadowRoot.styleSheets[0] must be the first style element in the shadow root'); diff --git a/shadow-dom/untriaged/styles/test-003.html b/shadow-dom/untriaged/styles/test-003.html index d5b8f48ab319c2..ab30e0cc67ae43 100644 --- a/shadow-dom/untriaged/styles/test-003.html +++ b/shadow-dom/untriaged/styles/test-003.html @@ -46,9 +46,6 @@ assert_equals(s.styleSheets.length, 0, 'There should be no style sheets'); }), 'A_06_00_03_T02'); -//TODO Now this tests produces an error on Chromium because styleSheets.length -//returns 0 when the shadow root is orphaned. -//Tracking bug: http://crbug.com/392771 test(unit(function (ctx) { var d = newRenderedHTMLDocument(ctx); var host = d.createElement('div'); @@ -60,8 +57,7 @@ style.textContent = 'div {width: 50%;}'; s.appendChild(style); - // The following line fixes the issue on Chromium, http://crbug.com/392771 - // d.body.appendChild(host); + d.body.appendChild(host); assert_equals(s.styleSheets.length, 1, 'Style sheet is not accessible via styleSheets'); }), 'A_06_00_03_T03');