summaryrefslogtreecommitdiffstats
path: root/browser/components/customizableui/test/browser_reload_tab.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/customizableui/test/browser_reload_tab.js')
-rw-r--r--browser/components/customizableui/test/browser_reload_tab.js99
1 files changed, 99 insertions, 0 deletions
diff --git a/browser/components/customizableui/test/browser_reload_tab.js b/browser/components/customizableui/test/browser_reload_tab.js
new file mode 100644
index 0000000000..b12f5ee0e9
--- /dev/null
+++ b/browser/components/customizableui/test/browser_reload_tab.js
@@ -0,0 +1,99 @@
+"use strict";
+
+/**
+ * Check that customize mode doesn't break when its tab is reloaded.
+ */
+add_task(async function reload_tab() {
+ let initialTab = gBrowser.selectedTab;
+ let customizeTab = BrowserTestUtils.addTab(gBrowser, "about:blank");
+ gCustomizeMode.setTab(customizeTab);
+ let customizationContainer = document.getElementById(
+ "customization-container"
+ );
+
+ is(
+ customizationContainer.clientWidth,
+ 0,
+ "Customization container shouldn't be visible (X)"
+ );
+ is(
+ customizationContainer.clientHeight,
+ 0,
+ "Customization container shouldn't be visible (Y)"
+ );
+
+ let customizePromise = BrowserTestUtils.waitForEvent(
+ gNavToolbox,
+ "customizationready"
+ );
+ gCustomizeMode.enter();
+ await customizePromise;
+
+ let tabReloaded = new Promise(resolve => {
+ gBrowser.addTabsProgressListener({
+ async onLocationChange(aBrowser) {
+ if (customizeTab.linkedBrowser == aBrowser) {
+ gBrowser.removeTabsProgressListener(this);
+ await Promise.resolve();
+ resolve();
+ }
+ },
+ });
+ });
+ gBrowser.reloadTab(customizeTab);
+ await tabReloaded;
+
+ is(
+ gBrowser.getIcon(customizeTab),
+ "chrome://browser/skin/customize.svg",
+ "Tab should have customize icon"
+ );
+ is(
+ customizeTab.getAttribute("customizemode"),
+ "true",
+ "Tab should be in customize mode"
+ );
+ ok(
+ customizationContainer.clientWidth > 0,
+ "Customization container should be visible (X)"
+ );
+ ok(
+ customizationContainer.clientHeight > 0,
+ "Customization container should be visible (Y)"
+ );
+
+ customizePromise = BrowserTestUtils.waitForEvent(
+ gNavToolbox,
+ "aftercustomization"
+ );
+ await BrowserTestUtils.switchTab(gBrowser, initialTab);
+ await customizePromise;
+
+ customizePromise = BrowserTestUtils.waitForEvent(
+ gNavToolbox,
+ "customizationready"
+ );
+ await BrowserTestUtils.switchTab(gBrowser, customizeTab);
+ await customizePromise;
+
+ is(
+ gBrowser.getIcon(customizeTab),
+ "chrome://browser/skin/customize.svg",
+ "Tab should still have customize icon"
+ );
+ is(
+ customizeTab.getAttribute("customizemode"),
+ "true",
+ "Tab should still be in customize mode"
+ );
+ ok(
+ customizationContainer.clientWidth > 0,
+ "Customization container should still be visible (X)"
+ );
+ ok(
+ customizationContainer.clientHeight > 0,
+ "Customization container should still be visible (Y)"
+ );
+
+ await endCustomizing();
+});