diff options
6 files changed, 99 insertions, 2 deletions
diff --git a/third_party/WebKit/LayoutTests/ChangeLog b/third_party/WebKit/LayoutTests/ChangeLog index 861f48a..6794dac 100644 --- a/third_party/WebKit/LayoutTests/ChangeLog +++ b/third_party/WebKit/LayoutTests/ChangeLog @@ -1,3 +1,13 @@ +2012-08-28 Hugo Parente Lima <hugo.lima@openbossa.org> + + [WK2] Send click events to WebCore when the user clicked on a non-special node with TOUCH_ADJUSTMENT enabled. + https://bugs.webkit.org/show_bug.cgi?id=91012 + + Reviewed by Antonio Gomes. + + * touchadjustment/focusout-on-touch-expected.txt: Added. + * touchadjustment/focusout-on-touch.html: Added. + 2012-08-28 Thiago Marcos P. Santos <thiago.santos@intel.com> Datalist RTL test fails on ports that have progress indicator on the range groove diff --git a/third_party/WebKit/LayoutTests/platform/chromium/TestExpectations b/third_party/WebKit/LayoutTests/platform/chromium/TestExpectations index be80823a..975ae97 100644 --- a/third_party/WebKit/LayoutTests/platform/chromium/TestExpectations +++ b/third_party/WebKit/LayoutTests/platform/chromium/TestExpectations @@ -2755,6 +2755,9 @@ BUGWK94130 : fast/html/marquee-alternate.html = PASS TEXT BUGWK77314 WIN MAC : fast/events/touch/send-oncancel-event.html = PASS TEXT +// Skipped until setTouchPointRadius get implemented +BUGWK91012 SKIP : touchadjustment/focusout-on-touch.html = PASS TEXT + // CRASH comes from BUGCR121442 BUGWK77397 LINUX : plugins/crash-restoring-plugin-page-from-page-cache.html = TIMEOUT CRASH BUGWK77397 WIN MAC : plugins/crash-restoring-plugin-page-from-page-cache.html = TIMEOUT diff --git a/third_party/WebKit/LayoutTests/touchadjustment/focusout-on-touch-expected.txt b/third_party/WebKit/LayoutTests/touchadjustment/focusout-on-touch-expected.txt new file mode 100644 index 0000000..a1d9026 --- /dev/null +++ b/third_party/WebKit/LayoutTests/touchadjustment/focusout-on-touch-expected.txt @@ -0,0 +1,3 @@ +ALERT: PASS! +You should see "ALERT: PASS!" + diff --git a/third_party/WebKit/LayoutTests/touchadjustment/focusout-on-touch.html b/third_party/WebKit/LayoutTests/touchadjustment/focusout-on-touch.html new file mode 100644 index 0000000..b2c4c40 --- /dev/null +++ b/third_party/WebKit/LayoutTests/touchadjustment/focusout-on-touch.html @@ -0,0 +1,66 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html> +<head> +<title>Touch Adjustment : Fake mouse events not delivered when touching on a non-interactable node - bug 91012</title> +<style type="text/css"> +div { + width: 400px; + height: 400px; +} +</style> +<script type="text/javascript"> +function runTest() +{ +/* + WebKit generates fake mouse events on each touch event, here we test if + the touch adjustment doesn't caused an early return not firing the fake + mouse events used here to unfocus a simple text input. +*/ + if (!window.eventSender || !window.testRunner) + return; + + testRunner.dumpAsText(); + + // Focus the text field + var textInput = document.getElementById("textInput"); + if (document.activeElement === textInput) + alert("FAILED!"); + textInput.focus(); + if (document.activeElement != textInput) + alert("FAILED!"); + + // Try to loose the focus touching on a non-editable element. + var theDiv = document.getElementById("theDiv"); + var w = theDiv.clientWidth; + var h = theDiv.clientHeight; + var x = theDiv.offsetLeft + w/2; + var y = theDiv.offsetTop + h/2; + + eventSender.clearTouchPoints(); + eventSender.setTouchPointRadius(10, 10); + eventSender.addTouchPoint(x, y); + eventSender.touchStart(); + eventSender.releaseTouchPoint(0); + eventSender.touchEnd(); + + // Need to wait a bit so the gesture recognizer will be sure this isn't a double tap. + setTimeout(function() { + if (document.activeElement == document.body) + alert("PASS!") + else + alert("FAILED, " + document.activeElement.id + " is focused."); + testRunner.notifyDone(); + }, 800); + + // Wait and see... + testRunner.waitUntilDone(); + +} + +</script> +</head> +<body onload="runTest()"> +<div id="theDiv">You should see "ALERT: PASS!"</div> +<input id="textInput" type="text" value="Touch me please!" /> +</body> +</html>
\ No newline at end of file diff --git a/third_party/WebKit/Source/WebCore/ChangeLog b/third_party/WebKit/Source/WebCore/ChangeLog index 9ae2188..b4e984e 100644 --- a/third_party/WebKit/Source/WebCore/ChangeLog +++ b/third_party/WebKit/Source/WebCore/ChangeLog @@ -1,3 +1,18 @@ +2012-08-28 Hugo Parente Lima <hugo.lima@openbossa.org> + + [WK2] Send click events to WebCore when the user clicked on a non-special node with TOUCH_ADJUSTMENT enabled. + https://bugs.webkit.org/show_bug.cgi?id=91012 + + Reviewed by Antonio Gomes. + + Don't abort the gesture tap handling when the tap hits a non user + interactable node like a text node. + + Test: touchadjustment/focusout-on-touch.html + + * page/EventHandler.cpp: + (WebCore::EventHandler::handleGestureTap): + 2012-08-28 Andreas Kling <kling@webkit.org> Simplify cloning of inline style (below Node.cloneNode) diff --git a/third_party/WebKit/Source/WebCore/page/EventHandler.cpp b/third_party/WebKit/Source/WebCore/page/EventHandler.cpp index 957ada3..dc6cfa8 100644 --- a/third_party/WebKit/Source/WebCore/page/EventHandler.cpp +++ b/third_party/WebKit/Source/WebCore/page/EventHandler.cpp @@ -2451,8 +2451,8 @@ bool EventHandler::handleGestureTap(const PlatformGestureEvent& gestureEvent) // FIXME: Refactor this code to not hit test multiple times. We use the adjusted position to ensure that the correct node is targeted by the later redundant hit tests. IntPoint adjustedPoint = gestureEvent.position(); #if ENABLE(TOUCH_ADJUSTMENT) - if (!gestureEvent.area().isEmpty() && !adjustGesturePosition(gestureEvent, adjustedPoint)) - return false; + if (!gestureEvent.area().isEmpty()) + adjustGesturePosition(gestureEvent, adjustedPoint); #endif PlatformMouseEvent fakeMouseMove(adjustedPoint, gestureEvent.globalPosition(), |