Title: [120931] trunk
Revision
120931
Author
[email protected]
Date
2012-06-21 10:05:12 -0700 (Thu, 21 Jun 2012)

Log Message

[Crash][Editing] Pressing enter on LI element triggers assertion in Shadow DOM.
https://bugs.webkit.org/show_bug.cgi?id=89171

Reviewed by Ryosuke Niwa.

Source/WebCore:

Since modidying Shadow DOM removes renderer of elements in Shadow DOM and shadow host,
assertion to check the existence of renderer was triggered.

We should update layout here to create renderer again.

Test: editing/shadow/pressing-enter-on-list.html

* editing/CompositeEditCommand.cpp:
(WebCore::CompositeEditCommand::appendBlockPlaceholder):

LayoutTests:

* editing/shadow/pressing-enter-on-list-expected.txt: Added.
* editing/shadow/pressing-enter-on-list.html: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (120930 => 120931)


--- trunk/LayoutTests/ChangeLog	2012-06-21 17:03:28 UTC (rev 120930)
+++ trunk/LayoutTests/ChangeLog	2012-06-21 17:05:12 UTC (rev 120931)
@@ -1,3 +1,13 @@
+2012-06-21  Shinya Kawanaka  <[email protected]>
+
+        [Crash][Editing] Pressing enter on LI element triggers assertion in Shadow DOM.
+        https://bugs.webkit.org/show_bug.cgi?id=89171
+
+        Reviewed by Ryosuke Niwa.
+
+        * editing/shadow/pressing-enter-on-list-expected.txt: Added.
+        * editing/shadow/pressing-enter-on-list.html: Added.
+
 2012-06-21  Amy Ousterhout  <[email protected]>
 
         DeviceOrientation and DeviceMotion Test Cleanup

Added: trunk/LayoutTests/editing/shadow/pressing-enter-on-list-expected.txt (0 => 120931)


--- trunk/LayoutTests/editing/shadow/pressing-enter-on-list-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/editing/shadow/pressing-enter-on-list-expected.txt	2012-06-21 17:05:12 UTC (rev 120931)
@@ -0,0 +1,5 @@
+Pressing enter on the last character of <li> element in Shadow DOM was triggering assertion, becasue modifying Shadow DOM removes the renderer in Shadow DOM and desendant of shadow host.
+
+This tests confirms it won't happen any more.
+
+PASS

Added: trunk/LayoutTests/editing/shadow/pressing-enter-on-list.html (0 => 120931)


--- trunk/LayoutTests/editing/shadow/pressing-enter-on-list.html	                        (rev 0)
+++ trunk/LayoutTests/editing/shadow/pressing-enter-on-list.html	2012-06-21 17:05:12 UTC (rev 120931)
@@ -0,0 +1,38 @@
+<!DOCTYPE html>
+<html>
+<body>
+<script src=""
+<script src=""
+
+<p>Pressing enter on the last character of &lt;li&gt; element in Shadow DOM was triggering assertion,
+becasue modifying Shadow DOM removes the renderer in Shadow DOM and desendant of shadow host.</p>
+<p>This tests confirms it won't happen any more.</p>
+
+<div id="container">
+    <ol id="host" contenteditable>
+        <li>LIST 1</li>
+        <li id="list2">LIST 2</li>
+        <li>LIST 3</li>
+    </ol>
+</div>
+
+<script>
+if (window.layoutTestController)
+    layoutTestController.dumpAsText();
+
+var shadowRoot = new WebKitShadowRoot(host);
+var li = document.createElement('li');
+li.innerHTML = 'inside shadow';
+shadowRoot.appendChild(li);
+shadowRoot.appendChild(document.createElement('shadow'));
+
+eventSender.mouseMoveTo(list2.offsetLeft + list2.offsetWidth - 10, list2.offsetTop + list2.offsetHeight / 2);
+eventSender.mouseDown();
+eventSender.mouseUp();
+
+eventSender.keyDown('\n');
+
+container.innerHTML = "PASS";
+</script>
+</body>
+</html>

Modified: trunk/Source/WebCore/ChangeLog (120930 => 120931)


--- trunk/Source/WebCore/ChangeLog	2012-06-21 17:03:28 UTC (rev 120930)
+++ trunk/Source/WebCore/ChangeLog	2012-06-21 17:05:12 UTC (rev 120931)
@@ -1,3 +1,20 @@
+2012-06-21  Shinya Kawanaka  <[email protected]>
+
+        [Crash][Editing] Pressing enter on LI element triggers assertion in Shadow DOM.
+        https://bugs.webkit.org/show_bug.cgi?id=89171
+
+        Reviewed by Ryosuke Niwa.
+
+        Since modidying Shadow DOM removes renderer of elements in Shadow DOM and shadow host,
+        assertion to check the existence of renderer was triggered.
+
+        We should update layout here to create renderer again.
+
+        Test: editing/shadow/pressing-enter-on-list.html
+
+        * editing/CompositeEditCommand.cpp:
+        (WebCore::CompositeEditCommand::appendBlockPlaceholder):
+
 2012-06-21  Andrey Adaikin  <[email protected]>
 
         Web Inspector: [WebGL] Add injected WebGL module class

Modified: trunk/Source/WebCore/editing/CompositeEditCommand.cpp (120930 => 120931)


--- trunk/Source/WebCore/editing/CompositeEditCommand.cpp	2012-06-21 17:03:28 UTC (rev 120930)
+++ trunk/Source/WebCore/editing/CompositeEditCommand.cpp	2012-06-21 17:05:12 UTC (rev 120931)
@@ -833,6 +833,8 @@
 {
     if (!container)
         return 0;
+
+    document()->updateLayoutIgnorePendingStylesheets();
     
     // Should assert isBlockFlow || isInlineFlow when deletion improves. See 4244964.
     ASSERT(container->renderer());
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to