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::();
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 }'