Title: [118889] trunk/Source/WebCore
Revision
118889
Author
[email protected]
Date
2012-05-29 21:05:53 -0700 (Tue, 29 May 2012)

Log Message

Add assertions to make sure that event's target and relatedTarget are accessible.
https://bugs.webkit.org/show_bug.cgi?id=87641

Reviewed by Dimitri Glazkov.

No new tests. No new functionality except for assertions.

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

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (118888 => 118889)


--- trunk/Source/WebCore/ChangeLog	2012-05-30 04:03:07 UTC (rev 118888)
+++ trunk/Source/WebCore/ChangeLog	2012-05-30 04:05:53 UTC (rev 118889)
@@ -1,3 +1,20 @@
+2012-05-29  Hayato Ito  <[email protected]>
+
+        Add assertions to make sure that event's target and relatedTarget are accessible.
+        https://bugs.webkit.org/show_bug.cgi?id=87641
+
+        Reviewed by Dimitri Glazkov.
+
+        No new tests. No new functionality except for assertions.
+
+        * dom/EventContext.cpp:
+        (WebCore::EventContext::EventContext):
+        * dom/EventContext.h:
+        (WebCore):
+        (EventContext):
+        (WebCore::EventContext::setRelatedTarget):
+        (WebCore::EventContext::accessible):
+
 2012-05-29  Kent Tamura  <[email protected]>
 
         Fix inefficient usage of traverseNextNode()

Modified: trunk/Source/WebCore/dom/EventContext.cpp (118888 => 118889)


--- trunk/Source/WebCore/dom/EventContext.cpp	2012-05-30 04:03:07 UTC (rev 118888)
+++ trunk/Source/WebCore/dom/EventContext.cpp	2012-05-30 04:05:53 UTC (rev 118889)
@@ -41,6 +41,8 @@
     , m_target(target)
     , m_relatedTarget(0)
 {
+    ASSERT(m_node);
+    ASSERT(!m_target || m_target->toNode() || accessible(m_target->toNode()));
 }
 
 void EventContext::handleLocalEvents(Event* event) const

Modified: trunk/Source/WebCore/dom/EventContext.h (118888 => 118889)


--- trunk/Source/WebCore/dom/EventContext.h	2012-05-30 04:03:07 UTC (rev 118888)
+++ trunk/Source/WebCore/dom/EventContext.h	2012-05-30 04:05:53 UTC (rev 118889)
@@ -27,13 +27,14 @@
 #ifndef EventContext_h
 #define EventContext_h
 
+#include "EventTarget.h"
+#include "Node.h"
+#include "TreeScope.h"
 #include <wtf/RefPtr.h>
 
 namespace WebCore {
 
-class EventTarget;
 class Event;
-class Node;
 
 class EventContext {
 public:
@@ -48,6 +49,9 @@
     void setRelatedTarget(PassRefPtr<EventTarget>);
 
 private:
+#ifndef NDEBUG
+    bool accessible(Node*);
+#endif
     RefPtr<Node> m_node;
     RefPtr<EventTarget> m_currentTarget;
     RefPtr<EventTarget> m_target;
@@ -76,9 +80,23 @@
 
 inline void EventContext::setRelatedTarget(PassRefPtr<EventTarget> relatedTarget)
 {
+    ASSERT(!relatedTarget || !relatedTarget->toNode() || accessible(relatedTarget->toNode()));
     m_relatedTarget = relatedTarget;
 }
 
+#ifndef NDEBUG
+inline bool EventContext::accessible(Node* target)
+{
+    ASSERT(target);
+    TreeScope* targetScope = target->treeScope();
+    for (TreeScope* scope = m_node->treeScope(); scope; scope = scope->parentTreeScope()) {
+        if (scope == targetScope)
+            return true;
+    }
+    return false;
 }
+#endif
 
+}
+
 #endif // EventContext_h
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to