Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

add_task(async function () {
function httpURL(filename) {
let chromeURL = getRootDirectory(gTestPath) + filename;
return chromeURL.replace(
);
}
const newWin = await BrowserTestUtils.openNewBrowserWindow();
const pageUrl = httpURL("helper_scroll_thumb_dragging.html");
const tab = await BrowserTestUtils.openNewForegroundTab(
newWin.gBrowser,
pageUrl
);
await SpecialPowers.spawn(tab.linkedBrowser, [], async () => {
await content.wrappedJSObject.promiseApzFlushedRepaints();
await content.wrappedJSObject.waitUntilApzStable();
});
// Send an explicit click event to make sure the new window accidentally
// doesn't get an "enter-notify-event" on Linux during dragging, the event
// forcibly cancels the dragging state.
await SpecialPowers.spawn(tab.linkedBrowser, [], async () => {
// Creating an object in this content privilege so that the object
// properties can be accessed in below
// promiseNativeMouseEventWithAPZAndWaitForEvent function.
const moveParams = content.window.eval(`({
target: window,
type: "mousemove",
offsetX: 10,
offsetY: 10
})`);
const clickParams = content.window.eval(`({
target: window,
type: "click",
offsetX: 10,
offsetY: 10
})`);
// Send a mouse move event first to make sure the "enter-notify-event"
// happens.
await content.wrappedJSObject.promiseNativeMouseEventWithAPZAndWaitForEvent(
moveParams
);
await content.wrappedJSObject.promiseNativeMouseEventWithAPZAndWaitForEvent(
clickParams
);
});
await SpecialPowers.spawn(tab.linkedBrowser, [], async () => {
const scrollPromise = new Promise(resolve => {
content.window.addEventListener("scroll", resolve, { once: true });
});
const dragFinisher =
await content.wrappedJSObject.promiseVerticalScrollbarDrag(
content.window,
10,
10
);
await scrollPromise;
await dragFinisher();
await content.wrappedJSObject.promiseApzFlushedRepaints();
});
await SpecialPowers.spawn(tab.linkedBrowser, [], async () => {
ok(
content.window.scrollY < 100,
"The root scrollable content shouldn't be scrolled too much"
);
});
await BrowserTestUtils.closeWindow(newWin);
});