Bug 1448118 - Test for the storage inspector when running inside the browser toolbox r?nchevobbe draft
authorMike Ratcliffe <mratcliffe@mozilla.com>
Fri, 23 Mar 2018 15:36:08 +0000
changeset 779729 00d27e2fc6fa3e35ae7f7eb699af0b770a6b4e6d
parent 779728 4f77446122677ee4d87f7c14ed8de70aa7c7016d
child 779730 d0e72e001145e23c7449ec3344b7231fbf909301
push id105840
push userbmo:mratcliffe@mozilla.com
push dateTue, 10 Apr 2018 12:23:40 +0000
reviewersnchevobbe
bugs1448118
milestone61.0a1
Bug 1448118 - Test for the storage inspector when running inside the browser toolbox r?nchevobbe MozReview-Commit-ID: DrNrHwYVo8U
devtools/server/tests/browser/browser.ini
devtools/server/tests/browser/browser_storage_browser_toolbox_indexeddb.js
--- a/devtools/server/tests/browser/browser.ini
+++ b/devtools/server/tests/browser/browser.ini
@@ -88,16 +88,17 @@ skip-if = true # Needs to be updated for
 skip-if = true # Needs to be updated for async actor destruction
 [browser_perf-realtime-markers.js]
 [browser_perf-recording-actor-01.js]
 skip-if = e10s # Bug 1183605 - devtools/server/tests/browser/ tests are still disabled in E10S
 [browser_perf-recording-actor-02.js]
 skip-if = e10s # Bug 1183605 - devtools/server/tests/browser/ tests are still disabled in E10S
 [browser_perf-samples-01.js]
 [browser_perf-samples-02.js]
+[browser_storage_browser_toolbox_indexeddb.js]
 [browser_storage_cookies-duplicate-names.js]
 [browser_storage_dynamic_windows.js]
 [browser_storage_listings.js]
 [browser_storage_updates.js]
 [browser_stylesheets_getTextEmpty.js]
 [browser_stylesheets_nested-iframes.js]
 [browser_timeline.js]
 [browser_timeline_actors.js]
new file mode 100644
--- /dev/null
+++ b/devtools/server/tests/browser/browser_storage_browser_toolbox_indexeddb.js
@@ -0,0 +1,55 @@
+/* vim: set ft=javascript ts=2 et sw=2 tw=80: */
+/* Any copyright is dedicated to the Public Domain.
+   http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+const { StorageFront } = require("devtools/shared/fronts/storage");
+Services.scriptloader.loadSubScript(
+  "chrome://mochitests/content/browser/devtools/server/tests/browser/storage-helpers.js",
+  this);
+
+add_task(async function() {
+  await pushPref("devtools.chrome.enabled", true);
+  await pushPref("devtools.debugger.remote-enabled", true);
+  await openTabAndSetupStorage(MAIN_DOMAIN + "storage-updates.html");
+  await createIndexedDB();
+
+  initDebuggerServer();
+  let client = new DebuggerClient(DebuggerServer.connectPipe());
+  let form = await connectDebuggerClient(client);
+  let front = StorageFront(client, form);
+
+  await testInternalDBs(front);
+  await clearStorage();
+
+  // Forcing GC/CC to get rid of docshells and windows created by this test.
+  forceCollections();
+  await client.close();
+  forceCollections();
+  DebuggerServer.destroy();
+  forceCollections();
+});
+
+async function createIndexedDB() {
+  let request = indexedDB.open("MyDatabase", 1);
+
+  request.onupgradeneeded = function() {
+    let db = request.result;
+    let store = db.createObjectStore("MyObjectStore", {keyPath: "id"});
+    store.createIndex("NameIndex", ["name.last", "name.first"]);
+  };
+
+  await undefined;
+}
+
+async function testInternalDBs(front) {
+  let data = await front.listStores();
+  let hosts = data.indexedDB.hosts;
+
+  ok(hosts.chrome, `indexedDB hosts contains "chrome"`);
+
+  let path = `["MyDatabase (persistent)","MyObjectStore"]`;
+  let foundDB = hosts.chrome.includes(path);
+  ok(foundDB, `Host "chrome" includes ${path}`);
+}