summaryrefslogtreecommitdiffstats
path: root/devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_addons_debug_storage.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_addons_debug_storage.js')
-rw-r--r--devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_addons_debug_storage.js90
1 files changed, 90 insertions, 0 deletions
diff --git a/devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_addons_debug_storage.js b/devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_addons_debug_storage.js
new file mode 100644
index 0000000000..56f1b0befb
--- /dev/null
+++ b/devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_addons_debug_storage.js
@@ -0,0 +1,90 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+"use strict";
+
+/* import-globals-from helper-addons.js */
+Services.scriptloader.loadSubScript(CHROME_URL_ROOT + "helper-addons.js", this);
+
+add_task(async () => {
+ const EXTENSION_NAME = "temporary-web-extension";
+ const EXTENSION_ID = "test-devtools@mozilla.org";
+
+ await enableExtensionDebugging();
+
+ const { document, tab, window } = await openAboutDebugging();
+ await selectThisFirefoxPage(document, window.AboutDebugging.store);
+
+ const { extension } = await installTemporaryExtensionFromXPI(
+ {
+ background() {
+ const open = indexedDB.open("TestDatabase", 1);
+
+ open.onupgradeneeded = function () {
+ const db = open.result;
+ db.createObjectStore("TestStore", { keyPath: "id" });
+ };
+
+ open.onsuccess = function () {
+ const db = open.result;
+ const tx = db.transaction("TestStore", "readwrite");
+ const store = tx.objectStore("TestStore");
+
+ store.put({ id: 1, name: "John", age: 12 });
+ store.put({ id: 2, name: "Bob", age: 24 });
+ tx.oncomplete = () => db.close();
+ };
+ },
+ id: EXTENSION_ID,
+ name: EXTENSION_NAME,
+ },
+ document
+ );
+
+ const { devtoolsWindow } = await openAboutDevtoolsToolbox(
+ document,
+ tab,
+ window,
+ EXTENSION_NAME
+ );
+
+ info("Select the storage panel");
+ const toolbox = getToolbox(devtoolsWindow);
+ await toolbox.selectTool("storage");
+ const storage = toolbox.getCurrentPanel();
+
+ info("Check the content of the storage panel treeview");
+ const ids = [
+ "indexedDB",
+ `moz-extension://${extension.uuid}`,
+ "TestDatabase (default)",
+ "TestStore",
+ ];
+ ok(
+ !!storage.panelWindow.document.querySelector(
+ `[data-id='${JSON.stringify(ids)}']`
+ ),
+ "The indexedDB database for the extension is visible"
+ );
+
+ info("Select the indexedDB database for the extension");
+ const updated = storage.UI.once("store-objects-updated");
+ storage.UI.tree.selectedItem = ids;
+ await updated;
+
+ info("Wait until table populated");
+ await waitUntil(() => storage.UI.table.items.size === 2);
+ const items = storage.UI.table.items;
+
+ info("Check the content of the storage panel table");
+ is(items.size, 2);
+ const user1 = JSON.parse(items.get(1).value);
+ const user2 = JSON.parse(items.get(2).value);
+ is(user1.name, "John", "user 1 has the expected name");
+ is(user1.age, 12, "user 1 has the expected age");
+ is(user2.name, "Bob", "user 2 has the expected name");
+ is(user2.age, 24, "user 2 has the expected age");
+
+ await closeWebExtAboutDevtoolsToolbox(devtoolsWindow, window);
+ await removeTemporaryExtension(EXTENSION_NAME, document);
+ await removeTab(tab);
+});