From 26a029d407be480d791972afb5975cf62c9360a6 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Fri, 19 Apr 2024 02:47:55 +0200 Subject: Adding upstream version 124.0.1. Signed-off-by: Daniel Baumann --- ..._inactive_scroller_in_extension_popup_window.js | 137 +++++++++++++++++++++ 1 file changed, 137 insertions(+) create mode 100644 gfx/layers/apz/test/mochitest/browser_test_scrolling_on_inactive_scroller_in_extension_popup_window.js (limited to 'gfx/layers/apz/test/mochitest/browser_test_scrolling_on_inactive_scroller_in_extension_popup_window.js') diff --git a/gfx/layers/apz/test/mochitest/browser_test_scrolling_on_inactive_scroller_in_extension_popup_window.js b/gfx/layers/apz/test/mochitest/browser_test_scrolling_on_inactive_scroller_in_extension_popup_window.js new file mode 100644 index 0000000000..99dccd458c --- /dev/null +++ b/gfx/layers/apz/test/mochitest/browser_test_scrolling_on_inactive_scroller_in_extension_popup_window.js @@ -0,0 +1,137 @@ +/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */ +/* vim: set sts=2 sw=2 et tw=80: */ +"use strict"; + +Services.scriptloader.loadSubScript( + "chrome://mochitests/content/browser/browser/components/extensions/test/browser/head.js", + this +); +Services.scriptloader.loadSubScript( + "chrome://mochitests/content/browser/browser/components/extensions/test/browser/head_browserAction.js", + this +); + +Services.scriptloader.loadSubScript( + "chrome://mochitests/content/browser/gfx/layers/apz/test/mochitest/apz_test_utils.js", + this +); + +Services.scriptloader.loadSubScript( + "chrome://mochitests/content/browser/gfx/layers/apz/test/mochitest/apz_test_native_event_utils.js", + this +); + +add_task(async () => { + let extension = ExtensionTestUtils.loadExtension({ + manifest: { + browser_action: { + default_popup: "popup.html", + browser_style: true, + }, + }, + + files: { + "popup.html": ` + + + + + + +
+
123
+
123
+
+ + `, + }, + }); + + await extension.startup(); + + await SpecialPowers.pushPrefEnv({ + set: [ + ["apz.popups.enabled", true], + ["apz.wr.activate_all_scroll_frames", false], + ["apz.wr.activate_all_scroll_frames_when_fission", false], + ], + }); + + // Open the popup window of the extension. + const browserForPopup = await openBrowserActionPanel( + extension, + undefined, + true + ); + + // Flush APZ repaints and waits for MozAfterPaint to make sure APZ state is + // stable. + await promiseApzFlushedRepaintsInPopup(browserForPopup); + + // A Promise to wait for one scroll event for each scrollable element. + const scrollEventsPromise = SpecialPowers.spawn(browserForPopup, [], () => { + let promises = []; + content.document.querySelectorAll(".overflow").forEach(element => { + let promise = new Promise(resolve => { + element.addEventListener( + "scroll", + () => { + resolve(); + }, + { once: true } + ); + }); + promises.push(promise); + }); + return Promise.all(promises); + }); + + // Send two native mouse wheel events to scroll each scrollable element in the + // popup. + await promiseNativeWheelAndWaitForObserver(browserForPopup, 50, 50, 0, -100); + await promiseNativeWheelAndWaitForObserver(browserForPopup, 150, 50, 0, -100); + + // Flush APZ repaints and waits for MozAfterPaint to make sure the scroll has + // been reflected on the main thread. + const apzPromise = promiseApzFlushedRepaintsInPopup(browserForPopup); + + await Promise.all([apzPromise, scrollEventsPromise]); + + const scrollTops = await SpecialPowers.spawn(browserForPopup, [], () => { + let result = []; + content.document.querySelectorAll(".overflow").forEach(element => { + result.push(element.scrollTop); + }); + return result; + }); + + ok(scrollTops[0] > 0, "Mouse wheel scrolling works in the popup window"); + ok(scrollTops[1] > 0, "Mouse wheel scrolling works in the popup window"); + + await closeBrowserAction(extension); + + await extension.unload(); +}); -- cgit v1.2.3