Title: [92094] trunk
Revision
92094
Author
[email protected]
Date
2011-07-31 19:53:55 -0700 (Sun, 31 Jul 2011)

Log Message

Event target set to null post event dispatch
https://bugs.webkit.org/show_bug.cgi?id=63934

Reviewed by Dimitri Glazkov.

Source/WebCore:

Test: fast/events/event-target-reset.html

* dom/EventDispatcher.cpp:
(WebCore::EventDispatcher::dispatchEvent): Reset target to outermost
shadow host.

LayoutTests:

* fast/events/event-target-reset-expected.txt: Added.
* fast/events/event-target-reset.html: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (92093 => 92094)


--- trunk/LayoutTests/ChangeLog	2011-08-01 01:50:16 UTC (rev 92093)
+++ trunk/LayoutTests/ChangeLog	2011-08-01 02:53:55 UTC (rev 92094)
@@ -1,3 +1,13 @@
+2011-07-31  Dominic Cooney  <[email protected]>
+
+        Event target set to null post event dispatch
+        https://bugs.webkit.org/show_bug.cgi?id=63934
+
+        Reviewed by Dimitri Glazkov.
+
+        * fast/events/event-target-reset-expected.txt: Added.
+        * fast/events/event-target-reset.html: Added.
+
 2011-07-31  Gavin Barraclough  <[email protected]>
 
         https://bugs.webkit.org/show_bug.cgi?id=64679

Added: trunk/LayoutTests/fast/events/event-target-reset-expected.txt (0 => 92094)


--- trunk/LayoutTests/fast/events/event-target-reset-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/fast/events/event-target-reset-expected.txt	2011-08-01 02:53:55 UTC (rev 92094)
@@ -0,0 +1,7 @@
+Tests that events don't have their target reset to null after being dispatched.
+
+PASS event.target.tagName == "IFRAME"
+PASS savedEvent.target.tagName == "IFRAME"
+
+TEST COMPLETE
+

Added: trunk/LayoutTests/fast/events/event-target-reset.html (0 => 92094)


--- trunk/LayoutTests/fast/events/event-target-reset.html	                        (rev 0)
+++ trunk/LayoutTests/fast/events/event-target-reset.html	2011-08-01 02:53:55 UTC (rev 92094)
@@ -0,0 +1,47 @@
+<!DOCTYPE html>
+<html>
+<body>
+<p id="description">
+Tests that events don't have their target reset to null after being
+dispatched.
+</p>
+<pre id="console"></pre>
+<script>
+if (window.layoutTestController) {
+    layoutTestController.dumpAsText();
+    layoutTestController.waitUntilDone();
+}
+
+// We do ad-hoc logging and assertions here because external scripts
+// generate their own load events that complicate the test.
+
+function log(msg) {
+    document.querySelector('#console').appendChild(document.createTextNode(msg + '\n'));
+}
+
+function shouldBeTrue(condition) {
+    var msg = (eval(condition) ? 'PASS ' : 'FAIL ') + condition;
+    log(msg);
+}
+
+var savedEvent;
+
+function saveEvent(event) {
+    shouldBeTrue('event.target.tagName == "IFRAME"');
+    savedEvent = event;
+    window.setTimeout(checkSavedEvent, 0);
+}
+
+function checkSavedEvent() {
+    shouldBeTrue('savedEvent.target.tagName == "IFRAME"');
+    log('\nTEST COMPLETE');
+
+    if (window.layoutTestController)
+        layoutTestController.notifyDone();
+}
+
+document.addEventListener('load', saveEvent, true);
+document.write('<iframe></iframe>');
+</script>
+</body>
+</html>

Modified: trunk/Source/WebCore/ChangeLog (92093 => 92094)


--- trunk/Source/WebCore/ChangeLog	2011-08-01 01:50:16 UTC (rev 92093)
+++ trunk/Source/WebCore/ChangeLog	2011-08-01 02:53:55 UTC (rev 92094)
@@ -1,3 +1,16 @@
+2011-07-31  Dominic Cooney  <[email protected]>
+
+        Event target set to null post event dispatch
+        https://bugs.webkit.org/show_bug.cgi?id=63934
+
+        Reviewed by Dimitri Glazkov.
+
+        Test: fast/events/event-target-reset.html
+
+        * dom/EventDispatcher.cpp:
+        (WebCore::EventDispatcher::dispatchEvent): Reset target to outermost
+        shadow host.
+
 2011-07-31  Sam Weinig  <[email protected]>
 
         REGRESSION: getBoundingClientRect() method of Range incorrectly returns null for collapsed Range

Modified: trunk/Source/WebCore/dom/EventDispatcher.cpp (92093 => 92094)


--- trunk/Source/WebCore/dom/EventDispatcher.cpp	2011-08-01 01:50:16 UTC (rev 92093)
+++ trunk/Source/WebCore/dom/EventDispatcher.cpp	2011-08-01 02:53:55 UTC (rev 92094)
@@ -364,7 +364,12 @@
 
     // Ensure that after event dispatch, the event's target object is the
     // outermost shadow DOM boundary.
-    event->setTarget(windowContext.target());
+    if (topEventContext())
+        event->setTarget(topEventContext()->target());
+    else {
+        ASSERT(!m_node->isInShadowTree());
+        event->setTarget(m_node.get());
+    }
     event->setCurrentTarget(0);
     InspectorInstrumentation::didDispatchEvent(cookie);
 
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to