tor-browser

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

commit ab3a40824c9de18e1c97bad0b541bd6f024d624c
parent 5c49f08417b342a2750110a372ef918f97d34bda
Author: Rob Wu <rob@robwu.nl>
Date:   Wed, 17 Dec 2025 10:24:08 +0000

Bug 2005740 - Split crash test off test_ext_storage_session.js r=rpl

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

Diffstat:
Mtoolkit/components/extensions/test/xpcshell/test_ext_storage_session.js | 68--------------------------------------------------------------------
Atoolkit/components/extensions/test/xpcshell/test_ext_storage_session_on_crash.js | 75+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mtoolkit/components/extensions/test/xpcshell/xpcshell-common.toml | 2++
3 files changed, 77 insertions(+), 68 deletions(-)

diff --git a/toolkit/components/extensions/test/xpcshell/test_ext_storage_session.js b/toolkit/components/extensions/test/xpcshell/test_ext_storage_session.js @@ -9,15 +9,6 @@ add_setup(async function setup() { await ExtensionTestUtils.startAddonManager(); }); -const CAN_CRASH_EXTENSIONS = WebExtensionPolicy.useRemoteWebExtensions; - -add_setup( - // Crash dumps are only generated when MOZ_CRASHREPORTER is set. - // Crashes are only generated if tests can crash the extension process. - { skip_if: () => !AppConstants.MOZ_CRASHREPORTER || !CAN_CRASH_EXTENSIONS }, - setup_crash_reporter_override_and_cleaner -); - add_task(async function test_storage_session() { await test_background_page_storage("session"); }); @@ -105,65 +96,6 @@ add_task(async function test_storage_session_contentscript() { await contentPage.close(); }); -async function test_storage_session_after_crash({ persistent }) { - async function background() { - let before = await browser.storage.session.get(); - - browser.storage.session.set({ count: (before.count ?? 0) + 1 }); - - // Roundtrip the data through the parent process. - let after = await browser.storage.session.get(); - - browser.test.sendMessage("data", { before, after }); - } - - let extension = ExtensionTestUtils.loadExtension({ - manifest: { - permissions: ["storage"], - background: { persistent }, - }, - background, - }); - - await extension.startup(); - - info(`Testing storage.session after crash with persistent=${persistent}`); - - { - let { before, after } = await extension.awaitMessage("data"); - - equal(JSON.stringify(before), "{}", "Initial before storage is empty."); - equal(after.count, 1, "After storage counter is correct."); - } - - info("Crashing the extension process."); - await crashExtensionBackground(extension); - await extension.wakeupBackground(); - - { - let { before, after } = await extension.awaitMessage("data"); - - equal(before.count, 1, "Before storage counter is correct."); - equal(after.count, 2, "After storage counter is correct."); - } - - await extension.unload(); -} - -add_task( - { skip_if: () => !CAN_CRASH_EXTENSIONS }, - function test_storage_session_after_crash_persistent() { - return test_storage_session_after_crash({ persistent: true }); - } -); - -add_task( - { skip_if: () => !CAN_CRASH_EXTENSIONS }, - function test_storage_session_after_crash_event_page() { - return test_storage_session_after_crash({ persistent: false }); - } -); - async function test_storage_session_quota({ quotaEnforced }) { let extension = ExtensionTestUtils.loadExtension({ manifest: { diff --git a/toolkit/components/extensions/test/xpcshell/test_ext_storage_session_on_crash.js b/toolkit/components/extensions/test/xpcshell/test_ext_storage_session_on_crash.js @@ -0,0 +1,75 @@ +"use strict"; + +AddonTestUtils.init(this); + +add_setup(async () => { + await ExtensionTestUtils.startAddonManager(); +}); + +const CAN_CRASH_EXTENSIONS = WebExtensionPolicy.useRemoteWebExtensions; + +add_setup( + // Crash dumps are only generated when MOZ_CRASHREPORTER is set. + // Crashes are only generated if tests can crash the extension process. + { skip_if: () => !AppConstants.MOZ_CRASHREPORTER || !CAN_CRASH_EXTENSIONS }, + setup_crash_reporter_override_and_cleaner +); + +async function test_storage_session_after_crash({ persistent }) { + async function background() { + let before = await browser.storage.session.get(); + + browser.storage.session.set({ count: (before.count ?? 0) + 1 }); + + // Roundtrip the data through the parent process. + let after = await browser.storage.session.get(); + + browser.test.sendMessage("data", { before, after }); + } + + let extension = ExtensionTestUtils.loadExtension({ + manifest: { + permissions: ["storage"], + background: { persistent }, + }, + background, + }); + + await extension.startup(); + + info(`Testing storage.session after crash with persistent=${persistent}`); + + { + let { before, after } = await extension.awaitMessage("data"); + + equal(JSON.stringify(before), "{}", "Initial before storage is empty."); + equal(after.count, 1, "After storage counter is correct."); + } + + info("Crashing the extension process."); + await crashExtensionBackground(extension); + await extension.wakeupBackground(); + + { + let { before, after } = await extension.awaitMessage("data"); + + equal(before.count, 1, "Before storage counter is correct."); + equal(after.count, 2, "After storage counter is correct."); + } + + await extension.unload(); +} + +add_task( + { skip_if: () => !CAN_CRASH_EXTENSIONS }, + function test_storage_session_after_crash_persistent() { + return test_storage_session_after_crash({ persistent: true }); + } +); + +add_task( + { skip_if: () => !CAN_CRASH_EXTENSIONS }, + function test_storage_session_after_crash_event_page() { + return test_storage_session_after_crash({ persistent: false }); + } +); diff --git a/toolkit/components/extensions/test/xpcshell/xpcshell-common.toml b/toolkit/components/extensions/test/xpcshell/xpcshell-common.toml @@ -697,6 +697,8 @@ skip-if = [ ] ["test_ext_storage_session.js"] + +["test_ext_storage_session_on_crash.js"] skip-if = [ "isolated_process", # Bug 1709961 ]