Diff
Modified: releases/WebKitGTK/webkit-2.10/LayoutTests/ChangeLog (190938 => 190939)
--- releases/WebKitGTK/webkit-2.10/LayoutTests/ChangeLog 2015-10-13 09:35:51 UTC (rev 190938)
+++ releases/WebKitGTK/webkit-2.10/LayoutTests/ChangeLog 2015-10-13 09:39:04 UTC (rev 190939)
@@ -1,3 +1,18 @@
+2015-09-22 Ryosuke Niwa <[email protected]>
+
+ Event fired on a detached node does not bubble up
+ https://bugs.webkit.org/show_bug.cgi?id=149488
+
+ Reviewed by Antti Koivisto.
+
+ Added a regression test. Also modified and rebaselined mouseout-dead-node.html added in r19897
+ since our new behavior matches that of the latest Firefox as well as Chrome.
+
+ * fast/events/event-propagation-in-detached-tree-expected.txt: Added.
+ * fast/events/event-propagation-in-detached-tree.html: Added.
+ * fast/events/mouseout-dead-node-expected.txt:
+ * fast/events/mouseout-dead-node.html:
+
2015-09-22 sangdeug.kim <[email protected]>
Add test for checking currentTime of mediacontroller when playback is completed.
Added: releases/WebKitGTK/webkit-2.10/LayoutTests/fast/events/event-propagation-in-detached-tree-expected.txt (0 => 190939)
--- releases/WebKitGTK/webkit-2.10/LayoutTests/fast/events/event-propagation-in-detached-tree-expected.txt (rev 0)
+++ releases/WebKitGTK/webkit-2.10/LayoutTests/fast/events/event-propagation-in-detached-tree-expected.txt 2015-10-13 09:39:04 UTC (rev 190939)
@@ -0,0 +1,25 @@
+Tests dispatching an event that bubbles inside a detached tree. The event should propagate to the ancestors of the target
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+clonedRoot = cloneNode(root)
+clonedTarget = clonedRoot.getElementById("target"); dispatchEventWithLog(clonedTarget);
+PASS clonedRoot instanceof DocumentFragment is true
+PASS log.length is 4
+PASS log[0] is [clonedTarget, clonedTarget]
+PASS log[1] is [clonedTarget.parentNode, clonedTarget]
+PASS log[2] is [clonedTarget.parentNode.parentNode, clonedTarget]
+PASS log[3] is [clonedRoot, clonedTarget]
+PASS clonedRoot.parentNode is null
+
+root.remove(); dispatchEventWithLog(target);
+PASS log.length is 3
+PASS log[0] is [target, target]
+PASS log[1] is [target.parentNode, target]
+PASS log[2] is [root, target]
+PASS root.parentNode is null
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
Added: releases/WebKitGTK/webkit-2.10/LayoutTests/fast/events/event-propagation-in-detached-tree.html (0 => 190939)
--- releases/WebKitGTK/webkit-2.10/LayoutTests/fast/events/event-propagation-in-detached-tree.html (rev 0)
+++ releases/WebKitGTK/webkit-2.10/LayoutTests/fast/events/event-propagation-in-detached-tree.html 2015-10-13 09:39:04 UTC (rev 190939)
@@ -0,0 +1,57 @@
+<!DOCTYPE html>
+<html>
+<body>
+<div id="root">
+ <span>
+ <span id="target"></span>
+ </span>
+</div>
+<script src=""
+<script>
+
+description('Tests dispatching an event that bubbles inside a detached tree. The event should propagate to the ancestors of the target');
+
+var log;
+
+function dispatchEventWithLog(target) {
+ log = [];
+ for (var node = target; node; node = node.parentNode)
+ node.addEventListener('foo', (function (event) { log.push([this, event.target]); }).bind(node));
+ target.dispatchEvent(new Event("foo", {bubbles: true}));
+}
+
+function cloneNode(node) {
+ range = new Range;
+ range.selectNode(node);
+ return range.cloneContents();
+}
+
+var target = document.getElementById("target");
+var root = document.getElementById("root");
+
+evalAndLog('clonedRoot = cloneNode(root)');
+evalAndLog('clonedTarget = clonedRoot.getElementById("target"); dispatchEventWithLog(clonedTarget);');
+
+shouldBeTrue('clonedRoot instanceof DocumentFragment');
+shouldBe('log.length', '4');
+shouldBe('log[0]', '[clonedTarget, clonedTarget]');
+shouldBe('log[1]', '[clonedTarget.parentNode, clonedTarget]');
+shouldBe('log[2]', '[clonedTarget.parentNode.parentNode, clonedTarget]');
+shouldBe('log[3]', '[clonedRoot, clonedTarget]');
+shouldBeNull('clonedRoot.parentNode');
+
+debug('');
+evalAndLog('root.remove(); dispatchEventWithLog(target);');
+
+shouldBe('log.length', '3');
+shouldBe('log[0]', '[target, target]');
+shouldBe('log[1]', '[target.parentNode, target]');
+shouldBe('log[2]', '[root, target]');
+shouldBeNull('root.parentNode');
+
+var successfullyParsed = true;
+
+</script>
+<script src=""
+</body>
+</html>
Modified: releases/WebKitGTK/webkit-2.10/LayoutTests/fast/events/mouseout-dead-node-expected.txt (190938 => 190939)
--- releases/WebKitGTK/webkit-2.10/LayoutTests/fast/events/mouseout-dead-node-expected.txt 2015-10-13 09:35:51 UTC (rev 190938)
+++ releases/WebKitGTK/webkit-2.10/LayoutTests/fast/events/mouseout-dead-node-expected.txt 2015-10-13 09:39:04 UTC (rev 190939)
@@ -3,8 +3,10 @@
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
-PASS mouseout
-PASS mouseout
+PASS mouseout 1
+PASS mouseout 2
+PASS mouseout 3
+PASS mouseout 4
PASS successfullyParsed is true
TEST COMPLETE
Modified: releases/WebKitGTK/webkit-2.10/LayoutTests/fast/events/mouseout-dead-node.html (190938 => 190939)
--- releases/WebKitGTK/webkit-2.10/LayoutTests/fast/events/mouseout-dead-node.html 2015-10-13 09:35:51 UTC (rev 190938)
+++ releases/WebKitGTK/webkit-2.10/LayoutTests/fast/events/mouseout-dead-node.html 2015-10-13 09:39:04 UTC (rev 190939)
@@ -7,16 +7,16 @@
<p id="description"></p>
<div id="test-container">
<div id=d0 style='border:2px solid red'>
-<div _onmouseout_='testFailed("mouseout")' _onmouseover_='document.getElementById("d0").innerHTML ="you should see PASS below"'>
-<div _onmouseout_='testFailed("mouseout")'>
-<span id=target1 _onmouseout_='testPassed("mouseout")' >
+<div _onmouseout_='testPassed("mouseout 3")' _onmouseover_='document.getElementById("d0").innerHTML ="you should see PASS below"'>
+<div _onmouseout_='testPassed("mouseout 2")'>
+<span id=target1 _onmouseout_='testPassed("mouseout 1")' >
mouse over me
</span>
</div>
</div>
</div>
<div id=d1 style='border:2px solid blue'>
-<div id=target2 _onmouseout_='testPassed("mouseout")' _onmouseover_='document.getElementById("d1").innerHTML ="you should see PASS below"' >
+<div id=target2 _onmouseout_='testPassed("mouseout 4")' _onmouseover_='document.getElementById("d1").innerHTML ="you should see PASS below"' >
mouse over me
</div>
</div>
Modified: releases/WebKitGTK/webkit-2.10/LayoutTests/imported/w3c/ChangeLog (190938 => 190939)
--- releases/WebKitGTK/webkit-2.10/LayoutTests/imported/w3c/ChangeLog 2015-10-13 09:35:51 UTC (rev 190938)
+++ releases/WebKitGTK/webkit-2.10/LayoutTests/imported/w3c/ChangeLog 2015-10-13 09:39:04 UTC (rev 190939)
@@ -1,3 +1,14 @@
+2015-09-22 Ryosuke Niwa <[email protected]>
+
+ Event fired on a detached node does not bubble up
+ https://bugs.webkit.org/show_bug.cgi?id=149488
+
+ Reviewed by Antti Koivisto.
+
+ Rebaselined a test now that one more test case passes.
+
+ * web-platform-tests/dom/events/EventTarget-dispatchEvent-expected.txt:
+
2015-09-13 Chris Dumez <[email protected]>
Document.title does not behave according to specification
Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/ChangeLog (190938 => 190939)
--- releases/WebKitGTK/webkit-2.10/Source/WebCore/ChangeLog 2015-10-13 09:35:51 UTC (rev 190938)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/ChangeLog 2015-10-13 09:39:04 UTC (rev 190939)
@@ -1,3 +1,20 @@
+2015-09-22 Ryosuke Niwa <[email protected]>
+
+ Event fired on a detached node does not bubble up
+ https://bugs.webkit.org/show_bug.cgi?id=149488
+
+ Reviewed by Antti Koivisto.
+
+ The bug was caused by an explicit check inside EventPath to match an old Firefox behavior (see r19897).
+ Since Firefox's behavior has changed to match DOM4: https://dom.spec.whatwg.org/#concept-event-dispatch
+
+ Fixed the bug by removing the check. The new behavior matches DO4 and behaviors of Firefox and Chrome.
+
+ Test: fast/events/event-propagation-in-detached-tree.html
+
+ * dom/EventDispatcher.cpp:
+ (WebCore::EventPath::EventPath):
+
2015-09-22 Tim Horton <[email protected]>
Make it more obvious when using an unaccelerated image buffer, and fix a few callers who do
Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/dom/EventDispatcher.cpp (190938 => 190939)
--- releases/WebKitGTK/webkit-2.10/Source/WebCore/dom/EventDispatcher.cpp 2015-10-13 09:35:51 UTC (rev 190938)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/dom/EventDispatcher.cpp 2015-10-13 09:39:04 UTC (rev 190939)
@@ -415,7 +415,6 @@
EventPath::EventPath(Node& targetNode, Event& event)
{
- bool inDocument = targetNode.inDocument();
bool isSVGElement = targetNode.isSVGElement();
bool isMouseOrFocusEvent = event.isMouseEvent() || event.isFocusEvent();
#if ENABLE(TOUCH_EVENTS) && !PLATFORM(IOS)
@@ -437,8 +436,6 @@
#endif
else
m_path.append(std::make_unique<EventContext>(node, currentTarget, target));
- if (!inDocument)
- return;
if (is<ShadowRoot>(*node))
break;
}