diff options
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> |