Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Errors

/* Any copyright is dedicated to the Public Domain.
"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);
});