Loading dom/base/test/mochitest.ini +1 −0 Original line number Diff line number Diff line Loading @@ -263,6 +263,7 @@ skip-if = headless # Bug 1405867 [test_base.xhtml] [test_bug1433073.html] skip-if = (os == "android" || headless) # See [test_bug1632975.html] [test_bug1730284.html] # https://bugzilla.mozilla.org/show_bug.cgi?id=1632196 and # https://bugzilla.mozilla.org/show_bug.cgi?id=1632438. Loading dom/base/test/test_bug1632975.html 0 → 100644 +55 −0 Original line number Diff line number Diff line <!DOCTYPE HTML> <html> <!-- https://bugzilla.mozilla.org/show_bug.cgi?id=1632975 --> <head> <title>Test for Bug 1632975</title> <script type="text/javascript" src="/MochiKit/MochiKit.js"></script> <script src="/tests/SimpleTest/SimpleTest.js"></script> <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> </head> <body> <script class="testbody" type="text/javascript"> SimpleTest.waitForExplicitFinish(); function observeTest(mutationsList) { for (let mutation of mutationsList) { for (let node of mutation.addedNodes) { if (node.nodeName.toLowerCase() == "script") { node.setAttribute("type", "text/zpconsent") } } } } const observer = new MutationObserver(observeTest); observer.observe(document.body, { childList: true, subtree: true }); let script2Ran = false; let script3Ran = false; script4Ran = false; onload = () => { ok(!script2Ran, "script2 should not have run"); ok(!script3Ran, "script3 should not have run"); ok(!script4Ran, "script4 should not have run"); SimpleTest.finish(); } </script> <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1632975">Mozilla Bug 1632975</a> <p id="display"></p> <div id="content" style="display: none"> <script id="script2"> script2Ran = true; </script> <script id="script3" type="disabled"> script3Ran = true; </script> <script id="script4" src="data:text/javascript,script4Ran = true;"></script> </div> </body> </html> dom/script/ScriptElement.cpp +4 −6 Original line number Diff line number Diff line Loading @@ -99,14 +99,12 @@ bool ScriptElement::MaybeProcessScript() { return false; } if (!HasScriptContent()) { // In the case of an empty, non-external classic script, there is nothing // to process. However, we must perform a microtask checkpoint afterwards, // as per https://html.spec.whatwg.org/#clean-up-after-running-script if (mKind == JS::loader::ScriptKind::eClassic && !mExternal) { nsContentUtils::AddScriptRunner(NS_NewRunnableFunction( "ScriptElement::MaybeProcessScript", []() { nsAutoMicroTask mt; })); } if (!HasScriptContent()) { // In the case of an empty, non-external classic script, we return early; // however, we must do so after performing a microtask checkpoint, // as per https://html.spec.whatwg.org/#clean-up-after-running-script return false; } Loading dom/script/ScriptLoader.cpp +0 −7 Original line number Diff line number Diff line Loading @@ -1186,13 +1186,6 @@ bool ScriptLoader::ProcessInlineScript(nsIScriptElement* aElement, } } { // We must perform a microtask checkpoint when inserting script elements // as specified by: https://html.spec.whatwg.org/#parsing-main-incdata // For the non-inline module cases this happens in ProcessRequest. mozilla::nsAutoMicroTask mt; } // This calls OnFetchComplete directly since there's no need to start // fetching an inline script. nsresult rv = modReq->OnFetchComplete(NS_OK); Loading Loading
dom/base/test/mochitest.ini +1 −0 Original line number Diff line number Diff line Loading @@ -263,6 +263,7 @@ skip-if = headless # Bug 1405867 [test_base.xhtml] [test_bug1433073.html] skip-if = (os == "android" || headless) # See [test_bug1632975.html] [test_bug1730284.html] # https://bugzilla.mozilla.org/show_bug.cgi?id=1632196 and # https://bugzilla.mozilla.org/show_bug.cgi?id=1632438. Loading
dom/base/test/test_bug1632975.html 0 → 100644 +55 −0 Original line number Diff line number Diff line <!DOCTYPE HTML> <html> <!-- https://bugzilla.mozilla.org/show_bug.cgi?id=1632975 --> <head> <title>Test for Bug 1632975</title> <script type="text/javascript" src="/MochiKit/MochiKit.js"></script> <script src="/tests/SimpleTest/SimpleTest.js"></script> <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> </head> <body> <script class="testbody" type="text/javascript"> SimpleTest.waitForExplicitFinish(); function observeTest(mutationsList) { for (let mutation of mutationsList) { for (let node of mutation.addedNodes) { if (node.nodeName.toLowerCase() == "script") { node.setAttribute("type", "text/zpconsent") } } } } const observer = new MutationObserver(observeTest); observer.observe(document.body, { childList: true, subtree: true }); let script2Ran = false; let script3Ran = false; script4Ran = false; onload = () => { ok(!script2Ran, "script2 should not have run"); ok(!script3Ran, "script3 should not have run"); ok(!script4Ran, "script4 should not have run"); SimpleTest.finish(); } </script> <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1632975">Mozilla Bug 1632975</a> <p id="display"></p> <div id="content" style="display: none"> <script id="script2"> script2Ran = true; </script> <script id="script3" type="disabled"> script3Ran = true; </script> <script id="script4" src="data:text/javascript,script4Ran = true;"></script> </div> </body> </html>
dom/script/ScriptElement.cpp +4 −6 Original line number Diff line number Diff line Loading @@ -99,14 +99,12 @@ bool ScriptElement::MaybeProcessScript() { return false; } if (!HasScriptContent()) { // In the case of an empty, non-external classic script, there is nothing // to process. However, we must perform a microtask checkpoint afterwards, // as per https://html.spec.whatwg.org/#clean-up-after-running-script if (mKind == JS::loader::ScriptKind::eClassic && !mExternal) { nsContentUtils::AddScriptRunner(NS_NewRunnableFunction( "ScriptElement::MaybeProcessScript", []() { nsAutoMicroTask mt; })); } if (!HasScriptContent()) { // In the case of an empty, non-external classic script, we return early; // however, we must do so after performing a microtask checkpoint, // as per https://html.spec.whatwg.org/#clean-up-after-running-script return false; } Loading
dom/script/ScriptLoader.cpp +0 −7 Original line number Diff line number Diff line Loading @@ -1186,13 +1186,6 @@ bool ScriptLoader::ProcessInlineScript(nsIScriptElement* aElement, } } { // We must perform a microtask checkpoint when inserting script elements // as specified by: https://html.spec.whatwg.org/#parsing-main-incdata // For the non-inline module cases this happens in ProcessRequest. mozilla::nsAutoMicroTask mt; } // This calls OnFetchComplete directly since there's no need to start // fetching an inline script. nsresult rv = modReq->OnFetchComplete(NS_OK); Loading