summaryrefslogtreecommitdiffstats
path: root/gfx/layers/apz/test/mochitest/helper_bug1346632.html
diff options
context:
space:
mode:
Diffstat (limited to 'gfx/layers/apz/test/mochitest/helper_bug1346632.html')
-rw-r--r--gfx/layers/apz/test/mochitest/helper_bug1346632.html89
1 files changed, 89 insertions, 0 deletions
diff --git a/gfx/layers/apz/test/mochitest/helper_bug1346632.html b/gfx/layers/apz/test/mochitest/helper_bug1346632.html
new file mode 100644
index 0000000000..f91f8159b5
--- /dev/null
+++ b/gfx/layers/apz/test/mochitest/helper_bug1346632.html
@@ -0,0 +1,89 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width; initial-scale=1.0">
+ <title>Dragging the scrollbar on a page with a fixed-positioned element just past the right edge of the content</title>
+ <script type="application/javascript" src="apz_test_native_event_utils.js"></script>
+ <script type="application/javascript" src="apz_test_utils.js"></script>
+ <script src="/tests/SimpleTest/paint_listener.js"></script>
+ <style>
+ body {
+ height: 2000px;
+ }
+ #fixed {
+ width: 240px;
+ height: 100%;
+ position: fixed;
+ top: 0px;
+ right: -240px;
+ z-index: 1000;
+ overflow-y: scroll;
+ }
+ #fixed-content {
+ height: 2000px;
+ }
+ </style>
+ <script type="text/javascript">
+async function test() {
+ var root = document.scrollingElement;
+ var scrollPos = root.scrollTop;
+ var scrollPromise = new Promise((resolve, reject) => {
+ document.addEventListener("scroll", () => {
+ ok(root.scrollTop > scrollPos, "document scrolled after dragging scrollbar");
+ resolve();
+ }, {once: true});
+ });
+
+ if (window.innerWidth == root.clientWidth) {
+ // No scrollbar, abort the test. This can happen e.g. on local macOS runs
+ // with OS settings to only show scrollbars on trackpad/mouse activity.
+ ok(false, "No scrollbars found, cannot run this test!");
+ return;
+ }
+
+ var scrollbarX = (window.innerWidth + root.clientWidth) / 2;
+ // Move the mouse to the scrollbar
+ await promiseNativeMouseEventWithAPZ({
+ target: root,
+ offsetX: scrollbarX,
+ offsetY: 100,
+ type: "mousemove",
+ });
+ // mouse down
+ await promiseNativeMouseEventWithAPZ({
+ target: root,
+ offsetX: scrollbarX,
+ offsetY: 100,
+ type: "mousedown",
+ });
+ // drag vertically
+ await promiseNativeMouseEventWithAPZ({
+ target: root,
+ offsetX: scrollbarX,
+ offsetY: 150,
+ type: "mousemove",
+ });
+ // wait for the scroll listener to fire
+ await scrollPromise;
+ // and release
+ await promiseNativeMouseEventWithAPZ({
+ target: root,
+ offsetX: scrollbarX,
+ offsetY: 150,
+ type: "mouseup",
+ });
+}
+
+waitUntilApzStable()
+.then(test)
+.then(subtestDone, subtestFailed);
+
+ </script>
+</head>
+<body>
+ <div id="fixed">
+ <p id="fixed-content"></p>
+ </div>
+</body>
+</html>