summaryrefslogtreecommitdiffstats
path: root/gfx/layers/apz/test/mochitest/helper_overscroll_behavior_bug1494440.html
diff options
context:
space:
mode:
Diffstat (limited to 'gfx/layers/apz/test/mochitest/helper_overscroll_behavior_bug1494440.html')
-rw-r--r--gfx/layers/apz/test/mochitest/helper_overscroll_behavior_bug1494440.html50
1 files changed, 50 insertions, 0 deletions
diff --git a/gfx/layers/apz/test/mochitest/helper_overscroll_behavior_bug1494440.html b/gfx/layers/apz/test/mochitest/helper_overscroll_behavior_bug1494440.html
new file mode 100644
index 0000000000..3f12e36102
--- /dev/null
+++ b/gfx/layers/apz/test/mochitest/helper_overscroll_behavior_bug1494440.html
@@ -0,0 +1,50 @@
+<head>
+ <meta name="viewport" content="width=device-width; initial-scale=1.0">
+ <title>Inactive iframe with overscroll-behavior</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>
+</head>
+<body>
+ <iframe id="scroll" srcdoc="<!doctype html><html style='overscroll-behavior:none; overflow: auto;'><div style='width:100px;height:2000px;'>">
+ </iframe>
+ <div style="height: 5000px;"></div><!-- So the page is scrollable as well -->
+
+ <script type="application/javascript">
+
+async function test() {
+ var iframe = document.getElementById("scroll");
+ var iframeWindow = iframe.contentWindow;
+
+ // scroll the iframe to the bottom, such that a subsequent scroll on it
+ // _would_ hand off to the page if overscroll-behavior allowed it
+ iframeWindow.scrollTo(0, iframeWindow.scrollMaxY);
+ await promiseApzFlushedRepaints();
+ is(iframeWindow.scrollY, iframeWindow.scrollMaxY, "iframe has scrolled to the bottom");
+
+ // Scroll over the iframe, and make sure that the page
+ // does not scroll.
+ // We can't wait for a "scroll" event unconditionally, since if the platform
+ // behaviour we are testing is correct (overscroll-behavior is respected),
+ // one will never arrive.
+ var waitForScroll = false;
+ await promiseMoveMouseAndScrollWheelOver(iframeWindow, 100, 100, waitForScroll);
+ // However, we need to give a potential "scroll" event a chance to be dispatched,
+ // so that if the platform behaviour we are testing is incorrect (overscroll-behavior)
+ // is not respected, we catch it.
+ await promiseApzFlushedRepaints();
+ is(window.scrollY, 0, "overscroll-behavior was respected");
+}
+
+waitUntilApzStable()
+.then(test)
+.then(subtestDone, subtestFailed);
+
+ </script>
+ <style>
+ #scroll {
+ width: 200px;
+ height: 500px;
+ }
+ </style>
+</body>