summaryrefslogtreecommitdiffstats
path: root/toolkit/components/extensions/test/xpcshell/test_ext_startupData.js
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/components/extensions/test/xpcshell/test_ext_startupData.js')
-rw-r--r--toolkit/components/extensions/test/xpcshell/test_ext_startupData.js55
1 files changed, 55 insertions, 0 deletions
diff --git a/toolkit/components/extensions/test/xpcshell/test_ext_startupData.js b/toolkit/components/extensions/test/xpcshell/test_ext_startupData.js
new file mode 100644
index 0000000000..df51fa9abf
--- /dev/null
+++ b/toolkit/components/extensions/test/xpcshell/test_ext_startupData.js
@@ -0,0 +1,55 @@
+"use strict";
+
+AddonTestUtils.init(this);
+AddonTestUtils.overrideCertDB();
+AddonTestUtils.createAppInfo(
+ "xpcshell@tests.mozilla.org",
+ "XPCShell",
+ "1",
+ "1"
+);
+
+// Tests that startupData is persisted and is available at startup
+add_task(async function test_startupData() {
+ await AddonTestUtils.promiseStartupManager();
+
+ let wrapper = ExtensionTestUtils.loadExtension({
+ useAddonManager: "permanent",
+ });
+ await wrapper.startup();
+
+ let { extension } = wrapper;
+
+ deepEqual(
+ extension.startupData,
+ {},
+ "startupData for a new extension defaults to empty object"
+ );
+
+ const DATA = { test: "i am some startup data" };
+ extension.startupData = DATA;
+ extension.saveStartupData();
+
+ await AddonTestUtils.promiseRestartManager();
+ await wrapper.startupPromise;
+
+ ({ extension } = wrapper);
+ deepEqual(extension.startupData, DATA, "startupData is present on restart");
+
+ const DATA2 = { other: "this is different data" };
+ extension.startupData = DATA2;
+ extension.saveStartupData();
+
+ await AddonTestUtils.promiseRestartManager();
+ await wrapper.startupPromise;
+
+ ({ extension } = wrapper);
+ deepEqual(
+ extension.startupData,
+ DATA2,
+ "updated startupData is present on restart"
+ );
+
+ await wrapper.unload();
+ await AddonTestUtils.promiseShutdownManager();
+});