OLD | NEW |
---|---|
(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 })(); | |
OLD | NEW |