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

Side by Side Diff: LayoutTests/fast/scroll-behavior/resources/scroll-interruption-test.js

Issue 802383003: Run CSSOM smooth scroll animations on the compositor when possible (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Add comment Created 5 years, 11 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 | Annotate | Revision Log
OLDNEW
1 // A SmoothScrollInterruptionTest verifies that in-progress smooth scrolls 1 // A SmoothScrollInterruptionTest verifies that in-progress smooth scrolls
2 // stop when interrupted by an instant scroll, another smooth scroll, a 2 // stop when interrupted by an instant scroll, another smooth scroll, a
3 // touch scroll, or a mouse wheel scroll. 3 // touch scroll, or a mouse wheel scroll.
4 // 4 //
5 // The only SmoothScrollInerruptionTest method that should be called by 5 // The only SmoothScrollInerruptionTest method that should be called by
6 // outside code is run(). 6 // outside code is run().
7 // 7 //
8 // Creates a SmoothScrollInterruptionTest with arguments: 8 // Creates a SmoothScrollInterruptionTest with arguments:
9 // scrollElement - Element being scrolled. 9 // scrollElement - Element being scrolled.
10 // innerPoint - Absolute position (expressed as a dictionary with x and y fields ) 10 // innerPoint - Absolute position (expressed as a dictionary with x and y fields )
(...skipping 29 matching lines...) Expand all
40 return; 40 return;
41 } 41 }
42 42
43 var testCase = this.testCases[this.currentTestCase]; 43 var testCase = this.testCases[this.currentTestCase];
44 this.asyncTest = async_test(testCase.description); 44 this.asyncTest = async_test(testCase.description);
45 45
46 var scrollElement = this.scrollElement; 46 var scrollElement = this.scrollElement;
47 var scrollStartPoint = this.scrollStartPoint; 47 var scrollStartPoint = this.scrollStartPoint;
48 48
49 scrollElement.scrollTop = scrollStartPoint; 49 scrollElement.scrollTop = scrollStartPoint;
50 window.requestAnimationFrame(this.performSmoothScroll.bind(this));
51 }
52
53 SmoothScrollInterruptionTest.prototype.performSmoothScroll = function() {
54 var testCase = this.testCases[this.currentTestCase];
55 var scrollElement = this.scrollElement;
56 var scrollStartPoint = this.scrollStartPoint;
57
50 this.jsScroll(this.scrollEndPoint); 58 this.jsScroll(this.scrollEndPoint);
51 this.asyncTest.step(function() { 59 this.asyncTest.step(function() {
52 assert_equals(scrollElement.scrollTop, scrollStartPoint); 60 assert_equals(scrollElement.scrollTop, scrollStartPoint);
53 }); 61 });
54 62
55 if (scrollElement.scrollTop == this.scrollEndPoint) { 63 if (scrollElement.scrollTop == this.scrollEndPoint) {
56 // We've instant-scrolled, and failed the assert above. 64 // We've instant-scrolled, and failed the assert above.
57 this.testCaseComplete(); 65 this.testCaseComplete();
58 return; 66 return;
59 } 67 }
(...skipping 19 matching lines...) Expand all
79 } 87 }
80 88
81 SmoothScrollInterruptionTest.prototype.testCaseComplete = function() { 89 SmoothScrollInterruptionTest.prototype.testCaseComplete = function() {
82 this.asyncTest.done(); 90 this.asyncTest.done();
83 91
84 this.currentTestCase++; 92 this.currentTestCase++;
85 this.startNextTestCase(); 93 this.startNextTestCase();
86 } 94 }
87 95
88 SmoothScrollInterruptionTest.prototype.run = function() { 96 SmoothScrollInterruptionTest.prototype.run = function() {
89 setup({explicit_done: true}); 97 setup({explicit_done: true, explicit_timeout: true});
90 this.startNextTestCase(); 98 this.startNextTestCase();
91 } 99 }
92 100
93 SmoothScrollInterruptionTest.prototype.allTestCasesComplete = function() { 101 SmoothScrollInterruptionTest.prototype.allTestCasesComplete = function() {
94 done(); 102 done();
95 } 103 }
96 104
97 // A SmoothScrollInterruptionTestCase represents a single way of interrupting 105 // A SmoothScrollInterruptionTestCase represents a single way of interrupting
98 // a smooth scroll and verifying that the smooth scroll gets canceled. 106 // a smooth scroll and verifying that the smooth scroll gets canceled.
99 // 107 //
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
181 } 189 }
182 190
183 function interruptWithWheelScroll(smoothScrollTest) { 191 function interruptWithWheelScroll(smoothScrollTest) {
184 if (window.eventSender) { 192 if (window.eventSender) {
185 window.eventSender.mouseMoveTo(smoothScrollTest.innerPoint.x, smoothScro llTest.innerPoint.y); 193 window.eventSender.mouseMoveTo(smoothScrollTest.innerPoint.x, smoothScro llTest.innerPoint.y);
186 window.eventSender.mouseScrollBy(0, -10); 194 window.eventSender.mouseScrollBy(0, -10);
187 } else { 195 } else {
188 document.write("This test does not work in manual mode."); 196 document.write("This test does not work in manual mode.");
189 } 197 }
190 } 198 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698