diff --git a/components/script/dom/htmlscriptelement.rs b/components/script/dom/htmlscriptelement.rs
index 3b81f9bb1e1..59540b298a7 100644
--- a/components/script/dom/htmlscriptelement.rs
+++ b/components/script/dom/htmlscriptelement.rs
@@ -34,6 +34,7 @@ use style::str::{StaticStringVec, HTML_SPACE_CHARACTERS};
use uuid::Uuid;
use crate::document_loader::LoadType;
+use crate::dom::activation::Activatable;
use crate::dom::attr::Attr;
use crate::dom::bindings::codegen::Bindings::DocumentBinding::DocumentMethods;
use crate::dom::bindings::codegen::Bindings::HTMLScriptElementBinding::HTMLScriptElementMethods;
@@ -66,6 +67,7 @@ use crate::script_module::{
use crate::script_runtime::CanGc;
use crate::task_source::{TaskSource, TaskSourceName};
use crate::unminify::{unminify_js, ScriptSource};
+use crate::HasParent;
impl ScriptSource for ScriptOrigin {
fn unminified_dir(&self) -> Option {
@@ -946,7 +948,13 @@ impl HTMLScriptElement {
let old_script = document.GetCurrentScript();
match script.type_ {
- ScriptType::Classic => document.set_current_script(Some(self)),
+ ScriptType::Classic => {
+ if self.upcast::().is_in_shadow_tree() {
+ document.set_current_script(None)
+ } else {
+ document.set_current_script(Some(self))
+ }
+ },
ScriptType::Module => document.set_current_script(None),
}
diff --git a/tests/wpt/meta/shadow-dom/Document-prototype-currentScript.html.ini b/tests/wpt/meta/shadow-dom/Document-prototype-currentScript.html.ini
deleted file mode 100644
index b831fefb3be..00000000000
--- a/tests/wpt/meta/shadow-dom/Document-prototype-currentScript.html.ini
+++ /dev/null
@@ -1,7 +0,0 @@
-[Document-prototype-currentScript.html]
- expected: ERROR
- [document.currentScript must not be set to a script element that loads an external script in an open shadow tree]
- expected: FAIL
-
- [document.currentScript must not be set to a script element that loads an external script in a closed shadow tree]
- expected: FAIL