[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-10851-g50815da

dglazkov at chromium.org dglazkov at chromium.org
Wed Dec 22 17:58:05 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit e32b39faa36baac9a62c73fc1f987aaa37bc1d57
Author: dglazkov at chromium.org <dglazkov at chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Fri Dec 3 17:56:04 2010 +0000

    2010-12-03  Dimitri Glazkov  <dglazkov at chromium.org>
    
            Reviewed by Darin Adler.
    
            REGRESSION(r72783): DOMActivate fires multiple times from input type=file
            https://bugs.webkit.org/show_bug.cgi?id=50396
    
            * fast/events/shadow-boundary-crossing-2-expected.txt: Changed expectations.
            * fast/events/shadow-boundary-crossing-2.html: Added the correct test for event
                retargeting, renamed previous test to be more specific in what it tests.
    2010-12-03  Dimitri Glazkov  <dglazkov at chromium.org>
    
            Reviewed by Darin Adler.
    
            REGRESSION(r72783): DOMActivate fires multiple times from input type=file
            https://bugs.webkit.org/show_bug.cgi?id=50396
    
            Test: fast/events/shadow-boundary-crossing-2.html
    
            * dom/EventContext.cpp: Reverted changes made in r72783.
            * dom/EventContext.h: Ditto.
            * dom/Node.cpp:
            (WebCore::Node::containsIncludingShadowDOM): Added.
            (WebCore::Node::dispatchGenericEvent): Reverted changes made in r72783.
            * dom/Node.h: Added decl.
            * html/HTMLLabelElement.cpp:
            (WebCore::HTMLLabelElement::defaultEventHandler): Reverted changes made in r72783.
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@73270 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
index ddf9634..0d6591e 100644
--- a/LayoutTests/ChangeLog
+++ b/LayoutTests/ChangeLog
@@ -1,3 +1,14 @@
+2010-12-03  Dimitri Glazkov  <dglazkov at chromium.org>
+
+        Reviewed by Darin Adler.
+
+        REGRESSION(r72783): DOMActivate fires multiple times from input type=file
+        https://bugs.webkit.org/show_bug.cgi?id=50396
+
+        * fast/events/shadow-boundary-crossing-2-expected.txt: Changed expectations.
+        * fast/events/shadow-boundary-crossing-2.html: Added the correct test for event
+            retargeting, renamed previous test to be more specific in what it tests.
+
 2010-12-03  Abhishek Arya  <inferno at chromium.org>
 
         Unreviewed.
diff --git a/LayoutTests/fast/events/shadow-boundary-crossing-2-expected.txt b/LayoutTests/fast/events/shadow-boundary-crossing-2-expected.txt
index 3c6936c..a2f1ece 100644
--- a/LayoutTests/fast/events/shadow-boundary-crossing-2-expected.txt
+++ b/LayoutTests/fast/events/shadow-boundary-crossing-2-expected.txt
@@ -3,7 +3,8 @@ Tests to ensure that shadow DOM boundary is not crossed during event propagation
 See bug 46015 for details.
 
 Mutation events should not propagate out of the shadow DOM: PASS
-Events for default event handler should also be retargeted: PASS
+Label should look beyond shadow boundary to detect if it encloses its associated element: PASS
+Events for default event handler should not be retargeted: PASS
 Other events should be retargeted: PASS
 After event dispatch, the event object should not reveal shadow DOM: PASS
 Focusing same shadow DOM element repeatedly should not trigger multiple focus/blur events: PASS
diff --git a/LayoutTests/fast/events/shadow-boundary-crossing-2.html b/LayoutTests/fast/events/shadow-boundary-crossing-2.html
index 0754493..91b362f 100644
--- a/LayoutTests/fast/events/shadow-boundary-crossing-2.html
+++ b/LayoutTests/fast/events/shadow-boundary-crossing-2.html
@@ -21,6 +21,17 @@ function clickOn(element)
     eventSender.mouseUp();
 }
 
+function clickOnLeftQuarterOf(element)
+{
+    if (!window.eventSender)
+        return;
+
+    var x = element.offsetLeft + element.offsetWidth / 4;
+    var y = element.offsetTop + element.offsetHeight / 2;
+    eventSender.mouseMoveTo(x, y);
+    eventSender.mouseDown();
+    eventSender.mouseUp();
+}
 
 function leapForward()
 {
@@ -45,7 +56,7 @@ var tests = {
         log('Mutation events should not propagate out of the shadow DOM', !mutationEventFired);
         textarea.parentNode.removeChild(textarea);
     },
-    defaultEventRetargeting: function()
+    labelSyntheticClick: function()
     {
         var count = 0;
         var label = document.body.appendChild(document.createElement('label'));
@@ -58,9 +69,24 @@ var tests = {
             count++;
         }, false);
         clickOn(searchInput);
-        log("Events for default event handler should also be retargeted", count == 1);
+        log("Label should look beyond shadow boundary to detect if it encloses its associated element", count == 1);
         label.parentNode.removeChild(label);
     },
