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

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

Issue 134443003: Implement CSSOM Smooth Scroll API (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Rebased Created 6 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 | Annotate | Revision Log
OLDNEW
(Empty)
1 (function() {
Ian Vollick 2014/02/06 16:02:31 Please add a comment describing what a scroll beha
2 var instantTest = async_test('instant scrolls');
3 var smoothTest = async_test('smooth scrolls');
4 var testElement;
5 var testEventTarget;
6 var instantScrolls;
7 var smoothScrolls;
8 var runSingleTestCase;
9 var computeEndX;
10 var computeEndY;
11 var currentSmoothTest = 0;
12 var startX;
13 var startY;
14 var endX;
15 var endY;
16
17 function smoothScrollListener()
18 {
19 if (smoothScrolls[currentSmoothTest].waitForEnd) {
Ian Vollick 2014/02/06 16:02:31 This is a bit nitty, but I find the bucket of glob
20 if (testElement.scrollLeft == endX && testElement.scrollTop == endY)
21 endSmoothTestCase();
22 return;
23 }
24 // Wait for an intermediate frame.
25 if ((testElement.scrollLeft != startX || testElement.scrollTop != startY ) &&
26 (testElement.scrollLeft != endX || testElement.scrollTop != endY)) {
27 testElement.scrollLeft = {x: endX, behavior: "instant"};
28 testElement.scrollTop = {y: endY, behavior: "instant"};
29 endSmoothTestCase();
30 }
31 }
32
33 function runInstantTestCases()
34 {
35 for (var i = 0; i < instantScrolls.length; i++) {
36 startX = testElement.scrollLeft;
37 startY = testElement.scrollTop;
38 endX = computeEndX(instantScrolls[i], startX);
39 endY = computeEndY(instantScrolls[i], startY);
40 testElement.style.scrollBehavior = instantScrolls[i].css;
Ian Vollick 2014/02/06 16:02:31 A comment here would be helpful (that explains thi
41 runSingleTestCase(instantScrolls[i]);
42 instantTest.step(function() {
43 assert_equals(testElement.scrollLeft + ", " + testElement.scroll Top, endX + ", " + endY);
44 });
45 }
46 instantTest.done();
47 }
48
49 function startNextSmoothTestCase()
50 {
51 if (currentSmoothTest >= smoothScrolls.length) {
52 smoothTest.done();
53 testEventTarget.removeEventListener("scroll", smoothScrollListener);
54 return;
55 }
56
57 startX = testElement.scrollLeft;
58 startY = testElement.scrollTop;
59 endX = computeEndX(smoothScrolls[currentSmoothTest], startX);
60 endY = computeEndY(smoothScrolls[currentSmoothTest], startY);
61 testElement.style.scrollBehavior = smoothScrolls[currentSmoothTest].css;
Ian Vollick 2014/02/06 16:02:31 Ditto.
62 runSingleTestCase(smoothScrolls[currentSmoothTest]);
63 smoothTest.step(function() {
64 assert_equals(testElement.scrollLeft + ", " + testElement.scrollTop, startX + ", " + startY);
65 });
66 }
67
68 function endSmoothTestCase()
69 {
70 currentSmoothTest++;
71 startNextSmoothTestCase();
72 }
73
74 runScrollBehaviorTests = function runScrollBehaviorTests(element,
Ian Vollick 2014/02/06 16:02:31 Does this function need to be named? Please expla
75 eventTarget,
76 instantTestCases,
77 smoothTestCases,
78 runTestCase,
79 endX,
80 endY) {
81 testElement = element;
82 testEventTarget = eventTarget;
83 instantScrolls = instantTestCases;
84 smoothScrolls = smoothTestCases;
85 runSingleTestCase = runTestCase;
86 computeEndX = endX;
87 computeEndY = endY;
88 runInstantTestCases();
Ian Vollick 2014/02/06 16:02:31 I'm hoping you go the OO route as I described earl
89 testEventTarget.addEventListener("scroll", smoothScrollListener);
90 startNextSmoothTestCase();
91 }
92 })();
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698