tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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 });