summaryrefslogtreecommitdiffstats
path: root/devtools/client/framework/test/helper_disable_cache.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/client/framework/test/helper_disable_cache.js')
-rw-r--r--devtools/client/framework/test/helper_disable_cache.js143
1 files changed, 143 insertions, 0 deletions
diff --git a/devtools/client/framework/test/helper_disable_cache.js b/devtools/client/framework/test/helper_disable_cache.js
new file mode 100644
index 0000000000..ddfdde17e2
--- /dev/null
+++ b/devtools/client/framework/test/helper_disable_cache.js
@@ -0,0 +1,143 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+// This file assumes we have head.js globals for the scope where this is loaded.
+/* import-globals-from head.js */
+
+/* exported initTab, checkCacheStateForAllTabs, setDisableCacheCheckboxChecked,
+ finishUp */
+
+// Common code shared by browser_toolbox_options_disable_cache-*.js
+const TEST_URI = URL_ROOT + "browser_toolbox_options_disable_cache.sjs";
+var tabs = [
+ {
+ title: "Tab 0",
+ desc: "Toggles cache on.",
+ startToolbox: true,
+ },
+ {
+ title: "Tab 1",
+ desc: "Toolbox open before Tab 1 toggles cache.",
+ startToolbox: true,
+ },
+ {
+ title: "Tab 2",
+ desc: "Opens toolbox after Tab 1 has toggled cache. Also closes and opens.",
+ startToolbox: false,
+ },
+ {
+ title: "Tab 3",
+ desc: "No toolbox",
+ startToolbox: false,
+ },
+];
+
+async function initTab(tabX, startToolbox) {
+ tabX.tab = await addTab(TEST_URI);
+ tabX.target = await TargetFactory.forTab(tabX.tab);
+
+ if (startToolbox) {
+ tabX.toolbox = await gDevTools.showToolbox(tabX.target, "options");
+ }
+}
+
+async function checkCacheStateForAllTabs(states) {
+ for (let i = 0; i < tabs.length; i++) {
+ const tab = tabs[i];
+ await checkCacheEnabled(tab, states[i]);
+ }
+}
+
+async function checkCacheEnabled(tabX, expected) {
+ gBrowser.selectedTab = tabX.tab;
+
+ await reloadTab(tabX);
+
+ const oldGuid = await SpecialPowers.spawn(
+ gBrowser.selectedBrowser,
+ [],
+ function() {
+ const doc = content.document;
+ const h1 = doc.querySelector("h1");
+ return h1.textContent;
+ }
+ );
+
+ await reloadTab(tabX);
+
+ const guid = await SpecialPowers.spawn(
+ gBrowser.selectedBrowser,
+ [],
+ function() {
+ const doc = content.document;
+ const h1 = doc.querySelector("h1");
+ return h1.textContent;
+ }
+ );
+
+ if (expected) {
+ is(guid, oldGuid, tabX.title + " cache is enabled");
+ } else {
+ isnot(guid, oldGuid, tabX.title + " cache is not enabled");
+ }
+}
+
+async function setDisableCacheCheckboxChecked(tabX, state) {
+ gBrowser.selectedTab = tabX.tab;
+
+ const panel = tabX.toolbox.getCurrentPanel();
+ const cbx = panel.panelDoc.getElementById("devtools-disable-cache");
+
+ if (cbx.checked !== state) {
+ info("Setting disable cache checkbox to " + state + " for " + tabX.title);
+ const onReconfigured = tabX.toolbox.once("cache-reconfigured");
+ cbx.click();
+
+ // We have to wait for the reconfigure request to be finished before reloading
+ // the page.
+ await onReconfigured;
+ }
+}
+
+function reloadTab(tabX) {
+ const browser = gBrowser.selectedBrowser;
+
+ const reloadTabPromise = BrowserTestUtils.browserLoaded(browser).then(
+ function() {
+ info("Reloaded tab " + tabX.title);
+ }
+ );
+
+ info("Reloading tab " + tabX.title);
+ SpecialPowers.spawn(browser, [], () => {
+ content.location.reload(false);
+ });
+
+ return reloadTabPromise;
+}
+
+async function destroyTab(tabX) {
+ const toolbox = gDevTools.getToolbox(tabX.target);
+
+ let onceDestroyed = promise.resolve();
+ if (toolbox) {
+ onceDestroyed = gDevTools.once("toolbox-destroyed");
+ }
+
+ info("Removing tab " + tabX.title);
+ gBrowser.removeTab(tabX.tab);
+ info("Removed tab " + tabX.title);
+
+ info("Waiting for toolbox-destroyed");
+ await onceDestroyed;
+}
+
+async function finishUp() {
+ for (const tab of tabs) {
+ await destroyTab(tab);
+ }
+
+ tabs = null;
+}