OLD | NEW |
1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
2 <style> | 2 <style> |
3 | 3 |
4 #container { | 4 #container { |
5 width: 200px; | 5 width: 200px; |
6 height: 200px; | 6 height: 200px; |
7 overflow: scroll; | 7 overflow: scroll; |
8 } | 8 } |
9 | 9 |
10 #content { | 10 #content { |
11 width: 7500px; | 11 width: 750px; |
12 height: 7500px; | 12 height: 750px; |
13 background-color: blue; | 13 background-color: blue; |
14 } | 14 } |
15 | 15 |
16 </style> | 16 </style> |
17 <script src="../../resources/js-test.js"></script> | 17 <script src="../../resources/js-test.js"></script> |
18 <div id="container"> | 18 <div id="container"> |
19 <div id="content"></div> | 19 <div id="content"></div> |
20 </div> | 20 </div> |
21 <div id="console"></div> | 21 <div id="console"></div> |
22 <script> | 22 <script> |
23 | 23 |
24 jsTestIsAsync = true; | 24 jsTestIsAsync = true; |
25 element = document.getElementById("container"); | 25 element = document.getElementById("container"); |
26 | 26 |
27 var testConfigs = [ | 27 var testConfigs = [ |
28 {preciseDeltas: false, expectSmooth: true}, | 28 {preciseDeltas: false, expectSmooth: true}, |
29 {preciseDeltas: true, expectSmooth: false}, | 29 {preciseDeltas: true, expectSmooth: false}, |
30 ]; | 30 ]; |
31 var config; | 31 var config; |
32 var waitingForScroll = false; | 32 var waitingForScroll = false; |
33 var scrollStart, scrollDuration; | 33 var scrollStart, scrollDuration; |
34 | 34 |
35 function nextConfig() { | 35 function nextConfig() { |
36 config = testConfigs.shift(); | 36 config = testConfigs.shift(); |
37 if (!config) | 37 if (!config) |
38 finishJSTest(); | 38 finishJSTest(); |
39 | 39 |
40 element.addEventListener("scroll", onElementScroll); | 40 element.addEventListener("scroll", onElementScroll); |
41 | 41 |
42 eventSender.mouseMoveTo(100, 100); | 42 testRunner.displayAsyncThen(function() { |
43 eventSender.mouseScrollBy(0, -2, /* paged */ false, | 43 eventSender.mouseMoveTo(100, 100); |
44 config.preciseDeltas); | 44 eventSender.mouseScrollBy(0, -2, /* paged */ false, |
45 scrollStart = performance.now(); | 45 config.preciseDeltas); |
| 46 scrollStart = performance.now(); |
| 47 }); |
46 } | 48 } |
47 | 49 |
48 function reset() { | 50 function reset() { |
49 element.removeEventListener("scroll", onElementScroll); | 51 element.removeEventListener("scroll", onElementScroll); |
50 element.scrollTop = 0; | 52 element.scrollTop = 0; |
51 waitingForScroll = false; | 53 waitingForScroll = false; |
| 54 scrollStart = undefined; |
52 } | 55 } |
53 | 56 |
54 function onElementScroll() { | 57 function onElementScroll() { |
55 if (waitingForScroll) { | 58 if (waitingForScroll) { |
56 if (element.scrollTop == 80) { | 59 if (element.scrollTop == 80) { |
57 scrollDuration = performance.now() - scrollStart; | 60 scrollDuration = performance.now() - scrollStart; |
58 shouldBeTrue("scrollDuration < 500"); | 61 shouldBeTrue("scrollDuration < 500"); |
59 reset(); | 62 reset(); |
60 nextConfig(); | 63 nextConfig(); |
61 } | 64 } |
| 65 } else if (!scrollStart) { |
| 66 return; |
62 } else if (config.expectSmooth) { | 67 } else if (config.expectSmooth) { |
63 shouldNotBe("element.scrollTop", "80"); | 68 shouldNotBe("element.scrollTop", "80"); |
64 waitingForScroll = true; | 69 waitingForScroll = true; |
65 } else { | 70 } else { |
66 shouldBe("element.scrollTop", "80"); | 71 shouldBe("element.scrollTop", "80"); |
67 reset(); | 72 reset(); |
68 nextConfig(); | 73 nextConfig(); |
69 } | 74 } |
70 } | 75 } |
71 | 76 |
72 function runTest() { | 77 function runTest() { |
73 internals.settings.setScrollAnimatorEnabled(true); | 78 internals.settings.setScrollAnimatorEnabled(true); |
74 nextConfig(); | 79 nextConfig(); |
75 } | 80 } |
76 | 81 |
77 description("Tests that overflow scrolls are animated, unless the wheel " + | 82 description("Tests that overflow scrolls are animated, unless the wheel " + |
78 "event has precise scrolling deltas."); | 83 "event has precise scrolling deltas."); |
79 | 84 |
80 if (window.eventSender) | 85 if (window.eventSender) |
81 runTest(); | 86 runTest(); |
82 else | 87 else |
83 debug("FAIL: This test requires window.eventSender."); | 88 debug("FAIL: This test requires window.eventSender."); |
84 | 89 |
85 </script> | 90 </script> |
OLD | NEW |