- Revision
- 118648
- Author
- [email protected]
- Date
- 2012-05-27 22:13:48 -0700 (Sun, 27 May 2012)
Log Message
cut, copy or paste event won't be fired in Shadow DOM.
https://bugs.webkit.org/show_bug.cgi?id=87352
Reviewed by Dimitri Glazkov.
Source/WebCore:
cut, copy or paste event was not fired in Shadow DOM.
Since event re-targeting has been implemented, it should be safe to fire them in Shadow DOM now.
Tests: fast/dom/shadow/cppevent-in-shadow.html
fast/dom/shadow/cppevent-input-in-shadow.html
* editing/Editor.cpp:
(WebCore::Editor::findEventTargetFrom):
LayoutTests:
* fast/dom/shadow/cppevent-in-shadow-expected.txt: Added.
* fast/dom/shadow/cppevent-in-shadow.html: Added.
* fast/dom/shadow/cppevent-input-in-shadow-expected.txt: Added.
* fast/dom/shadow/cppevent-input-in-shadow.html: Added.
Modified Paths
Added Paths
Diff
Modified: trunk/LayoutTests/ChangeLog (118647 => 118648)
--- trunk/LayoutTests/ChangeLog 2012-05-28 05:00:28 UTC (rev 118647)
+++ trunk/LayoutTests/ChangeLog 2012-05-28 05:13:48 UTC (rev 118648)
@@ -1,3 +1,15 @@
+2012-05-27 Shinya Kawanaka <[email protected]>
+
+ cut, copy or paste event won't be fired in Shadow DOM.
+ https://bugs.webkit.org/show_bug.cgi?id=87352
+
+ Reviewed by Dimitri Glazkov.
+
+ * fast/dom/shadow/cppevent-in-shadow-expected.txt: Added.
+ * fast/dom/shadow/cppevent-in-shadow.html: Added.
+ * fast/dom/shadow/cppevent-input-in-shadow-expected.txt: Added.
+ * fast/dom/shadow/cppevent-input-in-shadow.html: Added.
+
2012-05-27 Sudarsana Nagineni <[email protected]>
[EFL] Enable blob support for the EFL port
Added: trunk/LayoutTests/fast/dom/shadow/cppevent-in-shadow-expected.txt (0 => 118648)
--- trunk/LayoutTests/fast/dom/shadow/cppevent-in-shadow-expected.txt (rev 0)
+++ trunk/LayoutTests/fast/dom/shadow/cppevent-in-shadow-expected.txt 2012-05-28 05:13:48 UTC (rev 118648)
@@ -0,0 +1,10 @@
+dark: copy is fired.
+host: copy is fired.
+dark: cut is fired.
+host: cut is fired.
+dark: paste is fired.
+host: paste is fired.
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
Added: trunk/LayoutTests/fast/dom/shadow/cppevent-in-shadow.html (0 => 118648)
--- trunk/LayoutTests/fast/dom/shadow/cppevent-in-shadow.html (rev 0)
+++ trunk/LayoutTests/fast/dom/shadow/cppevent-in-shadow.html 2012-05-28 05:13:48 UTC (rev 118648)
@@ -0,0 +1,61 @@
+<!DOCTYPE html>
+<html>
+<body>
+<script src=""
+<script src=""
+<script src=""
+
+<div id="host"></div>
+<pre id="console"></pre>
+
+<script>
+function addListeners(element, name) {
+ var eventNames = ['copy', 'cut', 'paste'];
+ for (var i = 0; i < eventNames.length; ++i) {
+ (function(i) {
+ element.addEventListener(eventNames[i], function(e) {
+ debug(name + ': ' + eventNames[i] + ' is fired.');
+ });
+ })(i);
+ }
+}
+
+function createBox(name) {
+ var div = document.createElement('div');
+ div.style.width = '100px';
+ div.style.height = '100px';
+ div.setAttribute('contenteditable', true);
+
+ return div;
+}
+
+
+var shadowRoot = new WebKitShadowRoot(host);
+var div = document.createElement('div');
+shadowRoot.appendChild(div);
+
+var darkRoot = new WebKitShadowRoot(div);
+var box = createBox('dark');
+box.innerHTML = "Kotori Otonashi";
+darkRoot.appendChild(box);
+
+addListeners(box, 'dark');
+addListeners(host, 'host');
+
+if (window.eventSender) {
+ eventSender.mouseMoveTo(box.offsetLeft, box.offsetTop + box.offsetHeight / 2);
+ eventSender.mouseDown();
+ eventSender.mouseMoveTo(box.offsetLeft + box.offsetWidth, box.offsetTop + box.offsetHeight / 2);
+ eventSender.mouseUp();
+}
+
+document.execCommand('copy');
+document.execCommand('cut');
+document.execCommand('paste');
+
+var successfullyParsed = true;
+</script>
+
+<script src=""
+</body>
+</html>
Added: trunk/LayoutTests/fast/dom/shadow/cppevent-input-in-shadow-expected.txt (0 => 118648)
--- trunk/LayoutTests/fast/dom/shadow/cppevent-input-in-shadow-expected.txt (rev 0)
+++ trunk/LayoutTests/fast/dom/shadow/cppevent-input-in-shadow-expected.txt 2012-05-28 05:13:48 UTC (rev 118648)
@@ -0,0 +1,10 @@
+dark: copy is fired.
+host: copy is fired.
+dark: cut is fired.
+host: cut is fired.
+dark: paste is fired.
+host: paste is fired.
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
Added: trunk/LayoutTests/fast/dom/shadow/cppevent-input-in-shadow.html (0 => 118648)
--- trunk/LayoutTests/fast/dom/shadow/cppevent-input-in-shadow.html (rev 0)
+++ trunk/LayoutTests/fast/dom/shadow/cppevent-input-in-shadow.html 2012-05-28 05:13:48 UTC (rev 118648)
@@ -0,0 +1,59 @@
+<!DOCTYPE html>
+<html>
+<body>
+<script src=""
+<script src=""
+<script src=""
+
+<div id="host"></div>
+<pre id="console"></pre>
+
+<script>
+function addListeners(element, name) {
+ var eventNames = ['copy', 'cut', 'paste'];
+ for (var i = 0; i < eventNames.length; ++i) {
+ (function(i) {
+ element.addEventListener(eventNames[i], function(e) {
+ debug(name + ': ' + eventNames[i] + ' is fired.');
+ });
+ })(i);
+ }
+}
+
+function createInput() {
+ var div = document.createElement('input');
+ div.style.width = '100px';
+ div.style.height = '100px';
+ return div;
+}
+
+
+var shadowRoot = new WebKitShadowRoot(host);
+var div = document.createElement('div');
+shadowRoot.appendChild(div);
+
+var darkRoot = new WebKitShadowRoot(div);
+var input = createInput();
+input.setAttribute('value', 'Kotori Otonashi');
+darkRoot.appendChild(input);
+
+addListeners(input, 'dark');
+addListeners(host, 'host');
+
+if (window.eventSender) {
+ eventSender.mouseMoveTo(input.offsetLeft, input.offsetTop + input.offsetHeight / 2);
+ eventSender.mouseDown();
+ eventSender.mouseMoveTo(input.offsetLeft + input.offsetWidth, input.offsetTop + input.offsetHeight / 2);
+ eventSender.mouseUp();
+}
+
+document.execCommand('copy');
+document.execCommand('cut');
+document.execCommand('paste');
+
+var successfullyParsed = true;
+</script>
+
+<script src=""
+</body>
+</html>
Modified: trunk/Source/WebCore/ChangeLog (118647 => 118648)
--- trunk/Source/WebCore/ChangeLog 2012-05-28 05:00:28 UTC (rev 118647)
+++ trunk/Source/WebCore/ChangeLog 2012-05-28 05:13:48 UTC (rev 118648)
@@ -1,3 +1,19 @@
+2012-05-27 Shinya Kawanaka <[email protected]>
+
+ cut, copy or paste event won't be fired in Shadow DOM.
+ https://bugs.webkit.org/show_bug.cgi?id=87352
+
+ Reviewed by Dimitri Glazkov.
+
+ cut, copy or paste event was not fired in Shadow DOM.
+ Since event re-targeting has been implemented, it should be safe to fire them in Shadow DOM now.
+
+ Tests: fast/dom/shadow/cppevent-in-shadow.html
+ fast/dom/shadow/cppevent-input-in-shadow.html
+
+ * editing/Editor.cpp:
+ (WebCore::Editor::findEventTargetFrom):
+
2012-05-27 Hayato Ito <[email protected]>
Support multiple shadow roots in event dispatching.
Modified: trunk/Source/WebCore/editing/Editor.cpp (118647 => 118648)
--- trunk/Source/WebCore/editing/Editor.cpp 2012-05-28 05:00:28 UTC (rev 118647)
+++ trunk/Source/WebCore/editing/Editor.cpp 2012-05-28 05:13:48 UTC (rev 118648)
@@ -674,8 +674,8 @@
target = m_frame->document()->body();
if (!target)
return 0;
- return target->shadowAncestorNode();
+ return target;
}
Node* Editor::findEventTargetFromSelection() const