aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--components/script/dom/htmlscriptelement.rs11
-rw-r--r--components/script/dom/webidls/HTMLScriptElement.webidl2
-rw-r--r--tests/wpt/metadata/MANIFEST.json4
-rw-r--r--tests/wpt/metadata/html/browsers/windows/noreferrer.html.ini2
-rw-r--r--tests/wpt/metadata/html/dom/interfaces.html.ini6
-rw-r--r--tests/wpt/metadata/html/semantics/scripting-1/the-script-element/async_001.htm.ini5
-rw-r--r--tests/wpt/metadata/html/semantics/scripting-1/the-script-element/async_002.htm.ini5
-rw-r--r--tests/wpt/metadata/html/semantics/scripting-1/the-script-element/async_007.htm.ini5
-rw-r--r--tests/wpt/metadata/html/semantics/scripting-1/the-script-element/async_010.htm.ini5
-rw-r--r--tests/wpt/metadata/html/semantics/scripting-1/the-script-element/async_011.htm.ini5
-rw-r--r--tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/091.html.ini5
-rw-r--r--tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/096.html.ini5
-rw-r--r--tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/098.html.ini5
-rw-r--r--tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/105.html.ini5
-rw-r--r--tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/122.html.ini5
-rw-r--r--tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/123.html.ini5
-rw-r--r--tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/126.html.ini5
-rw-r--r--tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/128.html.ini5
-rw-r--r--tests/wpt/web-platform-tests/old-tests/submission/Opera/script_scheduling/096.html24
-rw-r--r--tests/wpt/web-platform-tests/old-tests/submission/Opera/script_scheduling/098.html25
-rw-r--r--tests/wpt/web-platform-tests/old-tests/submission/Opera/script_scheduling/128.html2
21 files changed, 31 insertions, 110 deletions
diff --git a/components/script/dom/htmlscriptelement.rs b/components/script/dom/htmlscriptelement.rs
index 1a946871f32..75d2a0070f2 100644
--- a/components/script/dom/htmlscriptelement.rs
+++ b/components/script/dom/htmlscriptelement.rs
@@ -680,6 +680,17 @@ impl HTMLScriptElementMethods for HTMLScriptElement {
// https://html.spec.whatwg.org/multipage/#dom-script-charset
make_setter!(SetCharset, "charset");
+ // https://html.spec.whatwg.org/multipage/#dom-script-async
+ fn Async(&self) -> bool {
+ self.non_blocking.get() || self.upcast::<Element>().has_attribute(&local_name!("async"))
+ }
+
+ // https://html.spec.whatwg.org/multipage/#dom-script-async
+ fn SetAsync(&self, value: bool) {
+ self.non_blocking.set(false);
+ self.upcast::<Element>().set_bool_attribute(&local_name!("async"), value);
+ }
+
// https://html.spec.whatwg.org/multipage/#dom-script-defer
make_bool_getter!(Defer, "defer");
// https://html.spec.whatwg.org/multipage/#dom-script-defer
diff --git a/components/script/dom/webidls/HTMLScriptElement.webidl b/components/script/dom/webidls/HTMLScriptElement.webidl
index 0dcc9ddf69a..8a1dbc3fc35 100644
--- a/components/script/dom/webidls/HTMLScriptElement.webidl
+++ b/components/script/dom/webidls/HTMLScriptElement.webidl
@@ -7,7 +7,7 @@ interface HTMLScriptElement : HTMLElement {
attribute DOMString src;
attribute DOMString type;
attribute DOMString charset;
- // attribute boolean async;
+ attribute boolean async;
attribute boolean defer;
attribute DOMString? crossOrigin;
[Pure]
diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json
index 2653ba15068..3035761923a 100644
--- a/tests/wpt/metadata/MANIFEST.json
+++ b/tests/wpt/metadata/MANIFEST.json
@@ -45843,7 +45843,9 @@
]
},
"local_changes": {
- "deleted": [],
+ "deleted": [
+ "old-tests/submission/Opera/script_scheduling/098.html"
+ ],
"deleted_reftests": {},
"items": {
"testharness": {
diff --git a/tests/wpt/metadata/html/browsers/windows/noreferrer.html.ini b/tests/wpt/metadata/html/browsers/windows/noreferrer.html.ini
index cebf2866f0b..b8029523a08 100644
--- a/tests/wpt/metadata/html/browsers/windows/noreferrer.html.ini
+++ b/tests/wpt/metadata/html/browsers/windows/noreferrer.html.ini
@@ -1,5 +1,3 @@
[noreferrer.html]
type: testharness
disabled: https://github.com/servo/servo/issues/13400
-
-
diff --git a/tests/wpt/metadata/html/dom/interfaces.html.ini b/tests/wpt/metadata/html/dom/interfaces.html.ini
index 0ec4b89fbcf..61cfa61cef7 100644
--- a/tests/wpt/metadata/html/dom/interfaces.html.ini
+++ b/tests/wpt/metadata/html/dom/interfaces.html.ini
@@ -3849,12 +3849,6 @@
[HTMLDialogElement interface: operation showModal([object Object\],[object Object\])]
expected: FAIL
- [HTMLScriptElement interface: attribute async]
- expected: FAIL
-
- [HTMLScriptElement interface: document.createElement("script") must inherit property "async" with the proper type (3)]
- expected: FAIL
-
[HTMLCanvasElement interface: operation probablySupportsContext(DOMString,any)]
expected: FAIL
diff --git a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/async_001.htm.ini b/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/async_001.htm.ini
deleted file mode 100644
index 77fa829310b..00000000000
--- a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/async_001.htm.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[async_001.htm]
- type: testharness
- [Async property on a dynamically-created script is true by default]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/async_002.htm.ini b/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/async_002.htm.ini
deleted file mode 100644
index be9ad86414d..00000000000
--- a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/async_002.htm.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[async_002.htm]
- type: testharness
- [Test 'async' attribute are reflected in the async property with setAttribute]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/async_007.htm.ini b/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/async_007.htm.ini
deleted file mode 100644
index 4c172e8c287..00000000000
--- a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/async_007.htm.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[async_007.htm]
- type: testharness
- [Ordered async script execution when script.async == false]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/async_010.htm.ini b/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/async_010.htm.ini
deleted file mode 100644
index 5a6b14ef51c..00000000000
--- a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/async_010.htm.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[async_010.htm]
- type: testharness
- [Removing an async script before execution]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/async_011.htm.ini b/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/async_011.htm.ini
deleted file mode 100644
index 287e8853b21..00000000000
--- a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/async_011.htm.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[async_011.htm]
- type: testharness
- [An empty parser-inserted script element should return async=true]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/091.html.ini b/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/091.html.ini
deleted file mode 100644
index 0005354951a..00000000000
--- a/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/091.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[091.html]
- type: testharness
- [ scheduler: force-async off on non-parser-inserted script]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/096.html.ini b/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/096.html.ini
deleted file mode 100644
index 7647c26e9f9..00000000000
--- a/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/096.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[096.html]
- type: testharness
- [ scheduler: defer script added from document.write relative to DOMContentLoaded]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/098.html.ini b/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/098.html.ini
deleted file mode 100644
index 5b0aa1e5e0c..00000000000
--- a/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/098.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[098.html]
- type: testharness
- [ scheduler: defer script added from document.write]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/105.html.ini b/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/105.html.ini
deleted file mode 100644
index 253a757e9a1..00000000000
--- a/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/105.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[105.html]
- type: testharness
- [ scheduler: adding async attribute at runtime]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/122.html.ini b/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/122.html.ini
deleted file mode 100644
index 6432a9d5140..00000000000
--- a/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/122.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[122.html]
- type: testharness
- [Reinserted script async IDL attribute]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/123.html.ini b/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/123.html.ini
deleted file mode 100644
index cb08c989a08..00000000000
--- a/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/123.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[123.html]
- type: testharness
- [scheduler: altering the type attribute and adding/removing external script with async=false ]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/126.html.ini b/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/126.html.ini
deleted file mode 100644
index f4bb635c593..00000000000
--- a/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/126.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[126.html]
- type: testharness
- [scheduler: altering the type attribute and changing script data external script async=false ]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/128.html.ini b/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/128.html.ini
deleted file mode 100644
index c89e48eb931..00000000000
--- a/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/128.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[128.html]
- type: testharness
- [scheduler: appending script element to script ]
- expected: FAIL
-
diff --git a/tests/wpt/web-platform-tests/old-tests/submission/Opera/script_scheduling/096.html b/tests/wpt/web-platform-tests/old-tests/submission/Opera/script_scheduling/096.html
index d5e1e8b460f..32d9baf0c96 100644
--- a/tests/wpt/web-platform-tests/old-tests/submission/Opera/script_scheduling/096.html
+++ b/tests/wpt/web-platform-tests/old-tests/submission/Opera/script_scheduling/096.html
@@ -9,16 +9,22 @@
<div id="log">FAILED (This TC requires JavaScript enabled)</div>
- <script>
- log("inline script #1");
- document.write("<script defer src='scripts/include-1.js'><\/script>")
- </script>
+ <script>
+ log("inline script #1");
+ document.write("<script defer src='scripts/include-1.js'><\/script>")
+ </script>
<script>
- log("inline script #2");
- var t = async_test();
+ log("inline script #2");
+ var t = async_test();
- addEventListener("DOMContentLoaded", t.step_func(function() {assert_array_equals(eventOrder, ["inline script #1", "inline script #2"])}), false);
+ addEventListener("DOMContentLoaded", t.step_func(function() {
+ assert_array_equals(eventOrder, ["inline script #1", "inline script #2", "external script #1"]);
+ log("inline script #3");
+ }), false);
- onload = t.step_func(function() {assert_array_equals(eventOrder, ["inline script #1", "inline script #2", "external script #1"]); t.done();});
- </script>
+ onload = t.step_func(function() {
+ assert_array_equals(eventOrder, ["inline script #1", "inline script #2", "external script #1", "inline script #3"]);
+ t.done();
+ });
+ </script>
</body></html>
diff --git a/tests/wpt/web-platform-tests/old-tests/submission/Opera/script_scheduling/098.html b/tests/wpt/web-platform-tests/old-tests/submission/Opera/script_scheduling/098.html
deleted file mode 100644
index 2d421a8a37f..00000000000
--- a/tests/wpt/web-platform-tests/old-tests/submission/Opera/script_scheduling/098.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<!DOCTYPE html>
-<html><head>
- <title> scheduler: defer script added from document.write</title>
- <script src="/resources/testharness.js"></script>
- <script src="/resources/testharnessreport.js"></script>
- <script src="testlib/testlib.js"></script>
-</head>
-<body>
-
- <div id="log">FAILED (This TC requires JavaScript enabled)</div>
-
- <script>
- log("inline script #1");
- document.write("<script defer src='scripts/include-1.js'><\/script>")
- </script>
- <script>
- log("inline script #2");
- var t = async_test();
-
- addEventListener("DOMContentLoaded", t.step_func(function() {assert_array_equals(eventOrder, ["inline script #1", "inline script #2"])}), false);
-
- onload = t.step_func(function() {assert_array_equals(eventOrder, ["inline script #1", "inline script #2", "external script #1"]); t.done();});
- </script>
-</body>
-</html>
diff --git a/tests/wpt/web-platform-tests/old-tests/submission/Opera/script_scheduling/128.html b/tests/wpt/web-platform-tests/old-tests/submission/Opera/script_scheduling/128.html
index a21fd8b4bce..ae61a8ebf73 100644
--- a/tests/wpt/web-platform-tests/old-tests/submission/Opera/script_scheduling/128.html
+++ b/tests/wpt/web-platform-tests/old-tests/submission/Opera/script_scheduling/128.html
@@ -28,7 +28,7 @@ t.step(function() {
});
onload = t.step_func(function() {
- assert_array_equals(eventOrder, ["inline script #1", "inline script #2", "inline script #3", "end inline script #2", "end inline script #1"]);
+ assert_array_equals(eventOrder, ["inline script #1", "inline script #3", "inline script #2", "end inline script #2", "end inline script #1"]);
t.done();
});
</script>