+    defaultEventRetargeting: function()
+    {
+        var count = 0;
+        var fileInput = document.body.appendChild(document.createElement('input'));
+        fileInput.setAttribute('type', 'file');
+        var counter = function()
+        {
+            count++;
+        }
+        document.body.addEventListener('DOMActivate', counter, false);
+        clickOnLeftQuarterOf(fileInput);
+        log("Events for default event handler should not be retargeted", count == 1);
+        document.body.removeEventListener('DOMActivate', counter, false);
+        fileInput.parentNode.removeChild(fileInput);
+    },
     eventInProgress: function()
     {
         var textInput = document.body.appendChild(document.createElement('input'));
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 0cca51a..d792d66 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,21 @@
+2010-12-03  Dimitri Glazkov  <dglazkov at chromium.org>
+
+        Reviewed by Darin Adler.
+
+        REGRESSION(r72783): DOMActivate fires multiple times from input type=file
+        https://bugs.webkit.org/show_bug.cgi?id=50396
+
+        Test: fast/events/shadow-boundary-crossing-2.html
+
+        * dom/EventContext.cpp: Reverted changes made in r72783.
+        * dom/EventContext.h: Ditto.
+        * dom/Node.cpp:
+        (WebCore::Node::containsIncludingShadowDOM): Added.
+        (WebCore::Node::dispatchGenericEvent): Reverted changes made in r72783.
+        * dom/Node.h: Added decl.
+        * html/HTMLLabelElement.cpp:
+        (WebCore::HTMLLabelElement::defaultEventHandler): Reverted changes made in r72783.
+
 2010-12-03  Patrick Gansterer  <paroga at webkit.org>
 
         Reviewed by Andreas Kling.
diff --git a/WebCore/dom/EventContext.cpp b/WebCore/dom/EventContext.cpp
index e5fe0ee..2a5c521 100644
--- a/WebCore/dom/EventContext.cpp
+++ b/WebCore/dom/EventContext.cpp
@@ -41,13 +41,6 @@ EventContext::EventContext(PassRefPtr<Node> node, PassRefPtr<EventTarget> curren
 {
 }
 
-void EventContext::defaultEventHandler(Event* event) const
-{
-    event->setTarget(m_target.get());
-    event->setCurrentTarget(m_currentTarget.get());
-    m_node->defaultEventHandler(event);
-}
-
 void EventContext::handleLocalEvents(Event* event) const
 {
     event->setTarget(m_target.get());
diff --git a/WebCore/dom/EventContext.h b/WebCore/dom/EventContext.h
index 8331b4d..9bab9d4 100644
--- a/WebCore/dom/EventContext.h
+++ b/WebCore/dom/EventContext.h
@@ -42,7 +42,6 @@ public:
 
     Node* node() const;
     EventTarget* target() const;
-    void defaultEventHandler(Event*) const;
     void handleLocalEvents(Event*) const;
 
 private:
diff --git a/WebCore/dom/Node.cpp b/WebCore/dom/Node.cpp
index 3bfeab2..d6ffc68 100644
--- a/WebCore/dom/Node.cpp
+++ b/WebCore/dom/Node.cpp
@@ -1193,6 +1193,17 @@ bool Node::contains(const Node* node) const
     return this == node || node->isDescendantOf(this);
 }
 
+bool Node::containsIncludingShadowDOM(Node* node)
+{
+    if (!node)
+        return false;
+    for (Node* n = node; n; n = n->parentOrHostNode()) {
+        if (n == this)
+            return true;
+    }
+    return false;
+}
+
 void Node::attach()
 {
     ASSERT(!attached());
@@ -2635,7 +2646,7 @@ doneDispatching:
         if (event->bubbles()) {
             size_t size = ancestors.size();
             for (size_t i = 0; i < size; ++i) {
-                ancestors[i].defaultEventHandler(event.get());
+                ancestors[i].node()->defaultEventHandler(event.get());
                 ASSERT(!event->defaultPrevented());
                 if (event->defaultHandled())
                     goto doneWithDefault;
diff --git a/WebCore/dom/Node.h b/WebCore/dom/Node.h
index 9fcea1e..9921795 100644
--- a/WebCore/dom/Node.h
+++ b/WebCore/dom/Node.h
@@ -385,6 +385,7 @@ public:
     void checkSetPrefix(const AtomicString& prefix, ExceptionCode&);
     bool isDescendantOf(const Node*) const;
     bool contains(const Node*) const;
+    bool containsIncludingShadowDOM(Node*);
 
     // This method is used to do strict error-checking when adding children via
     // the public DOM API (e.g., appendChild()).
diff --git a/WebCore/html/HTMLLabelElement.cpp b/WebCore/html/HTMLLabelElement.cpp
index 1e44e2a..97a0c65 100644
--- a/WebCore/html/HTMLLabelElement.cpp
+++ b/WebCore/html/HTMLLabelElement.cpp
@@ -119,7 +119,7 @@ void HTMLLabelElement::defaultEventHandler(Event* evt)
 
         // If we can't find a control or if the control received the click
         // event, then there's no need for us to do anything.
-        if (!element || (evt->target() && element->contains(evt->target()->toNode())))
+        if (!element || (evt->target() && element->containsIncludingShadowDOM(evt->target()->toNode())))
             return;
 
         processingClick = true;

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list