commit f932c8249aa653fd4dc5de38a9a6108dcb84036a
parent a971c7a270f5ed13db50023d31a5b7ea0cfbdc07
Author: Tooru Fujisawa <arai_a@mac.com>
Date: Tue, 11 Nov 2025 05:42:36 +0000
Bug 1999071 - Allow random order around imported modules. r=bthrall
Differential Revision: https://phabricator.services.mozilla.com/D271879
Diffstat:
2 files changed, 196 insertions(+), 90 deletions(-)
diff --git a/dom/base/test/browser_script_loader_js_cache_dyn_import.js b/dom/base/test/browser_script_loader_js_cache_dyn_import.js
@@ -21,12 +21,26 @@ add_task(async function testDiskCache_dynamicImport() {
ev("load:source", "file_js_cache_dyn_importer.mjs"),
ev("evaluate:module", "file_js_cache_dyn_importer.mjs"),
ev("diskcache:disabled", "file_js_cache_dyn_importer.mjs"),
- ev("load:source", "file_js_cache_dyn_imported1.mjs", false),
- ev("diskcache:disabled", "file_js_cache_dyn_imported1.mjs", false),
- ev("load:source", "file_js_cache_dyn_imported2.mjs", false),
- ev("diskcache:disabled", "file_js_cache_dyn_imported2.mjs", false),
- ev("load:source", "file_js_cache_dyn_imported3.mjs", false),
- ev("diskcache:disabled", "file_js_cache_dyn_imported3.mjs", false),
+ unordered([
+ ev("load:source", "file_js_cache_dyn_imported1.mjs", false),
+ ev(
+ "diskcache:disabled",
+ "file_js_cache_dyn_imported1.mjs",
+ false
+ ),
+ ev("load:source", "file_js_cache_dyn_imported2.mjs", false),
+ ev(
+ "diskcache:disabled",
+ "file_js_cache_dyn_imported2.mjs",
+ false
+ ),
+ ev("load:source", "file_js_cache_dyn_imported3.mjs", false),
+ ev(
+ "diskcache:disabled",
+ "file_js_cache_dyn_imported3.mjs",
+ false
+ ),
+ ]),
],
},
{
@@ -35,12 +49,26 @@ add_task(async function testDiskCache_dynamicImport() {
ev("load:source", "file_js_cache_dyn_importer.mjs"),
ev("evaluate:module", "file_js_cache_dyn_importer.mjs"),
ev("diskcache:disabled", "file_js_cache_dyn_importer.mjs"),
- ev("load:source", "file_js_cache_dyn_imported1.mjs", false),
- ev("diskcache:disabled", "file_js_cache_dyn_imported1.mjs", false),
- ev("load:source", "file_js_cache_dyn_imported2.mjs", false),
- ev("diskcache:disabled", "file_js_cache_dyn_imported2.mjs", false),
- ev("load:source", "file_js_cache_dyn_imported3.mjs", false),
- ev("diskcache:disabled", "file_js_cache_dyn_imported3.mjs", false),
+ unordered([
+ ev("load:source", "file_js_cache_dyn_imported1.mjs", false),
+ ev(
+ "diskcache:disabled",
+ "file_js_cache_dyn_imported1.mjs",
+ false
+ ),
+ ev("load:source", "file_js_cache_dyn_imported2.mjs", false),
+ ev(
+ "diskcache:disabled",
+ "file_js_cache_dyn_imported2.mjs",
+ false
+ ),
+ ev("load:source", "file_js_cache_dyn_imported3.mjs", false),
+ ev(
+ "diskcache:disabled",
+ "file_js_cache_dyn_imported3.mjs",
+ false
+ ),
+ ]),
],
},
{
@@ -49,12 +77,26 @@ add_task(async function testDiskCache_dynamicImport() {
ev("load:source", "file_js_cache_dyn_importer.mjs"),
ev("evaluate:module", "file_js_cache_dyn_importer.mjs"),
ev("diskcache:disabled", "file_js_cache_dyn_importer.mjs"),
- ev("load:source", "file_js_cache_dyn_imported1.mjs", false),
- ev("diskcache:disabled", "file_js_cache_dyn_imported1.mjs", false),
- ev("load:source", "file_js_cache_dyn_imported2.mjs", false),
- ev("diskcache:disabled", "file_js_cache_dyn_imported2.mjs", false),
- ev("load:source", "file_js_cache_dyn_imported3.mjs", false),
- ev("diskcache:disabled", "file_js_cache_dyn_imported3.mjs", false),
+ unordered([
+ ev("load:source", "file_js_cache_dyn_imported1.mjs", false),
+ ev(
+ "diskcache:disabled",
+ "file_js_cache_dyn_imported1.mjs",
+ false
+ ),
+ ev("load:source", "file_js_cache_dyn_imported2.mjs", false),
+ ev(
+ "diskcache:disabled",
+ "file_js_cache_dyn_imported2.mjs",
+ false
+ ),
+ ev("load:source", "file_js_cache_dyn_imported3.mjs", false),
+ ev(
+ "diskcache:disabled",
+ "file_js_cache_dyn_imported3.mjs",
+ false
+ ),
+ ]),
],
},
{
@@ -63,16 +105,32 @@ add_task(async function testDiskCache_dynamicImport() {
ev("load:source", "file_js_cache_dyn_importer.mjs"),
ev("evaluate:module", "file_js_cache_dyn_importer.mjs"),
ev("diskcache:register", "file_js_cache_dyn_importer.mjs"),
- ev("load:source", "file_js_cache_dyn_imported1.mjs", false),
- ev("diskcache:register", "file_js_cache_dyn_imported1.mjs", false),
- ev("load:source", "file_js_cache_dyn_imported2.mjs", false),
- ev("diskcache:register", "file_js_cache_dyn_imported2.mjs", false),
- ev("load:source", "file_js_cache_dyn_imported3.mjs", false),
- ev("diskcache:register", "file_js_cache_dyn_imported3.mjs", false),
+ unordered([
+ ev("load:source", "file_js_cache_dyn_imported1.mjs", false),
+ ev(
+ "diskcache:register",
+ "file_js_cache_dyn_imported1.mjs",
+ false
+ ),
+ ev("load:source", "file_js_cache_dyn_imported2.mjs", false),
+ ev(
+ "diskcache:register",
+ "file_js_cache_dyn_imported2.mjs",
+ false
+ ),
+ ev("load:source", "file_js_cache_dyn_imported3.mjs", false),
+ ev(
+ "diskcache:register",
+ "file_js_cache_dyn_imported3.mjs",
+ false
+ ),
+ ]),
ev("diskcache:saved", "file_js_cache_dyn_importer.mjs", false),
- ev("diskcache:saved", "file_js_cache_dyn_imported1.mjs", false),
- ev("diskcache:saved", "file_js_cache_dyn_imported2.mjs", false),
- ev("diskcache:saved", "file_js_cache_dyn_imported3.mjs", false),
+ unordered([
+ ev("diskcache:saved", "file_js_cache_dyn_imported1.mjs", false),
+ ev("diskcache:saved", "file_js_cache_dyn_imported2.mjs", false),
+ ev("diskcache:saved", "file_js_cache_dyn_imported3.mjs", false),
+ ]),
],
},
{
@@ -81,12 +139,26 @@ add_task(async function testDiskCache_dynamicImport() {
ev("load:diskcache", "file_js_cache_dyn_importer.mjs"),
ev("evaluate:module", "file_js_cache_dyn_importer.mjs"),
ev("diskcache:disabled", "file_js_cache_dyn_importer.mjs"),
- ev("load:diskcache", "file_js_cache_dyn_imported1.mjs", false),
- ev("diskcache:disabled", "file_js_cache_dyn_imported1.mjs", false),
- ev("load:diskcache", "file_js_cache_dyn_imported2.mjs", false),
- ev("diskcache:disabled", "file_js_cache_dyn_imported2.mjs", false),
- ev("load:diskcache", "file_js_cache_dyn_imported3.mjs", false),
- ev("diskcache:disabled", "file_js_cache_dyn_imported3.mjs", false),
+ unordered([
+ ev("load:diskcache", "file_js_cache_dyn_imported1.mjs", false),
+ ev(
+ "diskcache:disabled",
+ "file_js_cache_dyn_imported1.mjs",
+ false
+ ),
+ ev("load:diskcache", "file_js_cache_dyn_imported2.mjs", false),
+ ev(
+ "diskcache:disabled",
+ "file_js_cache_dyn_imported2.mjs",
+ false
+ ),
+ ev("load:diskcache", "file_js_cache_dyn_imported3.mjs", false),
+ ev(
+ "diskcache:disabled",
+ "file_js_cache_dyn_imported3.mjs",
+ false
+ ),
+ ]),
],
},
],
@@ -122,12 +194,14 @@ add_task(async function testMemoryCache_dynamicImport() {
ev("load:source", "file_js_cache_dyn_importer.mjs"),
ev("memorycache:saved", "file_js_cache_dyn_importer.mjs"),
ev("evaluate:module", "file_js_cache_dyn_importer.mjs"),
- ev("load:source", "file_js_cache_dyn_imported1.mjs", false),
- ev("memorycache:saved", "file_js_cache_dyn_imported1.mjs", false),
- ev("load:source", "file_js_cache_dyn_imported2.mjs", false),
- ev("memorycache:saved", "file_js_cache_dyn_imported2.mjs", false),
- ev("load:source", "file_js_cache_dyn_imported3.mjs", false),
- ev("memorycache:saved", "file_js_cache_dyn_imported3.mjs", false),
+ unordered([
+ ev("load:source", "file_js_cache_dyn_imported1.mjs", false),
+ ev("memorycache:saved", "file_js_cache_dyn_imported1.mjs", false),
+ ev("load:source", "file_js_cache_dyn_imported2.mjs", false),
+ ev("memorycache:saved", "file_js_cache_dyn_imported2.mjs", false),
+ ev("load:source", "file_js_cache_dyn_imported3.mjs", false),
+ ev("memorycache:saved", "file_js_cache_dyn_imported3.mjs", false),
+ ]),
ev("diskcache:noschedule"),
],
},
@@ -136,9 +210,11 @@ add_task(async function testMemoryCache_dynamicImport() {
events: [
ev("load:memorycache", "file_js_cache_dyn_importer.mjs"),
ev("evaluate:module", "file_js_cache_dyn_importer.mjs"),
- ev("load:memorycache", "file_js_cache_dyn_imported1.mjs", false),
- ev("load:memorycache", "file_js_cache_dyn_imported2.mjs", false),
- ev("load:memorycache", "file_js_cache_dyn_imported3.mjs", false),
+ unordered([
+ ev("load:memorycache", "file_js_cache_dyn_imported1.mjs", false),
+ ev("load:memorycache", "file_js_cache_dyn_imported2.mjs", false),
+ ev("load:memorycache", "file_js_cache_dyn_imported3.mjs", false),
+ ]),
ev("diskcache:noschedule"),
],
},
@@ -147,9 +223,11 @@ add_task(async function testMemoryCache_dynamicImport() {
events: [
ev("load:memorycache", "file_js_cache_dyn_importer.mjs"),
ev("evaluate:module", "file_js_cache_dyn_importer.mjs"),
- ev("load:memorycache", "file_js_cache_dyn_imported1.mjs", false),
- ev("load:memorycache", "file_js_cache_dyn_imported2.mjs", false),
- ev("load:memorycache", "file_js_cache_dyn_imported3.mjs", false),
+ unordered([
+ ev("load:memorycache", "file_js_cache_dyn_imported1.mjs", false),
+ ev("load:memorycache", "file_js_cache_dyn_imported2.mjs", false),
+ ev("load:memorycache", "file_js_cache_dyn_imported3.mjs", false),
+ ]),
ev("diskcache:noschedule"),
],
},
@@ -158,9 +236,11 @@ add_task(async function testMemoryCache_dynamicImport() {
events: [
ev("load:memorycache", "file_js_cache_dyn_importer.mjs"),
ev("evaluate:module", "file_js_cache_dyn_importer.mjs"),
- ev("load:memorycache", "file_js_cache_dyn_imported1.mjs", false),
- ev("load:memorycache", "file_js_cache_dyn_imported2.mjs", false),
- ev("load:memorycache", "file_js_cache_dyn_imported3.mjs", false),
+ unordered([
+ ev("load:memorycache", "file_js_cache_dyn_imported1.mjs", false),
+ ev("load:memorycache", "file_js_cache_dyn_imported2.mjs", false),
+ ev("load:memorycache", "file_js_cache_dyn_imported3.mjs", false),
+ ]),
unordered([
ev("diskcache:saved", "file_js_cache_dyn_importer.mjs", false),
ev("diskcache:saved", "file_js_cache_dyn_imported1.mjs", false),
@@ -174,9 +254,11 @@ add_task(async function testMemoryCache_dynamicImport() {
events: [
ev("load:memorycache", "file_js_cache_dyn_importer.mjs"),
ev("evaluate:module", "file_js_cache_dyn_importer.mjs"),
- ev("load:memorycache", "file_js_cache_dyn_imported1.mjs", false),
- ev("load:memorycache", "file_js_cache_dyn_imported2.mjs", false),
- ev("load:memorycache", "file_js_cache_dyn_imported3.mjs", false),
+ unordered([
+ ev("load:memorycache", "file_js_cache_dyn_imported1.mjs", false),
+ ev("load:memorycache", "file_js_cache_dyn_imported2.mjs", false),
+ ev("load:memorycache", "file_js_cache_dyn_imported3.mjs", false),
+ ]),
ev("diskcache:noschedule"),
],
},
diff --git a/dom/base/test/browser_script_loader_js_cache_module.js b/dom/base/test/browser_script_loader_js_cache_module.js
@@ -101,9 +101,11 @@ add_task(async function testDiskCache_modules() {
file: "file_js_cache_importer.mjs",
events: [
ev("load:source", "file_js_cache_importer.mjs"),
- ev("load:source", "file_js_cache_imported1.mjs", false),
- ev("load:source", "file_js_cache_imported2.mjs", false),
- ev("load:source", "file_js_cache_imported3.mjs", false),
+ unordered([
+ ev("load:source", "file_js_cache_imported1.mjs", false),
+ ev("load:source", "file_js_cache_imported2.mjs", false),
+ ev("load:source", "file_js_cache_imported3.mjs", false),
+ ]),
ev("evaluate:module", "file_js_cache_importer.mjs"),
ev("diskcache:disabled", "file_js_cache_importer.mjs"),
// non-top-level modules that don't pass the condition
@@ -114,9 +116,11 @@ add_task(async function testDiskCache_modules() {
file: "file_js_cache_importer.mjs",
events: [
ev("load:source", "file_js_cache_importer.mjs"),
- ev("load:source", "file_js_cache_imported1.mjs", false),
- ev("load:source", "file_js_cache_imported2.mjs", false),
- ev("load:source", "file_js_cache_imported3.mjs", false),
+ unordered([
+ ev("load:source", "file_js_cache_imported1.mjs", false),
+ ev("load:source", "file_js_cache_imported2.mjs", false),
+ ev("load:source", "file_js_cache_imported3.mjs", false),
+ ]),
ev("evaluate:module", "file_js_cache_importer.mjs"),
ev("diskcache:disabled", "file_js_cache_importer.mjs"),
],
@@ -125,9 +129,11 @@ add_task(async function testDiskCache_modules() {
file: "file_js_cache_importer.mjs",
events: [
ev("load:source", "file_js_cache_importer.mjs"),
- ev("load:source", "file_js_cache_imported1.mjs", false),
- ev("load:source", "file_js_cache_imported2.mjs", false),
- ev("load:source", "file_js_cache_imported3.mjs", false),
+ unordered([
+ ev("load:source", "file_js_cache_imported1.mjs", false),
+ ev("load:source", "file_js_cache_imported2.mjs", false),
+ ev("load:source", "file_js_cache_imported3.mjs", false),
+ ]),
ev("evaluate:module", "file_js_cache_importer.mjs"),
ev("diskcache:disabled", "file_js_cache_importer.mjs"),
],
@@ -136,27 +142,35 @@ add_task(async function testDiskCache_modules() {
file: "file_js_cache_importer.mjs",
events: [
ev("load:source", "file_js_cache_importer.mjs"),
- ev("load:source", "file_js_cache_imported1.mjs", false),
- ev("load:source", "file_js_cache_imported2.mjs", false),
- ev("load:source", "file_js_cache_imported3.mjs", false),
+ unordered([
+ ev("load:source", "file_js_cache_imported1.mjs", false),
+ ev("load:source", "file_js_cache_imported2.mjs", false),
+ ev("load:source", "file_js_cache_imported3.mjs", false),
+ ]),
ev("evaluate:module", "file_js_cache_importer.mjs"),
ev("diskcache:register", "file_js_cache_importer.mjs"),
- ev("diskcache:register", "file_js_cache_imported1.mjs", false),
- ev("diskcache:register", "file_js_cache_imported2.mjs", false),
- ev("diskcache:register", "file_js_cache_imported3.mjs", false),
+ unordered([
+ ev("diskcache:register", "file_js_cache_imported1.mjs", false),
+ ev("diskcache:register", "file_js_cache_imported2.mjs", false),
+ ev("diskcache:register", "file_js_cache_imported3.mjs", false),
+ ]),
ev("diskcache:saved", "file_js_cache_importer.mjs", false),
- ev("diskcache:saved", "file_js_cache_imported1.mjs", false),
- ev("diskcache:saved", "file_js_cache_imported2.mjs", false),
- ev("diskcache:saved", "file_js_cache_imported3.mjs", false),
+ unordered([
+ ev("diskcache:saved", "file_js_cache_imported1.mjs", false),
+ ev("diskcache:saved", "file_js_cache_imported2.mjs", false),
+ ev("diskcache:saved", "file_js_cache_imported3.mjs", false),
+ ]),
],
},
{
file: "file_js_cache_importer.mjs",
events: [
ev("load:diskcache", "file_js_cache_importer.mjs"),
- ev("load:diskcache", "file_js_cache_imported1.mjs", false),
- ev("load:diskcache", "file_js_cache_imported2.mjs", false),
- ev("load:diskcache", "file_js_cache_imported3.mjs", false),
+ unordered([
+ ev("load:diskcache", "file_js_cache_imported1.mjs", false),
+ ev("load:diskcache", "file_js_cache_imported2.mjs", false),
+ ev("load:diskcache", "file_js_cache_imported3.mjs", false),
+ ]),
ev("evaluate:module", "file_js_cache_importer.mjs"),
ev("diskcache:disabled", "file_js_cache_importer.mjs"),
],
@@ -284,12 +298,14 @@ add_task(async function testMemoryCache_modules() {
events: [
ev("load:source", "file_js_cache_importer.mjs"),
ev("memorycache:saved", "file_js_cache_importer.mjs"),
- ev("load:source", "file_js_cache_imported1.mjs", false),
- ev("memorycache:saved", "file_js_cache_imported1.mjs", false),
- ev("load:source", "file_js_cache_imported2.mjs", false),
- ev("memorycache:saved", "file_js_cache_imported2.mjs", false),
- ev("load:source", "file_js_cache_imported3.mjs", false),
- ev("memorycache:saved", "file_js_cache_imported3.mjs", false),
+ unordered([
+ ev("load:source", "file_js_cache_imported1.mjs", false),
+ ev("memorycache:saved", "file_js_cache_imported1.mjs", false),
+ ev("load:source", "file_js_cache_imported2.mjs", false),
+ ev("memorycache:saved", "file_js_cache_imported2.mjs", false),
+ ev("load:source", "file_js_cache_imported3.mjs", false),
+ ev("memorycache:saved", "file_js_cache_imported3.mjs", false),
+ ]),
ev("evaluate:module", "file_js_cache_importer.mjs"),
ev("diskcache:noschedule"),
],
@@ -298,9 +314,11 @@ add_task(async function testMemoryCache_modules() {
file: "file_js_cache_importer.mjs",
events: [
ev("load:memorycache", "file_js_cache_importer.mjs"),
- ev("load:memorycache", "file_js_cache_imported1.mjs", false),
- ev("load:memorycache", "file_js_cache_imported2.mjs", false),
- ev("load:memorycache", "file_js_cache_imported3.mjs", false),
+ unordered([
+ ev("load:memorycache", "file_js_cache_imported1.mjs", false),
+ ev("load:memorycache", "file_js_cache_imported2.mjs", false),
+ ev("load:memorycache", "file_js_cache_imported3.mjs", false),
+ ]),
ev("evaluate:module", "file_js_cache_importer.mjs"),
ev("diskcache:noschedule"),
],
@@ -309,9 +327,11 @@ add_task(async function testMemoryCache_modules() {
file: "file_js_cache_importer.mjs",
events: [
ev("load:memorycache", "file_js_cache_importer.mjs"),
- ev("load:memorycache", "file_js_cache_imported1.mjs", false),
- ev("load:memorycache", "file_js_cache_imported2.mjs", false),
- ev("load:memorycache", "file_js_cache_imported3.mjs", false),
+ unordered([
+ ev("load:memorycache", "file_js_cache_imported1.mjs", false),
+ ev("load:memorycache", "file_js_cache_imported2.mjs", false),
+ ev("load:memorycache", "file_js_cache_imported3.mjs", false),
+ ]),
ev("evaluate:module", "file_js_cache_importer.mjs"),
ev("diskcache:noschedule"),
],
@@ -320,9 +340,11 @@ add_task(async function testMemoryCache_modules() {
file: "file_js_cache_importer.mjs",
events: [
ev("load:memorycache", "file_js_cache_importer.mjs"),
- ev("load:memorycache", "file_js_cache_imported1.mjs", false),
- ev("load:memorycache", "file_js_cache_imported2.mjs", false),
- ev("load:memorycache", "file_js_cache_imported3.mjs", false),
+ unordered([
+ ev("load:memorycache", "file_js_cache_imported1.mjs", false),
+ ev("load:memorycache", "file_js_cache_imported2.mjs", false),
+ ev("load:memorycache", "file_js_cache_imported3.mjs", false),
+ ]),
ev("evaluate:module", "file_js_cache_importer.mjs"),
// SharedScriptCache iterates over unordered hashmap while
// saving.
@@ -338,9 +360,11 @@ add_task(async function testMemoryCache_modules() {
file: "file_js_cache_importer.mjs",
events: [
ev("load:memorycache", "file_js_cache_importer.mjs"),
- ev("load:memorycache", "file_js_cache_imported1.mjs", false),
- ev("load:memorycache", "file_js_cache_imported2.mjs", false),
- ev("load:memorycache", "file_js_cache_imported3.mjs", false),
+ unordered([
+ ev("load:memorycache", "file_js_cache_imported1.mjs", false),
+ ev("load:memorycache", "file_js_cache_imported2.mjs", false),
+ ev("load:memorycache", "file_js_cache_imported3.mjs", false),
+ ]),
ev("evaluate:module", "file_js_cache_importer.mjs"),
ev("diskcache:noschedule"),
],