| Index: third_party/WebKit/LayoutTests/virtual/threaded/fast/scroll-behavior/smooth-scroll/mousewheel-scroll-interrupted.html
|
| diff --git a/third_party/WebKit/LayoutTests/virtual/threaded/fast/scroll-behavior/smooth-scroll/mousewheel-scroll-interrupted.html b/third_party/WebKit/LayoutTests/virtual/threaded/fast/scroll-behavior/smooth-scroll/mousewheel-scroll-interrupted.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..154b1153b5d2e3dbaeaa8c1e8e1a95b42cab9b62
|
| --- /dev/null
|
| +++ b/third_party/WebKit/LayoutTests/virtual/threaded/fast/scroll-behavior/smooth-scroll/mousewheel-scroll-interrupted.html
|
| @@ -0,0 +1,57 @@
|
| +<!DOCTYPE html>
|
| +<script src="../../../../../resources/js-test.js"></script>
|
| +<style>
|
| + body {
|
| + height: 2000px;
|
| + width: 2000px;
|
| + }
|
| +</style>
|
| +
|
| +<script>
|
| +window.jsTestIsAsync = true;
|
| +
|
| +description("This test ensures that input driven user scrolls get cancelled\
|
| + by non-input driven scrolls.");
|
| +
|
| +// From ScrollAnimatorCompositorCoordinator::RunState.
|
| +var IDLE = 0;
|
| +var RUNNING_ON_COMPOSITOR = 2;
|
| +var WAITING_TO_CANCEL_ON_COMPOSITOR = 5;
|
| +function isOrWillBeCancelled(node) {
|
| + var state = internals.getScrollAnimationState(node);
|
| + return state == WAITING_TO_CANCEL_ON_COMPOSITOR || state == IDLE;
|
| +}
|
| +
|
| +function runTest() {
|
| + if (document.scrollingElement.scrollTop == 0) {
|
| + requestAnimationFrame(runTest);
|
| + } else {
|
| + shouldBeTrue("internals.getScrollAnimationState(document) " +
|
| + "== RUNNING_ON_COMPOSITOR");
|
| +
|
| + // Programmatic scroll should cancel smooth scroll.
|
| + document.scrollingElement.scrollBy({top: 1, behavior: "smooth"});
|
| + shouldBeTrue("isOrWillBeCancelled(document)");
|
| + shouldBecomeEqual("document.scrollingElement.scrollTop < 40 && " +
|
| + "document.scrollingElement.scrollLeft == 0", "true", finishJSTest);
|
| + }
|
| +}
|
| +
|
| +onload = function() {
|
| + if (!window.eventSender || !window.internals) {
|
| + finishJSTest();
|
| + return;
|
| + }
|
| +
|
| + // Turn on smooth scrolling.
|
| + internals.settings.setScrollAnimatorEnabled(true);
|
| +
|
| + document.scrollingElement.scrollTop = 0;
|
| +
|
| + // Scroll down 1 tick (40px).
|
| + eventSender.mouseMoveTo(20, 20);
|
| + eventSender.mouseScrollBy(0, -1);
|
| +
|
| + requestAnimationFrame(runTest);
|
| +}
|
| +</script>
|
|
|