Chromium Code Reviews| 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 |