Index: LayoutTests/fast/events/resources/panScroll.js |
diff --git a/LayoutTests/fast/events/resources/panScroll.js b/LayoutTests/fast/events/resources/panScroll.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..090c6a39170469a394ed903b93d59ae495b0a17f |
--- /dev/null |
+++ b/LayoutTests/fast/events/resources/panScroll.js |
@@ -0,0 +1,82 @@ |
+var autoscrollInterval = 50; |
+var middleButton = 1; |
+var panScrollRadius = 15; // from WebCore/platform/ScrollView.h |
+ |
+window.jsTestIsAsync = true; |
+ |
+function $(id) |
+{ |
+ return document.getElementById(id); |
+} |
+ |
+function testPanScroll(param) |
+{ |
+ function finishTest() |
+ { |
+ if ($('container')) |
+ $('container').innerHTML = ''; |
+ if (param.finishTest) |
+ param.finishTest(); |
+ if (window.finishJSTest) { |
+ finishJSTest(); |
+ return; |
+ } |
+ if (window.testRunner) |
+ testRunner.notifyDone(); |
+ } |
+ |
+ var scrollable = param.scrollable; |
+ var scrolledObject = param.scrolledObject || scrollable; |
+ |
+ if (!scrollable.innerHTML) { |
+ for (var i = 0; i < 100; ++i) { |
+ var line = document.createElement('div'); |
+ line.innerHTML = "line " + i; |
+ scrollable.appendChild(line); |
+ } |
+ } |
+ |
+ var noModeScroll = false; |
+ var scrolled = false; |
+ |
+ scrolledObject.onscroll = function() { |
+ if (noModeScroll) { |
+ testFailed('still autoscroll'); |
+ finishTest(); |
+ return; |
+ } |
+ |
+ if (scrolled) |
+ return; |
+ scrolled = true; |
+ testPassed('autoscroll started'); |
+ |
+ if (window.eventSender) { |
+ if (param.clickOrDrag == 'click') |
+ eventSender.mouseDown(middleButton); |
+ eventSender.mouseUp(middleButton); |
+ } |
+ }; |
+ |
+ scrollable.ownerDocument.onmouseup = function(e) { |
+ if (!scrolled || e.button != middleButton) |
+ return; |
+ noMoreScroll = true; |
+ window.setTimeout(function() { |
+ testPassed('autoscroll stopped'); |
+ finishTest(); |
+ }, autoscrollInterval * 2); |
+ }; |
+ |
+ if (!window.eventSender) |
+ return; |
+ var startX = param.startX || scrollable.offsetLeft + 5; |
+ var startY = param.startY || scrollable.offsetTop + 5; |
+ var endX = param.endX || scrollable.offsetLeft + 5; |
+ var endY = param.endY || scrollable.offsetTop + panScrollRadius + 6; |
+ eventSender.mouseMoveTo(startX, startY); |
+ eventSender.mouseDown(middleButton); |
+ if (param.clickOrDrag == 'click') |
+ eventSender.mouseUp(middleButton); |
+ eventSender.mouseMoveTo(endX, endY); |
+} |