Skip to content

Commit

Permalink
Bug 1866284 - Add tests for clearing the status panel when entering D…
Browse files Browse the repository at this point in the history
…OM fullscreen (bug 1850993) and for not showing network status in DOM fullscreen (bug 1853896). r=mak

Differential Revision: https://phabricator.services.mozilla.com/D196436
  • Loading branch information
daogottwald committed Dec 18, 2023
1 parent 9fbbab6 commit 2841798
Show file tree
Hide file tree
Showing 2 changed files with 97 additions and 0 deletions.
2 changes: 2 additions & 0 deletions browser/base/content/test/fullscreen/browser.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ support-files = [
"fullscreen_frame.html",
]

["browser_domFS_statuspanel.js"]

["browser_fullscreen_api_fission.js"]
https_first_disabled = true
support-files = [
Expand Down
95 changes: 95 additions & 0 deletions browser/base/content/test/fullscreen/browser_domFS_statuspanel.js
Original file line number Diff line number Diff line change
@@ -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.is_visible(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.is_visible(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.is_visible(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.is_visible(statuspanel),
"statuspanel with network status should should hide when entering DOM FS"
);
}
);
});

0 comments on commit 2841798

Please sign in to comment.