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:
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
]