browser_webconsole_previewers_https.js (2190B)
1 /* Any copyright is dedicated to the Public Domain. 2 * http://creativecommons.org/publicdomain/zero/1.0/ */ 3 4 "use strict"; 5 6 // Those cases should be added into AllJavascriptTypes.mjs (so they can be consumed in 7 // browser_webconsole_previewers.js) when Bug 1967917 is resolved (so we can have a secure context) 8 9 add_task(async function () { 10 const hud = await openNewTabAndConsole(URL_ROOT_COM_SSL + "test-blank.html"); 11 12 SpecialPowers.spawn(gBrowser.selectedBrowser, [], function () { 13 const openReq = content.indexedDB.open("idb-bug-demo", 1); 14 openReq.onupgradeneeded = e => { 15 e.target.result.createObjectStore("demo", { 16 keyPath: "id", 17 }); 18 }; 19 openReq.onsuccess = e => { 20 const db = e.target.result; 21 const store = db.transaction(["demo"], "readonly").objectStore("demo"); 22 23 const idbRequest = store.get("unknown"); 24 idbRequest.onsuccess = () => { 25 content.console.log(idbRequest); 26 db.close(); 27 }; 28 }; 29 }); 30 31 const message = await waitForMessageByType(hud, "IDBRequest", ".console-api"); 32 is( 33 message.node.querySelector(".message-body").innerText.trim(), 34 'IDBRequest { result: undefined, error: null, source: IDBObjectStore, transaction: IDBTransaction, readyState: "done", onsuccess: Restricted, onerror: null }', 35 "Got expected IDBRequest object, with undefined result property" 36 ); 37 38 const oi = message.node.querySelector(".tree"); 39 // Expand the root node 40 await expandObjectInspectorNode(oi.querySelector(".tree-node")); 41 const resultPropertyTreeItemEl = Array.from( 42 oi.querySelectorAll(".object-node") 43 ).find(el => el.querySelector(".object-label")?.innerText === "result"); 44 is( 45 resultPropertyTreeItemEl.innerText, 46 "result: undefined", 47 "Got expected result property in the object inspector for the IDBRequest" 48 ); 49 50 // This can't be placed in a registerCleanupFunction because it throws (The operation is insecure) 51 await SpecialPowers.spawn(gBrowser.selectedBrowser, [], async function () { 52 const { promise, resolve } = content.Promise.withResolvers(); 53 content.indexedDB.deleteDatabase("idb-bug-demo").onsuccess = resolve; 54 await promise; 55 }); 56 });