Title: [118648] trunk
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
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to