Backed out changeset 056eee9ef326 (bug 1873960) for causing multiple failures(lints and mochitest) CLOSED TREE
This commit is contained in:
@@ -158,111 +158,3 @@ add_task(async function test_permission_prompt_closes_fullscreen() {
|
||||
BrowserTestUtils.removeTab(tab);
|
||||
await SpecialPowers.popPrefEnv();
|
||||
});
|
||||
|
||||
function triggerMainCommand(popup) {
|
||||
let notifications = popup.childNodes;
|
||||
ok(!!notifications.length, "at least one notification displayed");
|
||||
let notification = notifications[0];
|
||||
info("Triggering main command for notification " + notification.id);
|
||||
EventUtils.synthesizeMouseAtCenter(notification.button, {});
|
||||
}
|
||||
|
||||
add_task(
|
||||
async function test_permission_prompt_closes_fullscreen_and_extends_security_delay() {
|
||||
const TEST_SECURITY_DELAY = 500;
|
||||
await SpecialPowers.pushPrefEnv({
|
||||
set: [
|
||||
["dom.webnotifications.requireuserinteraction", false],
|
||||
["permissions.fullscreen.allowed", false],
|
||||
["security.notification_enable_delay", TEST_SECURITY_DELAY],
|
||||
// macOS is not affected by the sec delay bug because it uses the native
|
||||
// macOS full screen API. Revert back to legacy behavior so we can also
|
||||
// test on macOS. If this pref is removed in the future we can consider
|
||||
// skipping the testcase for macOS altogether.
|
||||
["full-screen-api.macos-native-full-screen", false],
|
||||
],
|
||||
});
|
||||
|
||||
let tab = await BrowserTestUtils.openNewForegroundTab(
|
||||
gBrowser,
|
||||
"https://example.com"
|
||||
);
|
||||
let browser = tab.linkedBrowser;
|
||||
info("Entering DOM full-screen");
|
||||
await changeFullscreen(browser, true);
|
||||
|
||||
let popupShown = BrowserTestUtils.waitForPopupEvent(
|
||||
window.PopupNotifications.panel,
|
||||
"shown"
|
||||
);
|
||||
let fullScreenExit = waitForFullScreenState(browser, false);
|
||||
|
||||
info("Requesting notification permission");
|
||||
requestNotificationPermission(browser).catch(() => {});
|
||||
await popupShown;
|
||||
|
||||
let notificationHiddenPromise = BrowserTestUtils.waitForPopupEvent(
|
||||
window.PopupNotifications.panel,
|
||||
"hidden"
|
||||
);
|
||||
|
||||
info("Waiting for full-screen exit");
|
||||
await fullScreenExit;
|
||||
|
||||
info("Wait for original security delay to expire.");
|
||||
SimpleTest.requestFlakyTimeout(
|
||||
"Wait for original security delay to expire."
|
||||
);
|
||||
// eslint-disable-next-line mozilla/no-arbitrary-setTimeout
|
||||
await new Promise(resolve => setTimeout(resolve, TEST_SECURITY_DELAY));
|
||||
|
||||
info(
|
||||
"Trigger main action via button click during the extended security delay"
|
||||
);
|
||||
triggerMainCommand(PopupNotifications.panel);
|
||||
|
||||
let notification = PopupNotifications.getNotification(
|
||||
"web-notifications",
|
||||
gBrowser.selectedBrowser
|
||||
);
|
||||
ok(
|
||||
notification &&
|
||||
!notification.dismissed &&
|
||||
BrowserTestUtils.is_visible(PopupNotifications.panel.firstChild),
|
||||
"Notification should still be open because we clicked during the security delay."
|
||||
);
|
||||
// If the notification is no longer shown (test failure) skip the remaining
|
||||
// checks.
|
||||
if (!notification) {
|
||||
return;
|
||||
}
|
||||
|
||||
ok(notification.timeShown > performance.now(), "Notification timeShown property should be in the future, because the security delay was extended.");
|
||||
|
||||
// Ensure that once the security delay has passed the notification can be
|
||||
// closed again.
|
||||
let fakeTimeShown = TEST_SECURITY_DELAY + 500;
|
||||
info(`Manually set timeShown to ${fakeTimeShown}ms in the past.`);
|
||||
notification.timeShown = performance.now() - fakeTimeShown;
|
||||
|
||||
info("Trigger main action via button click outside security delay");
|
||||
triggerMainCommand(PopupNotifications.panel);
|
||||
|
||||
info("Wait for panel to be hidden.");
|
||||
await notificationHiddenPromise;
|
||||
|
||||
ok(
|
||||
!PopupNotifications.getNotification(
|
||||
"web-notifications",
|
||||
gBrowser.selectedBrowser
|
||||
),
|
||||
"Should not longer see the notification."
|
||||
);
|
||||
|
||||
// Cleanup
|
||||
BrowserTestUtils.removeTab(tab);
|
||||
await SpecialPowers.popPrefEnv();
|
||||
// Remove the granted notification permission.
|
||||
Services.perms.removeAll();
|
||||
}
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user