Title: [120806] trunk/Source/WebCore
Revision
120806
Author
[email protected]
Date
2012-06-19 23:29:59 -0700 (Tue, 19 Jun 2012)

Log Message

Assertion for event's target is wrong.
https://bugs.webkit.org/show_bug.cgi?id=89479

Reviewed by Hajime Morita.

Fix an assertion to ensure that event's target is reachable from a current target.

No new tests. Fix an assert condition.

* dom/EventContext.cpp:
(WebCore::EventContext::EventContext):
* dom/EventContext.h:
(EventContext):
(WebCore::EventContext::setRelatedTarget):
(WebCore::EventContext::isUnreachableNode):
(WebCore):
(WebCore::EventContext::isReachable):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (120805 => 120806)


--- trunk/Source/WebCore/ChangeLog	2012-06-20 06:23:13 UTC (rev 120805)
+++ trunk/Source/WebCore/ChangeLog	2012-06-20 06:29:59 UTC (rev 120806)
@@ -1,3 +1,23 @@
+2012-06-19  Hayato Ito  <[email protected]>
+
+        Assertion for event's target is wrong.
+        https://bugs.webkit.org/show_bug.cgi?id=89479
+
+        Reviewed by Hajime Morita.
+
+        Fix an assertion to ensure that event's target is reachable from a current target.
+
+        No new tests. Fix an assert condition.
+
+        * dom/EventContext.cpp:
+        (WebCore::EventContext::EventContext):
+        * dom/EventContext.h:
+        (EventContext):
+        (WebCore::EventContext::setRelatedTarget):
+        (WebCore::EventContext::isUnreachableNode):
+        (WebCore):
+        (WebCore::EventContext::isReachable):
+
 2012-06-19  Benjamin Poulain  <[email protected]>
 
         Refactoring: Geolocation::startRequest() should not create the GeoNotifiers

Modified: trunk/Source/WebCore/dom/EventContext.cpp (120805 => 120806)


--- trunk/Source/WebCore/dom/EventContext.cpp	2012-06-20 06:23:13 UTC (rev 120805)
+++ trunk/Source/WebCore/dom/EventContext.cpp	2012-06-20 06:29:59 UTC (rev 120806)
@@ -42,7 +42,7 @@
     , m_relatedTarget(0)
 {
     ASSERT(m_node);
-    ASSERT(!m_target || m_target->toNode() || accessible(m_target->toNode()));
+    ASSERT(!isUnreachableNode(m_target.get()));
 }
 
 void EventContext::handleLocalEvents(Event* event) const

Modified: trunk/Source/WebCore/dom/EventContext.h (120805 => 120806)


--- trunk/Source/WebCore/dom/EventContext.h	2012-06-20 06:23:13 UTC (rev 120805)
+++ trunk/Source/WebCore/dom/EventContext.h	2012-06-20 06:29:59 UTC (rev 120806)
@@ -50,7 +50,8 @@
 
 private:
 #ifndef NDEBUG
-    bool accessible(Node*);
+    bool isUnreachableNode(EventTarget*);
+    bool isReachable(Node*);
 #endif
     RefPtr<Node> m_node;
     RefPtr<EventTarget> m_currentTarget;
@@ -80,13 +81,19 @@
 
 inline void EventContext::setRelatedTarget(PassRefPtr<EventTarget> relatedTarget)
 {
-    ASSERT(!relatedTarget || !relatedTarget->toNode() || accessible(relatedTarget->toNode()));
+    ASSERT(!isUnreachableNode(relatedTarget.get()));
     m_relatedTarget = relatedTarget;
 }
 
 #ifndef NDEBUG
-inline bool EventContext::accessible(Node* target)
+inline bool EventContext::isUnreachableNode(EventTarget* target)
 {
+    // FIXME: Checks also for SVG elements.
+    return target && target->toNode() && !target->toNode()->isSVGElement() && !isReachable(target->toNode());
+}
+
+inline bool EventContext::isReachable(Node* target)
+{
     ASSERT(target);
     TreeScope* targetScope = target->treeScope();
     for (TreeScope* scope = m_node->treeScope(); scope; scope = scope->parentTreeScope()) {
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to