Diff
Copied: branches/chromium/1364/LayoutTests/fast/events/touch/gesture/touch-gesture-scroll-div-scaled-expected.txt (from rev 139022, trunk/LayoutTests/fast/events/touch/gesture/touch-gesture-scroll-div-scaled-expected.txt) (0 => 139117)
--- branches/chromium/1364/LayoutTests/fast/events/touch/gesture/touch-gesture-scroll-div-scaled-expected.txt (rev 0)
+++ branches/chromium/1364/LayoutTests/fast/events/touch/gesture/touch-gesture-scroll-div-scaled-expected.txt 2013-01-08 22:50:23 UTC (rev 139117)
@@ -0,0 +1,10 @@
+This tests gesture event scrolling of an overflow div with page scale.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+gesture events not implemented on this platform or gesture event scrolling of a document is broken
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
Copied: branches/chromium/1364/LayoutTests/fast/events/touch/gesture/touch-gesture-scroll-div-scaled.html (from rev 139022, trunk/LayoutTests/fast/events/touch/gesture/touch-gesture-scroll-div-scaled.html) (0 => 139117)
--- branches/chromium/1364/LayoutTests/fast/events/touch/gesture/touch-gesture-scroll-div-scaled.html (rev 0)
+++ branches/chromium/1364/LayoutTests/fast/events/touch/gesture/touch-gesture-scroll-div-scaled.html 2013-01-08 22:50:23 UTC (rev 139117)
@@ -0,0 +1,131 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src=""
+<script src=""
+<style type="text/css">
+#touchtarget {
+ width: 100px;
+ height: 100px;
+ position: relative;
+ background: white;
+}
+
+::-webkit-scrollbar {
+ width: 0px;
+ height: 0px;
+}
+
+#movingbox {
+ width: 100%;
+ height: 100%;
+ position: absolute;
+ word-wrap: break-word;
+ overflow-y: scroll;
+ overflow-x: scroll;
+ display: block;
+}
+
+#greenbox {
+ width: 100px;
+ height: 100px;
+ background: green;
+ padding: 0px;
+ margin: 0px;
+}
+
+#redbox {
+ width: 100px;
+ height: 100px;
+ background: red;
+ padding: 0px;
+ margin: 0px;
+}
+
+td {
+ padding: 0px;
+}
+</style>
+</head>
+<body style="margin:0" _onload_="runTest();">
+<div id="touchtarget">
+ <div id="movingbox">
+ <table border="0" cellspacing="0px" id="tablefoo">
+ <tr>
+ <td><div id="redbox"></div></td>
+ <td><div id="greenbox"></div></td>
+ </tr>
+ <tr>
+ <td><div id="greenbox"></div></td>
+ <td><div id="greenbox"></div></td>
+ </tr>
+ </table>
+ </div>
+</div>
+
+<p id="description"></p>
+<div id="console"></div>
+<script type="text/_javascript_">
+
+var movingdiv;
+var expectedGesturesTotal = 2;
+var gesturesOccurred = 0;
+var scrollAmountX = ['45', '45'];
+var scrollAmountY = ['0', '48'];
+var wheelEventsOccurred = 0;
+var expectedWheelEventsOccurred = ['1', '1'];
+var scrollEventsOccurred = 0;
+var expectedScrollEventsOccurred = '1';
+var scrolledElement = 'movingdiv'
+
+function firstGestureScroll()
+{
+ debug("first gesture");
+ eventSender.gestureScrollBegin(95, 12);
+ eventSender.gestureScrollUpdate(-90, 0);
+ eventSender.gestureScrollEnd(0, 0);
+
+ // Wait for layout.
+ checkScrollOffset();
+}
+
+ function secondGestureScroll()
+ {
+ debug("second gesture");
+ eventSender.gestureScrollBegin(12, 97);
+ eventSender.gestureScrollUpdate(0, -95);
+ eventSender.gestureScrollEnd(0, 0);
+
+ // Wait for layout.
+ checkScrollOffset();
+ }
+
+if (window.testRunner)
+ testRunner.waitUntilDone();
+
+function runTest()
+{
+ var scaleFactor = 2.0;
+ var scaleOffset = 0;
+ if (window.internals) {
+ window.internals.setPageScaleFactor(scaleFactor, scaleOffset, scaleOffset);
+ }
+
+ movingdiv = document.getElementById('movingbox');
+ movingdiv.addEventListener("scroll", recordScroll);
+ window.addEventListener("mousewheel", recordWheel);
+
+ if (window.eventSender) {
+ description('This tests gesture event scrolling of an overflow div with page scale.');
+
+ if (checkTestDependencies())
+ firstGestureScroll();
+ else
+ exitIfNecessary();
+ } else {
+ debug("This test requires DumpRenderTree. Touch scroll the red rect to log.");
+ }
+}
+</script>
+</body>
+</html>
Copied: branches/chromium/1364/LayoutTests/platform/chromium/fast/events/touch/gesture/touch-gesture-scroll-div-scaled-expected.txt (from rev 139022, trunk/LayoutTests/platform/chromium/fast/events/touch/gesture/touch-gesture-scroll-div-scaled-expected.txt) (0 => 139117)
--- branches/chromium/1364/LayoutTests/platform/chromium/fast/events/touch/gesture/touch-gesture-scroll-div-scaled-expected.txt (rev 0)
+++ branches/chromium/1364/LayoutTests/platform/chromium/fast/events/touch/gesture/touch-gesture-scroll-div-scaled-expected.txt 2013-01-08 22:50:23 UTC (rev 139117)
@@ -0,0 +1,21 @@
+This tests gesture event scrolling of an overflow div with page scale.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+first gesture
+wheel event 0+> [object HTMLDivElement]
+PASS movingdiv.scrollTop is 0
+PASS movingdiv.scrollLeft is 45
+PASS wheelEventsOccurred is 1
+second gesture
+wheel event 0+> [object HTMLDivElement]
+PASS movingdiv.scrollTop is 48
+PASS movingdiv.scrollLeft is 45
+PASS wheelEventsOccurred is 1
+scroll event 0+> [object HTMLDivElement]
+PASS scrollEventsOccurred is 1
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
Modified: branches/chromium/1364/Source/WebCore/page/EventHandler.cpp (139116 => 139117)
--- branches/chromium/1364/Source/WebCore/page/EventHandler.cpp 2013-01-08 22:50:14 UTC (rev 139116)
+++ branches/chromium/1364/Source/WebCore/page/EventHandler.cpp 2013-01-08 22:50:23 UTC (rev 139117)
@@ -2593,10 +2593,13 @@
bool EventHandler::handleGestureScrollCore(const PlatformGestureEvent& gestureEvent, PlatformWheelEventGranularity granularity, bool latchedWheel)
{
const float tickDivisor = (float)WheelEvent::tickMultiplier;
+ const float scaleFactor = m_frame->pageZoomFactor() * m_frame->frameScaleFactor();
+ float scaledDeltaX = gestureEvent.deltaX() / scaleFactor;
+ float scaledDeltaY = gestureEvent.deltaY() / scaleFactor;
IntPoint point(gestureEvent.position().x(), gestureEvent.position().y());
IntPoint globalPoint(gestureEvent.globalPosition().x(), gestureEvent.globalPosition().y());
PlatformWheelEvent syntheticWheelEvent(point, globalPoint,
- gestureEvent.deltaX(), gestureEvent.deltaY(), gestureEvent.deltaX() / tickDivisor, gestureEvent.deltaY() / tickDivisor,
+ scaledDeltaX, scaledDeltaY, scaledDeltaX / tickDivisor, scaledDeltaY / tickDivisor,
granularity,
gestureEvent.shiftKey(), gestureEvent.ctrlKey(), gestureEvent.altKey(), gestureEvent.metaKey());
syntheticWheelEvent.setUseLatchedEventNode(latchedWheel);