From 6bf0a5cb5034a7e684dcc3500e841785237ce2dd Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 19:32:43 +0200 Subject: Adding upstream version 1:115.7.0. Signed-off-by: Daniel Baumann --- .../test/performance/browser_panel_vsync.js | 69 ++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 browser/base/content/test/performance/browser_panel_vsync.js (limited to 'browser/base/content/test/performance/browser_panel_vsync.js') diff --git a/browser/base/content/test/performance/browser_panel_vsync.js b/browser/base/content/test/performance/browser_panel_vsync.js new file mode 100644 index 0000000000..73c56b9095 --- /dev/null +++ b/browser/base/content/test/performance/browser_panel_vsync.js @@ -0,0 +1,69 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +"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'" + ); + } +); -- cgit v1.2.3