Chromium Code Reviews| Index: LayoutTests/fast/scroll-behavior/resources/scroll-behavior-test.js |
| diff --git a/LayoutTests/fast/scroll-behavior/resources/scroll-behavior-test.js b/LayoutTests/fast/scroll-behavior/resources/scroll-behavior-test.js |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..699dad4109886fbfd737857df540d5da68a5e3ca |
| --- /dev/null |
| +++ b/LayoutTests/fast/scroll-behavior/resources/scroll-behavior-test.js |
| @@ -0,0 +1,92 @@ |
| +(function() { |
|
Ian Vollick
2014/02/06 16:02:31
Please add a comment describing what a scroll beha
|
| + var instantTest = async_test('instant scrolls'); |
| + var smoothTest = async_test('smooth scrolls'); |
| + var testElement; |
| + var testEventTarget; |
| + var instantScrolls; |
| + var smoothScrolls; |
| + var runSingleTestCase; |
| + var computeEndX; |
| + var computeEndY; |
| + var currentSmoothTest = 0; |
| + var startX; |
| + var startY; |
| + var endX; |
| + var endY; |
| + |
| + function smoothScrollListener() |
| + { |
| + if (smoothScrolls[currentSmoothTest].waitForEnd) { |
|
Ian Vollick
2014/02/06 16:02:31
This is a bit nitty, but I find the bucket of glob
|
| + if (testElement.scrollLeft == endX && testElement.scrollTop == endY) |
| + endSmoothTestCase(); |
| + return; |
| + } |
| + // Wait for an intermediate frame. |
| + if ((testElement.scrollLeft != startX || testElement.scrollTop != startY) && |
| + (testElement.scrollLeft != endX || testElement.scrollTop != endY)) { |
| + testElement.scrollLeft = {x: endX, behavior: "instant"}; |
| + testElement.scrollTop = {y: endY, behavior: "instant"}; |
| + endSmoothTestCase(); |
| + } |
| + } |
| + |
| + function runInstantTestCases() |
| + { |
| + for (var i = 0; i < instantScrolls.length; i++) { |
| + startX = testElement.scrollLeft; |
| + startY = testElement.scrollTop; |
| + endX = computeEndX(instantScrolls[i], startX); |
| + endY = computeEndY(instantScrolls[i], startY); |
| + testElement.style.scrollBehavior = instantScrolls[i].css; |
|
Ian Vollick
2014/02/06 16:02:31
A comment here would be helpful (that explains thi
|
| + runSingleTestCase(instantScrolls[i]); |
| + instantTest.step(function() { |
| + assert_equals(testElement.scrollLeft + ", " + testElement.scrollTop, endX + ", " + endY); |
| + }); |
| + } |
| + instantTest.done(); |
| + } |
| + |
| + function startNextSmoothTestCase() |
| + { |
| + if (currentSmoothTest >= smoothScrolls.length) { |
| + smoothTest.done(); |
| + testEventTarget.removeEventListener("scroll", smoothScrollListener); |
| + return; |
| + } |
| + |
| + startX = testElement.scrollLeft; |
| + startY = testElement.scrollTop; |
| + endX = computeEndX(smoothScrolls[currentSmoothTest], startX); |
| + endY = computeEndY(smoothScrolls[currentSmoothTest], startY); |
| + testElement.style.scrollBehavior = smoothScrolls[currentSmoothTest].css; |
|
Ian Vollick
2014/02/06 16:02:31
Ditto.
|
| + runSingleTestCase(smoothScrolls[currentSmoothTest]); |
| + smoothTest.step(function() { |
| + assert_equals(testElement.scrollLeft + ", " + testElement.scrollTop, startX + ", " + startY); |
| + }); |
| + } |
| + |
| + function endSmoothTestCase() |
| + { |
| + currentSmoothTest++; |
| + startNextSmoothTestCase(); |
| + } |
| + |
| + runScrollBehaviorTests = function runScrollBehaviorTests(element, |
|
Ian Vollick
2014/02/06 16:02:31
Does this function need to be named?
Please expla
|
| + eventTarget, |
| + instantTestCases, |
| + smoothTestCases, |
| + runTestCase, |
| + endX, |
| + endY) { |
| + testElement = element; |
| + testEventTarget = eventTarget; |
| + instantScrolls = instantTestCases; |
| + smoothScrolls = smoothTestCases; |
| + runSingleTestCase = runTestCase; |
| + computeEndX = endX; |
| + computeEndY = endY; |
| + runInstantTestCases(); |
|
Ian Vollick
2014/02/06 16:02:31
I'm hoping you go the OO route as I described earl
|
| + testEventTarget.addEventListener("scroll", smoothScrollListener); |
| + startNextSmoothTestCase(); |
| + } |
| +})(); |