summaryrefslogtreecommitdiffstats
path: root/browser/base/content/test/fullscreen/browser_domFS_statuspanel.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/base/content/test/fullscreen/browser_domFS_statuspanel.js')
-rw-r--r--browser/base/content/test/fullscreen/browser_domFS_statuspanel.js95
1 files changed, 95 insertions, 0 deletions
diff --git a/browser/base/content/test/fullscreen/browser_domFS_statuspanel.js b/browser/base/content/test/fullscreen/browser_domFS_statuspanel.js
new file mode 100644
index 0000000000..b6f6f9bc5e
--- /dev/null
+++ b/browser/base/content/test/fullscreen/browser_domFS_statuspanel.js
@@ -0,0 +1,95 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+/* Tests that the status panel gets cleared when entering DOM fullscreen
+ * (bug 1850993), and that we don't show network statuses in DOM fullscreen
+ * (bug 1853896). */
+
+// DOM FS tests tends to trigger a race in the fullscreen time telemetry,
+// where the fullscreen enter and fullscreen exit events (which use the
+// same histogram ID) overlap. That causes TelemetryStopwatch to log an
+// error.
+SimpleTest.ignoreAllUncaughtExceptions(true);
+
+let statuspanel = document.getElementById("statuspanel");
+let statuspanelLabel = document.getElementById("statuspanel-label");
+
+async function withDomFsTab(beforeEnter, afterEnter) {
+ let url = "https://example.com/";
+ let tab = await BrowserTestUtils.openNewForegroundTab(
+ gBrowser,
+ url,
+ true,
+ true
+ );
+ let browser = tab.linkedBrowser;
+
+ await beforeEnter();
+ info("Entering DOM fullscreen");
+ await changeFullscreen(browser, true);
+ is(document.fullscreenElement, browser, "Entered DOM fullscreen");
+ await afterEnter();
+
+ await BrowserTestUtils.removeTab(tab);
+}
+
+add_task(async function test_overlink() {
+ const overlink = "https://example.com";
+ let setAndCheckOverLink = async info => {
+ XULBrowserWindow.setOverLink(overlink);
+ await TestUtils.waitForCondition(
+ () => BrowserTestUtils.isVisible(statuspanel),
+ `statuspanel should become visible after setting overlink ${info}`
+ );
+ is(
+ statuspanelLabel.value,
+ BrowserUIUtils.trimURL(overlink),
+ `statuspanel has expected value after setting overlink ${info}`
+ );
+ };
+ await withDomFsTab(
+ async function () {
+ await setAndCheckOverLink("outside of DOM FS");
+ },
+ async function () {
+ await TestUtils.waitForCondition(
+ () => !BrowserTestUtils.isVisible(statuspanel),
+ "statuspanel with overlink should hide when entering DOM FS"
+ );
+ await setAndCheckOverLink("while in DOM FS");
+ }
+ );
+});
+
+add_task(async function test_networkstatus() {
+ await withDomFsTab(
+ async function () {
+ XULBrowserWindow.status = "test1";
+ XULBrowserWindow.busyUI = true;
+ StatusPanel.update();
+ ok(
+ BrowserTestUtils.isVisible(statuspanel),
+ "statuspanel is visible before entering DOM FS"
+ );
+ is(statuspanelLabel.value, "test1", "statuspanel has expected value");
+ },
+ async function () {
+ is(
+ XULBrowserWindow.busyUI,
+ true,
+ "browser window still considered busy (i.e. loading stuff) when entering DOM FS"
+ );
+ is(
+ XULBrowserWindow.status,
+ "",
+ "network status cleared when entering DOM FS"
+ );
+ ok(
+ !BrowserTestUtils.isVisible(statuspanel),
+ "statuspanel with network status should should hide when entering DOM FS"
+ );
+ }
+ );
+});