[SCM] WebKit Debian packaging branch, webkit-1.1, updated. upstream/1.1.19-706-ge5415e9

eric at webkit.org eric at webkit.org
Thu Feb 4 21:22:41 UTC 2010


The following commit has been merged in the webkit-1.1 branch:
commit 13436c48c5544fcbb99617733027cb9d22e28d89
Author: eric at webkit.org <eric at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Thu Jan 21 04:23:11 2010 +0000

    2010-01-20  Ben Murdoch  <benm at google.com>
    
            Reviewed by Simon Hausmann.
    
            Touch Events are not sent to iframes
            https://bugs.webkit.org/show_bug.cgi?id=33894
    
            Testcase to verify that touch events are sent to iframes when the main frame document does not have any touch event listeners installed.
    
            * fast/events/touch/resources: Added.
            * fast/events/touch/resources/touch-inside-iframe2.html: Added.
            * fast/events/touch/touch-inside-iframe-expected.txt: Added.
            * fast/events/touch/touch-inside-iframe.html: Added.
    2010-01-20  Ben Murdoch  <benm at google.com>
    
            Reviewed by Simon Hausmann.
    
            Touch Events are not sent to iframes
            https://bugs.webkit.org/show_bug.cgi?id=33894
    
            Fix the touch event handler so it does not bail out early if the main frame document does not have any touch listeners registered, as there may be embedded iframes that have registered for touch events.
    
            Test: fast/events/touch/touch-inside-iframe.html
    
            * page/EventHandler.cpp:
            (WebCore::EventHandler::handleTouchEvent): Instead of looking at the document of the main frame to see if touch event listeners are registered, look at the document of the target element to account for iframes.
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@53597 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
index 733b5b1..05031e3 100644
--- a/LayoutTests/ChangeLog
+++ b/LayoutTests/ChangeLog
@@ -1,3 +1,17 @@
+2010-01-20  Ben Murdoch  <benm at google.com>
+
+        Reviewed by Simon Hausmann.
+
+        Touch Events are not sent to iframes
+        https://bugs.webkit.org/show_bug.cgi?id=33894
+
+        Testcase to verify that touch events are sent to iframes when the main frame document does not have any touch event listeners installed.
+
+        * fast/events/touch/resources: Added.
+        * fast/events/touch/resources/touch-inside-iframe2.html: Added.
+        * fast/events/touch/touch-inside-iframe-expected.txt: Added.
+        * fast/events/touch/touch-inside-iframe.html: Added.
+
 2010-01-20  Michael Nordman  <michaeln at google.com>
 
         Reviewed by Alexey Proskuryakov.
diff --git a/LayoutTests/fast/events/touch/resources/touch-inside-iframe2.html b/LayoutTests/fast/events/touch/resources/touch-inside-iframe2.html
new file mode 100644
index 0000000..d1114bc
--- /dev/null
+++ b/LayoutTests/fast/events/touch/resources/touch-inside-iframe2.html
@@ -0,0 +1,8 @@
+<html>
+<body>
+<div id='mydiv' style='width:100px;height:100px;'></div>
+<script type='text/javascript'>
+document.getElementById('mydiv').addEventListener('touchstart', function() { parent.testComplete(); }, false);
+</script>
+</body>
+</html>
diff --git a/LayoutTests/fast/events/touch/touch-inside-iframe-expected.txt b/LayoutTests/fast/events/touch/touch-inside-iframe-expected.txt
new file mode 100644
index 0000000..f76f21f
--- /dev/null
+++ b/LayoutTests/fast/events/touch/touch-inside-iframe-expected.txt
@@ -0,0 +1,4 @@
+Test that touch events are sent to iframes that listen for them even if the parent frame does not listen for them.
+
+PASS
+
diff --git a/LayoutTests/fast/events/touch/touch-inside-iframe.html b/LayoutTests/fast/events/touch/touch-inside-iframe.html
new file mode 100644
index 0000000..706108c
--- /dev/null
+++ b/LayoutTests/fast/events/touch/touch-inside-iframe.html
@@ -0,0 +1,31 @@
+<html>
+<script type="text/javascript">
+if (window.layoutTestController)
+{
+    layoutTestController.dumpAsText();
+    layoutTestController.waitUntilDone();
+}
+
+function runTest()
+{
+    if (window.eventSender)
+    {
+        eventSender.addTouchPoint(50, 150);
+        eventSender.touchStart();
+    }
+}
+
+function testComplete()
+{
+    document.getElementById('console').innerText = 'PASS';
+    layoutTestController.notifyDone();
+}
+</script>
+<body onload="runTest();">
+<p>Test that touch events are sent to iframes that listen for them even if the parent frame does not listen for them.</p>
+<div id="console">
+<p>FAIL - no touchstart received!</p>
+</div>
+<iframe src="./resources/touch-inside-iframe2.html" />
+</body>
+</html>
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index f1b56de..93fefec 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,17 @@
+2010-01-20  Ben Murdoch  <benm at google.com>
+
+        Reviewed by Simon Hausmann.
+
+        Touch Events are not sent to iframes
+        https://bugs.webkit.org/show_bug.cgi?id=33894
+
+        Fix the touch event handler so it does not bail out early if the main frame document does not have any touch listeners registered, as there may be embedded iframes that have registered for touch events.
+
+        Test: fast/events/touch/touch-inside-iframe.html
+
+        * page/EventHandler.cpp:
+        (WebCore::EventHandler::handleTouchEvent): Instead of looking at the document of the main frame to see if touch event listeners are registered, look at the document of the target element to account for iframes.
+
 2010-01-20  Michael Nordman  <michaeln at google.com>
 
         Reviewed by Alexey Proskuryakov.
diff --git a/WebCore/page/EventHandler.cpp b/WebCore/page/EventHandler.cpp
index c907272..49df1d4 100644
--- a/WebCore/page/EventHandler.cpp
+++ b/WebCore/page/EventHandler.cpp
@@ -2537,13 +2537,6 @@ void EventHandler::updateLastScrollbarUnderMouse(Scrollbar* scrollbar, bool setL
 #if ENABLE(TOUCH_EVENTS)
 bool EventHandler::handleTouchEvent(const PlatformTouchEvent& event)
 {
-    Document* doc = m_frame->document();
-    if (!doc)
-        return false;
-
-    if (!doc->hasListenerType(Document::TOUCH_LISTENER))
-        return false;
-
     RefPtr<TouchList> touches = TouchList::create();
     RefPtr<TouchList> pressedTouches = TouchList::create();
     RefPtr<TouchList> releasedTouches = TouchList::create();
@@ -2564,6 +2557,12 @@ bool EventHandler::handleTouchEvent(const PlatformTouchEvent& event)
         if (target && target->isTextNode())
             target = target->parentNode();
 
+        Document* doc = target->document();
+        if (!doc)
+            continue;
+        if (!doc->hasListenerType(Document::TOUCH_LISTENER))
+            continue;
+
         int adjustedPageX = lroundf(framePoint.x() / m_frame->pageZoomFactor());
         int adjustedPageY = lroundf(framePoint.y() / m_frame->pageZoomFactor());
 

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list