tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

commit 759d89cc59d11c684089c2e9550fc1c87d2b4e49
parent b9b10efc43cc2a9651f15c34d63c867057414455
Author: Tooru Fujisawa <arai_a@mac.com>
Date:   Sat,  8 Nov 2025 02:36:10 +0000

Bug 1998322 - Part 4: Add optional events and expect possible fallback. r=nbp

Depending on the scheduling and speed, the disk cache might not be updated
in time.

Differential Revision: https://phabricator.services.mozilla.com/D271707

Diffstat:
Mdom/base/test/browser_script_loader_js_cache_sri_mismatch.js | 12++++++++++++
Mdom/base/test/head.js | 15+++++++++++++++
2 files changed, 27 insertions(+), 0 deletions(-)

diff --git a/dom/base/test/browser_script_loader_js_cache_sri_mismatch.js b/dom/base/test/browser_script_loader_js_cache_sri_mismatch.js @@ -58,6 +58,8 @@ add_task(async function testDiskCache_SRIMismatchAfterSave() { sri: "sha384-fxijQE3W3lWbCjRZx0MCS6pJpCz+dGnNujsFYBzzag9G/fz/6ZiWdM/GAsMzGlAI", events: [ ev("load:diskcache", "file_js_cache_large.js"), + optional_ev("load:fallback", "file_js_cache_large.js"), + optional_ev("load:source", "file_js_cache_large.js"), ev("sri:corrupt", "file_js_cache_large.js"), ], }, @@ -109,6 +111,8 @@ add_task(async function testDiskCache_SRIMismatchAfterSave() { sri: "sha512-8fAu+4y0SKpriy0fz4IuLgiXLyTCGVInfJHvIl8JOdxm+xKJVHVhX7RTfEUpExZYoOJqzpVRkK/6nfglpK7Dow==", events: [ ev("load:diskcache", "file_js_cache_large.js"), + optional_ev("load:fallback", "file_js_cache_large.js"), + optional_ev("load:source", "file_js_cache_large.js"), ev("sri:corrupt", "file_js_cache_large.js"), ], }, @@ -161,6 +165,8 @@ add_task(async function testDiskCache_SRIMismatchAfterSave() { sri: "sha384-fxijQE3W3lWbCjRZx0MCS6pJpCz+dGnNujsFYBzzag9G/fz/6ZiWdM/GAsMzGlAI", events: [ ev("load:diskcache", "file_js_cache_large.js"), + optional_ev("load:fallback", "file_js_cache_large.js"), + optional_ev("load:source", "file_js_cache_large.js"), ev("sri:corrupt", "file_js_cache_large.js"), ], }, @@ -288,6 +294,8 @@ add_task(async function testMemoryCache_SRIMismatchAfterSave() { sri: "sha384-fxijQE3W3lWbCjRZx0MCS6pJpCz+dGnNujsFYBzzag9G/fz/6ZiWdM/GAsMzGlAI", events: [ ev("load:diskcache", "file_js_cache_large.js"), + optional_ev("load:fallback", "file_js_cache_large.js"), + optional_ev("load:source", "file_js_cache_large.js"), ev("sri:corrupt", "file_js_cache_large.js"), ], }, @@ -339,6 +347,8 @@ add_task(async function testMemoryCache_SRIMismatchAfterSave() { sri: "sha512-8fAu+4y0SKpriy0fz4IuLgiXLyTCGVInfJHvIl8JOdxm+xKJVHVhX7RTfEUpExZYoOJqzpVRkK/6nfglpK7Dow==", events: [ ev("load:diskcache", "file_js_cache_large.js"), + optional_ev("load:fallback", "file_js_cache_large.js"), + optional_ev("load:source", "file_js_cache_large.js"), ev("sri:corrupt", "file_js_cache_large.js"), ], }, @@ -391,6 +401,8 @@ add_task(async function testMemoryCache_SRIMismatchAfterSave() { sri: "sha384-fxijQE3W3lWbCjRZx0MCS6pJpCz+dGnNujsFYBzzag9G/fz/6ZiWdM/GAsMzGlAI", events: [ ev("load:diskcache", "file_js_cache_large.js"), + optional_ev("load:fallback", "file_js_cache_large.js"), + optional_ev("load:source", "file_js_cache_large.js"), ev("sri:corrupt", "file_js_cache_large.js"), ], }, diff --git a/dom/base/test/head.js b/dom/base/test/head.js @@ -30,6 +30,12 @@ function unordered(list) { }; } +function optional_ev(...args) { + const event = ev(...args); + event.optional = true; + return event; +} + async function jsCacheContentTask(test, item) { function match(param, event) { if (event.event !== param.event) { @@ -54,6 +60,15 @@ async function jsCacheContentTask(test, item) { } function consumeIfMatched(param, events) { + while ("optional" in events[0]) { + if (match(param, events[0])) { + events.shift(); + return true; + } + dump("@@@ Skip optional event: " + events[0].event + "\n"); + events.shift(); + } + if ("unordered" in events[0]) { const unordered = events[0].unordered; for (let i = 0; i < unordered.length; i++) {