Title: [114867] trunk
Revision
114867
Author
commit-qu...@webkit.org
Date
2012-04-22 22:19:46 -0700 (Sun, 22 Apr 2012)

Log Message

Reset event propagation and canceled flags in Event.initEvent
https://bugs.webkit.org/show_bug.cgi?id=83964

Patch by Pablo Flouret <pab...@motorola.com> on 2012-04-22
Reviewed by Ryosuke Niwa.

Step 3 in http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#dom-event-initevent
Useful for re-configuring an event before dispatching.

Source/WebCore:

Test: fast/events/flags-unset-on-init-event.html

* dom/Event.cpp:
(WebCore::Event::initEvent):

LayoutTests:

* fast/events/flags-unset-on-init-event-expected.txt: Added.
* fast/events/flags-unset-on-init-event.html: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (114866 => 114867)


--- trunk/LayoutTests/ChangeLog	2012-04-23 04:48:58 UTC (rev 114866)
+++ trunk/LayoutTests/ChangeLog	2012-04-23 05:19:46 UTC (rev 114867)
@@ -1,3 +1,16 @@
+2012-04-22  Pablo Flouret  <pab...@motorola.com>
+
+        Reset event propagation and canceled flags in Event.initEvent
+        https://bugs.webkit.org/show_bug.cgi?id=83964
+
+        Reviewed by Ryosuke Niwa.
+
+        Step 3 in http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#dom-event-initevent
+        Useful for re-configuring an event before dispatching.
+
+        * fast/events/flags-unset-on-init-event-expected.txt: Added.
+        * fast/events/flags-unset-on-init-event.html: Added.
+
 2012-04-22  Hironori Bono  <hb...@chromium.org>
 
         Replace an undefined variable with a constant

Added: trunk/LayoutTests/fast/events/flags-unset-on-init-event-expected.txt (0 => 114867)


--- trunk/LayoutTests/fast/events/flags-unset-on-init-event-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/fast/events/flags-unset-on-init-event-expected.txt	2012-04-23 05:19:46 UTC (rev 114867)
@@ -0,0 +1,12 @@
+An event's 'stop propagation', 'stop immediate propagation' and 'canceled' flags should be unset in initEvent
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS e.defaultPrevented is true
+Running e.initEvent again.
+PASS e.defaultPrevented is false
+PASS successfullyParsed is true
+
+TEST COMPLETE
+

Added: trunk/LayoutTests/fast/events/flags-unset-on-init-event.html (0 => 114867)


--- trunk/LayoutTests/fast/events/flags-unset-on-init-event.html	                        (rev 0)
+++ trunk/LayoutTests/fast/events/flags-unset-on-init-event.html	2012-04-23 05:19:46 UTC (rev 114867)
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<script src=""
+</head>
+<body>
+<input id=target type=text value="">
+<script>
+description("An event's 'stop propagation', 'stop immediate propagation' and 'canceled' flags should be unset in initEvent");
+
+window.jsTestIsAsync = true;
+
+var e = document.createEvent("Event");
+e.initEvent("foo", true, true);
+
+e.preventDefault();
+shouldBeTrue("e.defaultPrevented");
+e.stopPropagation();
+e.stopImmediatePropagation();
+
+debug("Running e.initEvent again.");
+e.initEvent("foo", true, true);
+shouldBeFalse("e.defaultPrevented");
+
+var target = document.getElementById("target");
+
+target.addEventListener("foo", function (ev) {
+    // This function will run if the propagation flags were reset properly on
+    // the second call to initEvent.
+    finishJSTest();
+}, false);
+
+target.dispatchEvent(e);
+
+target.parentNode.removeChild(target);
+
+</script>
+<script src=""
+</body>
+</html>

Modified: trunk/Source/WebCore/ChangeLog (114866 => 114867)


--- trunk/Source/WebCore/ChangeLog	2012-04-23 04:48:58 UTC (rev 114866)
+++ trunk/Source/WebCore/ChangeLog	2012-04-23 05:19:46 UTC (rev 114867)
@@ -1,3 +1,18 @@
+2012-04-22  Pablo Flouret  <pab...@motorola.com>
+
+        Reset event propagation and canceled flags in Event.initEvent
+        https://bugs.webkit.org/show_bug.cgi?id=83964
+
+        Reviewed by Ryosuke Niwa.
+
+        Step 3 in http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#dom-event-initevent
+        Useful for re-configuring an event before dispatching.
+
+        Test: fast/events/flags-unset-on-init-event.html
+
+        * dom/Event.cpp:
+        (WebCore::Event::initEvent):
+
 2012-04-22  Martin Robinson  <mrobin...@igalia.com>
 
         [Cairo] Implement CompositeDifference

Modified: trunk/Source/WebCore/dom/Event.cpp (114866 => 114867)


--- trunk/Source/WebCore/dom/Event.cpp	2012-04-23 04:48:58 UTC (rev 114866)
+++ trunk/Source/WebCore/dom/Event.cpp	2012-04-23 05:19:46 UTC (rev 114867)
@@ -92,6 +92,10 @@
     if (dispatched())
         return;
 
+    m_propagationStopped = false;
+    m_immediatePropagationStopped = false;
+    m_defaultPrevented = false;
+
     m_type = eventTypeArg;
     m_canBubble = canBubbleArg;
     m_cancelable = cancelableArg;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to