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

Unified 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 side-by-side diff with in-line comments
Download patch
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();
+ }
+})();

Powered by Google App Engine
This is Rietveld 408576698