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."); |
- } |
-} |