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

Unified Diff: LayoutTests/fast/scroll-behavior/resources/scroll-interruption-test.js

Issue 400763003: Revert of Scroll interruption tests for CSSOM View smooth scroll (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 5 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-interruption-test.js
diff --git a/LayoutTests/fast/scroll-behavior/resources/scroll-interruption-test.js b/LayoutTests/fast/scroll-behavior/resources/scroll-interruption-test.js
deleted file mode 100644
index c27dc9b30318d13fae3e97e0643de29a26c65e31..0000000000000000000000000000000000000000
--- a/LayoutTests/fast/scroll-behavior/resources/scroll-interruption-test.js
+++ /dev/null
@@ -1,190 +0,0 @@
-// A SmoothScrollInterruptionTest verifies that in-progress smooth scrolls
-// stop when interrupted by an instant scroll, another smooth scroll, a
-// touch scroll, or a mouse wheel scroll.
-//
-// The only SmoothScrollInerruptionTest method that should be called by
-// outside code is run().
-//
-// Creates a SmoothScrollInterruptionTest with arguments:
-// scrollElement - Element being scrolled.
-// innerPoint - Absolute position (expressed as a dictionary with x and y fields)
-// of a point inside |scrollElement|, that can be used as the location
-// of input events that trigger scrolls on |scrollElement|.
-// targets - A dictionary whose members y_min, y_mid, and y_max should be
-// y co-ordinates that are far enough apart from each other that a
-// smooth scroll between any pair of them will be non-trivial (that
-// is, take multiple frames to finish), and should be such that
-// y_min < y_mid < y_max.
-// jsScroll - Callback that takes a y co-ordinate and executes a js-driven
-// smooth scroll to that y co-ordinate.
-function SmoothScrollInterruptionTest(scrollElement, innerPoint, targets, jsScroll) {
- this.scrollElement = scrollElement;
- this.innerPoint = innerPoint;
- this.scrollStartPoint = targets.y_mid;
- this.scrollEndPoint = targets.y_max;
- this.scrollNewEndpoint = targets.y_min;
- this.jsScroll = jsScroll;
-
- this.testCases = [];
- this.testCases.push(new SmoothScrollInterruptionTestCase(interruptWithInstantScroll, verifyScrollInterruptedByInstantScroll, "instant scroll"));
- this.testCases.push(new SmoothScrollInterruptionTestCase(interruptWithSmoothScroll, verifyScrollInterruptedBySmoothScroll, "smooth scroll"));
- this.testCases.push(new SmoothScrollInterruptionTestCase(interruptWithTouchScroll, verifyScrollInterruptedByInputDrivenScroll, "touch scroll"));
- this.testCases.push(new SmoothScrollInterruptionTestCase(interruptWithWheelScroll, verifyScrollInterruptedByInputDrivenScroll, "wheel scroll"));
-
- this.currentTestCase = 0;
-}
-
-SmoothScrollInterruptionTest.prototype.startNextTestCase = function() {
- if (this.currentTestCase >= this.testCases.length) {
- this.allTestCasesComplete();
- return;
- }
-
- var testCase = this.testCases[this.currentTestCase];
- this.asyncTest = async_test(testCase.description);
-
- var scrollElement = this.scrollElement;
- var scrollStartPoint = this.scrollStartPoint;
-
- scrollElement.scrollTop = scrollStartPoint;
- this.jsScroll(this.scrollEndPoint);
- this.asyncTest.step(function() {
- assert_equals(scrollElement.scrollTop, scrollStartPoint);
- });
-
- if (scrollElement.scrollTop == this.scrollEndPoint) {
- // We've instant-scrolled, and failed the assert above.
- this.testCaseComplete();
- return;
- }
-
- window.requestAnimationFrame(this.waitForSmoothScrollStart.bind(this));
-}
-
-SmoothScrollInterruptionTest.prototype.waitForSmoothScrollStart = function() {
- if (this.scrollElement.scrollTop == this.scrollStartPoint) {
- window.requestAnimationFrame(this.waitForSmoothScrollStart.bind(this));
- return;
- }
-
- var scrollElement = this.scrollElement;
- var scrollEndPoint = this.scrollEndPoint;
- this.asyncTest.step(function() {
- assert_not_equals(scrollElement.scrollTop, scrollEndPoint);
- });
-
- var testCase = this.testCases[this.currentTestCase];
- testCase.interruptSmoothScroll(this);
- window.requestAnimationFrame(testCase.verifyScrollInterrupted.bind(testCase, this, this.testCaseComplete.bind(this)));
-}
-
-SmoothScrollInterruptionTest.prototype.testCaseComplete = function() {
- this.asyncTest.done();
-
- this.currentTestCase++;
- this.startNextTestCase();
-}
-
-SmoothScrollInterruptionTest.prototype.run = function() {
- setup({explicit_done: true});
- this.startNextTestCase();
-}
-
-SmoothScrollInterruptionTest.prototype.allTestCasesComplete = function() {
- done();
-}
-
-// A SmoothScrollInterruptionTestCase represents a single way of interrupting
-// a smooth scroll and verifying that the smooth scroll gets canceled.
-//
-// Creates a SmoothScrollInterruptionTestCase with arguments:
-// interruptSmoothScoll - Callback that takes a SmoothScrollInterruptionTest,
-// and interrupts the on-going smooth scroll.
-// verifyScrollInterrupted - Callback that takes a SmoothScrollInterruptionTest,
-// a |verificationComplete| callback, and a timestamp,
-// verifies (possibly asynchronously) that the smooth
-// scroll has been superseded by the interruption, and
-// then calls |verificationComplete|.
-// description - String describing this test case.
-function SmoothScrollInterruptionTestCase(interruptSmoothScroll, verifyScrollInterrupted, description) {
- this.interruptSmoothScroll = interruptSmoothScroll;
- this.verifyScrollInterrupted = verifyScrollInterrupted;
- this.description = description;
-}
-
-
-function interruptWithInstantScroll(smoothScrollTest) {
- smoothScrollTest.scrollElement.scrollTop = smoothScrollTest.scrollNewEndpoint;
- smoothScrollTest.asyncTest.step(function() {
- assert_equals(smoothScrollTest.scrollElement.scrollTop, smoothScrollTest.scrollNewEndpoint);
- });
-}
-
-function verifyScrollInterruptedByInstantScroll(smoothScrollTest, verificationComplete) {
- smoothScrollTest.asyncTest.step(function() {
- assert_equals(smoothScrollTest.scrollElement.scrollTop, smoothScrollTest.scrollNewEndpoint);
- });
- verificationComplete();
-}
-
-function interruptWithSmoothScroll(smoothScrollTest) {
- smoothScrollTest.jsScroll(smoothScrollTest.scrollNewEndpoint);
- smoothScrollTest.asyncTest.step(function() {
- assert_not_equals(smoothScrollTest.scrollElement.scrollTop, smoothScrollTest.scrollNewEndpoint);
- });
-
- this.scrollInterruptionPoint = smoothScrollTest.scrollElement.scrollTop;
-}
-
-function verifyScrollInterruptedBySmoothScroll(smoothScrollTest, verificationComplete) {
- var currentPosition = smoothScrollTest.scrollElement.scrollTop;
-
- if (currentPosition < this.scrollInterruptionPoint && currentPosition > smoothScrollTest.scrollNewEndpoint) {
- verificationComplete();
- } else {
- window.requestAnimationFrame(this.verifyScrollInterrupted.bind(this, smoothScrollTest, verificationComplete));
- }
-}
-
-function interruptWithTouchScroll(smoothScrollTest) {
- if (window.eventSender) {
- window.eventSender.gestureScrollBegin(smoothScrollTest.innerPoint.x, smoothScrollTest.innerPoint.y);
- window.eventSender.gestureScrollUpdate(0, -10);
- window.eventSender.gestureScrollEnd(0, 0);
- } else {
- document.write("This test does not work in manual mode.");
- }
-}
-
-function verifyScrollInterruptedByInputDrivenScroll(smoothScrollTest, verificationComplete, timestamp) {
- var currentPosition = smoothScrollTest.scrollElement.scrollTop;
-
- if (this.previousPosition && this.previousPosition == currentPosition) {
- // Ensure that the animation has really stopped, not that we just have
- // two frames that are so close together that the animation only seems to
- // have stopped.
- if (timestamp - this.previousTimestamp > 16) {
- verificationComplete();
- } else {
- window.requestAnimationFrame(this.verifyScrollInterrupted.bind(this, smoothScrollTest, verificationComplete));
- }
-
- return;
- }
-
- this.previousPosition = currentPosition;
- this.previousTimestamp = timestamp;
- smoothScrollTest.asyncTest.step(function() {
- assert_not_equals(currentPosition, smoothScrollTest.scrollEndPoint);
- });
- window.requestAnimationFrame(this.verifyScrollInterrupted.bind(this, smoothScrollTest, verificationComplete));
-}
-
-function interruptWithWheelScroll(smoothScrollTest) {
- if (window.eventSender) {
- window.eventSender.mouseMoveTo(smoothScrollTest.innerPoint.x, smoothScrollTest.innerPoint.y);
- window.eventSender.mouseScrollBy(0, -10);
- } else {
- document.write("This test does not work in manual mode.");
- }
-}

Powered by Google App Engine
This is Rietveld 408576698