forked from mirrors/gecko-dev
Depends on D151481 Differential Revision: https://phabricator.services.mozilla.com/D151480
79 lines
2.4 KiB
JavaScript
79 lines
2.4 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
/* import-globals-from ../../../../components/downloads/test/browser/head.js */
|
|
|
|
"use strict";
|
|
|
|
Services.scriptloader.loadSubScript(
|
|
"chrome://mochitests/content/browser/browser/components/downloads/test/browser/head.js",
|
|
this
|
|
);
|
|
|
|
add_task(
|
|
async function test_opening_panel_and_closing_should_not_leave_vsync() {
|
|
await SpecialPowers.pushPrefEnv({
|
|
set: [["browser.download.autohideButton", false]],
|
|
});
|
|
await promiseButtonShown("downloads-button");
|
|
|
|
const downloadsButton = document.getElementById("downloads-button");
|
|
const shownPromise = promisePanelOpened();
|
|
EventUtils.synthesizeNativeMouseEvent({
|
|
type: "click",
|
|
target: downloadsButton,
|
|
atCenter: true,
|
|
});
|
|
await shownPromise;
|
|
|
|
is(DownloadsPanel.panel.state, "open", "Check that panel state is 'open'");
|
|
|
|
await TestUtils.waitForCondition(
|
|
() => !ChromeUtils.vsyncEnabled(),
|
|
"Make sure vsync disabled"
|
|
);
|
|
// Should not already be using vsync
|
|
ok(!ChromeUtils.vsyncEnabled(), "vsync should be off initially");
|
|
|
|
if (
|
|
AppConstants.platform == "linux" &&
|
|
DownloadsPanel.panel.state != "open"
|
|
) {
|
|
// Panels sometime receive spurious popuphiding events on Linux.
|
|
// Given the main target of this test is Windows, avoid causing
|
|
// intermittent failures and just make the test return early.
|
|
todo(
|
|
false,
|
|
"panel should still be 'open', current state: " +
|
|
DownloadsPanel.panel.state
|
|
);
|
|
return;
|
|
}
|
|
|
|
const hiddenPromise = BrowserTestUtils.waitForEvent(
|
|
DownloadsPanel.panel,
|
|
"popuphidden"
|
|
);
|
|
EventUtils.synthesizeKey("VK_ESCAPE", {}, window);
|
|
await hiddenPromise;
|
|
await TestUtils.waitForCondition(
|
|
() => !ChromeUtils.vsyncEnabled(),
|
|
"wait for vsync to be disabled again"
|
|
);
|
|
|
|
ok(!ChromeUtils.vsyncEnabled(), "vsync should still be off");
|
|
is(
|
|
DownloadsPanel.panel.state,
|
|
"closed",
|
|
"Check that panel state is 'closed'"
|
|
);
|
|
|
|
// Move the cursor to the center of the browser window where hopefully it
|
|
// will cause less intermittent failures in the next tests than keeping it
|
|
// in the toolbar area.
|
|
EventUtils.synthesizeNativeMouseEvent({
|
|
type: "mousemove",
|
|
target: document.documentElement,
|
|
atCenter: true,
|
|
});
|
|
}
|
|
);
|