OLD | NEW |
| (Empty) |
1 <!DOCTYPE html> | |
2 <html> | |
3 <head><title>Tests that a momentum scroll (i.e. a fling) doesn't jump vertically
</title></head> | |
4 <body> | |
5 <div id="box" style="height:800px; background: red; border:2px solid black; widt
h:100%"></div> | |
6 <div id="info">This test requires DRT.</div> | |
7 <script> | |
8 if (window.internals) { | |
9 document.getElementById('info').style.visibility = 'hidden'; | |
10 internals.settings.setMockScrollbarsEnabled(false); | |
11 | |
12 // These trackpad scroll events first go up, then left, then down & left
. All events except the last 2 were obtained by recording real gesture data. The
goal is to get rubber-banding to occur while maintaining high velocity in the X
and Y directions. | |
13 var trackpadScrollEvents = [ | |
14 ["scrollBegin"], | |
15 ["scroll", -1, 4], | |
16 ["scroll", -5, 14], | |
17 ["scroll", -5, 23], | |
18 ["scroll", -12, 57], | |
19 ["scroll", -11, 68], | |
20 ["scroll", -9, 85], | |
21 ["scroll", -3, 77], | |
22 ["scroll", -1, 109], | |
23 ["scroll", 4, 105], | |
24 ["scroll", 22, 106], | |
25 ["scroll", 47, 60], | |
26 ["scroll", 102, 32], | |
27 ["scroll", 210, -1], | |
28 ["scroll", 281, -23], | |
29 ["scroll", 453, -103], | |
30 ["scroll", 600, -223], | |
31 ["scroll", 800, -303], | |
32 ["scrollEnd"], | |
33 ["momentumBegin", 555, -120], | |
34 ["momentumEnd"] | |
35 ]; | |
36 | |
37 function queueTimeout(index) | |
38 { | |
39 setTimeout(function() { runTimeout(index); }, 5); | |
40 } | |
41 | |
42 // Replays the event at position |index|. | |
43 function runTimeout(index) | |
44 { | |
45 var name = trackpadScrollEvents[index][0]; | |
46 if (name == "scrollBegin") { | |
47 eventSender.trackpadScrollBegin(); | |
48 } else if (name == "scroll") { | |
49 var deltaX = trackpadScrollEvents[index][1]; | |
50 var deltaY = trackpadScrollEvents[index][2]; | |
51 eventSender.trackpadScroll(deltaX, deltaY, false, true); | |
52 } else if (name == "scrollEnd") { | |
53 eventSender.trackpadScrollEnd(); | |
54 } else if (name == "momentumBegin") { | |
55 var deltaX = trackpadScrollEvents[index][1]; | |
56 var deltaY = trackpadScrollEvents[index][2]; | |
57 eventSender.mouseMomentumBegin2(deltaX, deltaY, false, true); | |
58 } else if (name == "momentumEnd") { | |
59 eventSender.mouseMomentumEnd(); | |
60 } | |
61 | |
62 // Queues another event, if one is available. | |
63 if (index + 1 < trackpadScrollEvents.length) { | |
64 queueTimeout(index + 1); | |
65 } | |
66 } | |
67 | |
68 // Queue the first event for replay. | |
69 queueTimeout(0); | |
70 | |
71 // The ScrollElasticityController receives callbacks every 16ms, and ani
mates the release effect of the rubber-band. Wait for 2 seconds to give the anim
ation time to settle. | |
72 testRunner.waitUntilDone(); | |
73 setTimeout(function() { | |
74 document.getElementById('box').style.background = 'green'; | |
75 // The left margin should have rebounded back to 0. | |
76 if (document.body.scrollLeft != 0) { | |
77 document.getElementById('box').style.background = 'yellow'; | |
78 } | |
79 // The content should be scrolled to the bottom. | |
80 var expectedScrollTop = document.documentElement.scrollHeight - docu
ment.documentElement.clientHeight; | |
81 if (document.body.scrollTop != expectedScrollTop) { | |
82 document.getElementById('box').style.background = 'yellow'; | |
83 } | |
84 testRunner.notifyDone(); | |
85 }, 2000); | |
86 } | |
87 </script> | |
88 </body> | |
89 </html> | |
OLD | NEW |