From 29d3cbf34a85d1117294e37a5fbcd5a7a061b1fb Mon Sep 17 00:00:00 2001 From: Josh Matthews Date: Mon, 4 Jul 2016 10:24:32 -0400 Subject: [PATCH 1/2] Avoid loading stylesheets in inactive documents. --- components/script/dom/htmllinkelement.rs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/components/script/dom/htmllinkelement.rs b/components/script/dom/htmllinkelement.rs index 0af076950b3..0b84bc38501 100644 --- a/components/script/dom/htmllinkelement.rs +++ b/components/script/dom/htmllinkelement.rs @@ -194,6 +194,10 @@ impl VirtualMethods for HTMLLinkElement { impl HTMLLinkElement { fn handle_stylesheet_url(&self, href: &str) { let document = document_from_node(self); + if document.browsing_context().is_none() { + return; + } + match document.base_url().join(href) { Ok(url) => { let element = self.upcast::(); From a8407174c523b39116e63cf9b86d0c658bb335ff Mon Sep 17 00:00:00 2001 From: Josh Matthews Date: Mon, 4 Jul 2016 14:04:27 -0400 Subject: [PATCH 2/2] Add a test for documents without browsing contexts loading stylesheets. --- tests/wpt/metadata/MANIFEST.json | 6 ++++ .../document-without-browsing-context.html | 35 +++++++++++++++++++ .../the-link-element/stylesheet.py | 9 +++++ 3 files changed, 50 insertions(+) create mode 100644 tests/wpt/web-platform-tests/html/semantics/document-metadata/the-link-element/document-without-browsing-context.html create mode 100644 tests/wpt/web-platform-tests/html/semantics/document-metadata/the-link-element/stylesheet.py diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json index 1a4452832b9..702135d3a47 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -36270,6 +36270,12 @@ "path": "html/browsers/browsing-the-web/navigating-across-documents/empty_fragment.html", "url": "/html/browsers/browsing-the-web/navigating-across-documents/empty_fragment.html" } + ], + "html/semantics/document-metadata/the-link-element/document-without-browsing-context.html": [ + { + "path": "html/semantics/document-metadata/the-link-element/document-without-browsing-context.html", + "url": "/html/semantics/document-metadata/the-link-element/document-without-browsing-context.html" + } ] } }, diff --git a/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-link-element/document-without-browsing-context.html b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-link-element/document-without-browsing-context.html new file mode 100644 index 00000000000..127b253f59a --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-link-element/document-without-browsing-context.html @@ -0,0 +1,35 @@ + + +Documents without browsing contexts should not load stylesheets + + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-link-element/stylesheet.py b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-link-element/stylesheet.py new file mode 100644 index 00000000000..a312e9e87ca --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-link-element/stylesheet.py @@ -0,0 +1,9 @@ +def main(request, response): + try: + count = int(request.server.stash.take(request.GET["id"])) + except: + count = 0 + if "count" in request.GET: + return str(count) + request.server.stash.put(request.GET["id"], str(count + 1)) + return 'body { color: red }'