Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(479)

Side by Side Diff: third_party/WebKit/LayoutTests/virtual/threaded/fast/scroll-behavior/smooth-scroll/main-thread-scrolling-reason-correctness.html

Issue 1648293003: Fix smooth scroll jump when switching scroll handling between MT and CC (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: skip irrelevant test on mac Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 <!DOCTYPE html>
2 <script src="../../../../../resources/js-test.js"></script>
3 <style>
4 body {
5 width: 2000px;
6 height: 2000px;
7 }
8 </style>
9
10 <script>
11 var jsTestIsAsync = true;
12
13 description("This test verifies that the ScrollAnimator can schedule " +
14 "animations on the compositor when it adds a temporary main thread " +
15 "scrolling reason.");
16
17 // From ScrollingCoordinator::mainThreadScrollingReasonsAsText.
18 var ANIMATING_TEXT = 'Animating scroll on main thread';
19 // From ScrollAnimatorCompositorCoordinator::RunState.
20 var RUNNING_ON_COMPOSITOR = 2;
21 var RUNNING_ON_COMPOSITOR_BUT_NEEDS_UPDATE = 3;
22
23 function finishTest() {
24 requestAnimationFrame(function() {
25 // Check that main thread scrolling reason is removed.
26 shouldBeTrue("internals.mainThreadScrollingReasons(document) == ''");
27 finishJSTest();
28 });
29 }
30
31 function needsUpdateOrRunningOnCompositor(node) {
32 var state = internals.getScrollAnimationState(node);
33 return state == RUNNING_ON_COMPOSITOR ||
34 state == RUNNING_ON_COMPOSITOR_BUT_NEEDS_UPDATE;
35 }
36
37 function runTest() {
38 if (document.scrollingElement.scrollTop == 0) {
39 requestAnimationFrame(runTest);
40 } else {
41 // Check that initiated by main thread and running on the compositor.
42 shouldBeTrue("internals.getScrollAnimationState(document) " +
43 "== RUNNING_ON_COMPOSITOR");
44 // Check that main thread scrolling reason is added.
45 shouldBeTrue("internals.mainThreadScrollingReasons(document) " +
46 "== ANIMATING_TEXT");
47
48 // Scroll 1 more tick down.
49 eventSender.mouseScrollBy(0, -1);
50 shouldBeTrue("internals.getScrollAnimationState(document) " +
51 "== RUNNING_ON_COMPOSITOR_BUT_NEEDS_UPDATE");
52
53 requestAnimationFrame(function() {
54 // Check that the temporary main thread scrolling is still there
55 // and running on the compositor.
56 shouldBeTrue("internals.mainThreadScrollingReasons(document) " +
57 "== ANIMATING_TEXT");
58 shouldBeTrue("needsUpdateOrRunningOnCompositor(document)");
59 shouldBecomeEqual("document.scrollingElement.scrollTop == 80",
60 "true", finishTest);
61 });
62 }
63 }
64
65 onload = function() {
66 if (!window.eventSender || !window.internals) {
67 debug("This test requires window.eventSender.")
68 finishJSTest();
69 return;
70 }
71 internals.settings.setScrollAnimatorEnabled(true);
72
73 document.scrollingElement.scrollTop = 0;
74
75 // Scroll 1 ticks down.
76 eventSender.mouseMoveTo(20, 20);
77 eventSender.mouseScrollBy(0, -1);
78 runTest();
79 };
80
81 </script>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698