Commit f38d7c7b authored by ggaren's avatar ggaren

LayoutTests:

        Reviewed by Justin Garcia.
        
        Used a PERL script to add calls to opt into dumping of editing callbacks
        in all editing tests that didn't do so already. This is required now that 
        dumping of editing callbacks is opt-in.
        
        Updated editing.js so that any test that calls runEditingTest() opt into
        dumping of editing callbacks.
        
        Updated results in all non-editing tests to remove dumping of editing callbacks.
        
        Updated results in all editing tests to reflect minor DOM changes due to new
        <script> elements.
        
        [ many tests and results modified ]

WebKitTools:

        Reviewed by Justin Garcia.
        
        Made dumping of editing callbacks opt-in, so that editing spew doesn't 
        cloud non-editing tests.

        * DumpRenderTree/DumpRenderTree.m:
        (+[LayoutTestController isSelectorExcludedFromWebScript:]):
        (-[LayoutTestController shouldDumpEditingCallbacks]):
        (runTest):
        * DumpRenderTree/EditingDelegate.m:
        (-[EditingDelegate webView:shouldBeginEditingInDOMRange:]):
        (-[EditingDelegate webView:shouldEndEditingInDOMRange:]):
        (-[EditingDelegate webView:shouldInsertNode:replacingDOMRange:givenAction:]):
        (-[EditingDelegate webView:shouldInsertText:replacingDOMRange:givenAction:]):
        (-[EditingDelegate webView:shouldDeleteDOMRange:]):
        (-[EditingDelegate webView:shouldChangeSelectedDOMRange:toDOMRange:affinity:stillSelecting:]):
        (-[EditingDelegate webView:shouldApplyStyle:toElementsInDOMRange:]):
        (-[EditingDelegate webView:shouldChangeTypingStyle:toStyle:]):
        (-[EditingDelegate webViewDidBeginEditing:]):
        (-[EditingDelegate webViewDidChange:]):
        (-[EditingDelegate webViewDidEndEditing:]):
        (-[EditingDelegate webViewDidChangeTypingStyle:]):
        (-[EditingDelegate webViewDidChangeSelection:]):



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@17562 268f45cc-cd09-0410-ab3c-d52691b4dbfc
parent 3a9d3d45
2006-11-02 Geoffrey Garen <ggaren@apple.com>
Reviewed by Justin Garcia.
Used a PERL script to add calls to opt into dumping of editing callbacks
in all editing tests that didn't do so already. This is required now that
dumping of editing callbacks is opt-in.
Updated editing.js so that any test that calls runEditingTest() opt into
dumping of editing callbacks.
Updated results in all non-editing tests to remove dumping of editing callbacks.
Updated results in all editing tests to reflect minor DOM changes due to new
<script> elements.
[ many tests and results modified ]
2006-11-02 Geoffrey Garen <ggaren@apple.com>
Updated results because they were incorrect when checked in. (We never
EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
Test: http://www.w3.org/2001/DOM-Test-Suite/level2/html/HTMLInputElement22
Status: Success
EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
Test: http://www.w3.org/2001/DOM-Test-Suite/level2/html/HTMLTextAreaElement14
Status: Success
EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
Test: http://www.w3.org/2001/DOM-Test-Suite/level2/html/HTMLTextAreaElement15
Status: Success
EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
Test http://www.w3.org/2001/DOM-Test-Suite/level2/html/HTMLInputElement22
Status Success
EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
Test http://www.w3.org/2001/DOM-Test-Suite/level2/html/HTMLTextAreaElement14
Status Success
EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
Test http://www.w3.org/2001/DOM-Test-Suite/level2/html/HTMLTextAreaElement15
Status Success
<html>
<head>
<script>
if (window.layoutTestController)
layoutTestController.dumpEditingCallbacks();
</script>
<script>
if (window.layoutTestController) {
layoutTestController.waitUntilDone();
......
......@@ -34,4 +34,4 @@ layer at (0,0) size 800x600
RenderListMarker at (-17,0) size 7x18
RenderText {#text} at (0,0) size 20x18
text run at (0,0) width 20: "bar"
caret: position 3 of child 0 {#text} of child 0 {B} of child 0 {DIV} of child 2 {DIV} of child 0 {BODY} of child 0 {HTML} of document
caret: position 3 of child 0 {#text} of child 0 {B} of child 0 {DIV} of child 2 {DIV} of child 1 {BODY} of child 0 {HTML} of document
<script>
if (window.layoutTestController)
layoutTestController.dumpEditingCallbacks();
</script>
<p>This tests deletion when the caret is in an empty list item at the beginning of the document. It also makes sure that the style inside the empty list item is retained. You should see '<b>foo</b>' followed by a list item containing 'bar'.</p>
<div id="div" contenteditable="true"><ul><li id="start" style="font-weight:bold;"></li><li>bar</li></ul></div>
......
......@@ -28,4 +28,4 @@ layer at (0,0) size 800x600
RenderListItem {LI} at (40,18) size 744x18
RenderListMarker at (-17,0) size 7x18
RenderBR {BR} at (0,0) size 0x18
caret: position 0 of child 0 {BR} of child 0 {UL} of child 3 {DIV} of child 0 {BODY} of child 0 {HTML} of document
caret: position 0 of child 0 {BR} of child 0 {UL} of child 3 {DIV} of child 1 {BODY} of child 0 {HTML} of document
<script>
if (window.layoutTestController)
layoutTestController.dumpEditingCallbacks();
</script>
<body>
<p>This test deletes the contents of a sub-list. Since it is fully selected, it should be removed. But the list item below it should remain. <b>The fact that the caret ends up in an orphaned list child might be considered a bug.</b></p>
<div id="div" contentEditable="true"><ul><ul><li>foo</li></ul><li><br></li></ul></div>
......
......@@ -23,4 +23,4 @@ layer at (0,0) size 800x600
RenderInline {SPAN} at (0,0) size 24x18
RenderText {#text} at (21,0) size 24x18
text run at (21,0) width 24: "bar"
caret: position 3 of child 0 {#text} of child 1 {DIV} of child 2 {DIV} of child 0 {BODY} of child 0 {HTML} of document
caret: position 3 of child 0 {#text} of child 1 {DIV} of child 2 {DIV} of child 1 {BODY} of child 0 {HTML} of document
<script>
if (window.layoutTestController)
layoutTestController.dumpEditingCallbacks();
</script>
<p>This places the caret before the 'b' in 'bar' and Deletes. 'foo' and 'bar' should end up on the same line, but neither should change style.</p>
<div contenteditable="true">
<div>foo</div>
......
......@@ -31,4 +31,4 @@ layer at (0,0) size 800x600
RenderBlock {DIV} at (5,174) size 774x32 [border: (1px solid #000000)]
RenderBlock {DIV} at (6,6) size 762x20 [border: (1px solid #FF0000)]
RenderBR {BR} at (1,1) size 0x18
caret: position 0 of child 0 {BR} of child 0 {DIV} of child 6 {DIV} of child 1 {BODY} of child 0 {HTML} of document
caret: position 0 of child 0 {BR} of child 0 {DIV} of child 6 {DIV} of child 2 {BODY} of child 0 {HTML} of document
<script>
if (window.layoutTestController)
layoutTestController.dumpEditingCallbacks();
</script>
<style>
div {
border: 1px solid black;
......
......@@ -18,4 +18,4 @@ layer at (0,0) size 800x600
RenderInline {SPAN} at (0,0) size 21x18
RenderText {#text} at (28,0) size 21x18
text run at (28,0) width 21: "foo"
caret: position 0 of child 0 {#text} of child 0 {SPAN} of child 0 {BLOCKQUOTE} of child 2 {DIV} of child 0 {BODY} of child 0 {HTML} of document
caret: position 0 of child 0 {#text} of child 0 {SPAN} of child 0 {BLOCKQUOTE} of child 2 {DIV} of child 1 {BODY} of child 0 {HTML} of document
<script>
if (window.layoutTestController)
layoutTestController.dumpEditingCallbacks();
</script>
<p>When a user puts the caret at the very beginning of a blockquote and hits backspace, if the line before the blockquote is empty, the blockquote should just move up.</p>
<div contenteditable="true"><div><br></div><blockquote style="margin: 0px; padding-left: 25px; border-left: 3px solid blue; color: blue;" type="cite"><span id="test">foo</span></blockquote></div>
......
......@@ -19,4 +19,4 @@ layer at (0,0) size 800x600
RenderInline {SPAN} at (0,0) size 21x18
RenderText {#text} at (0,0) size 21x18
text run at (0,0) width 21: "foo"
caret: position 0 of child 0 {#text} of child 0 {SPAN} of child 0 {LI} of child 0 {UL} of child 2 {DIV} of child 0 {BODY} of child 0 {HTML} of document
caret: position 0 of child 0 {#text} of child 0 {SPAN} of child 0 {LI} of child 0 {UL} of child 2 {DIV} of child 1 {BODY} of child 0 {HTML} of document
<script>
if (window.layoutTestController)
layoutTestController.dumpEditingCallbacks();
</script>
<p>When a user puts the caret at the very beginning a list and hits delete into an empty line, the list should just move up.</p>
<div contenteditable="true"><div><br></div><ul><li><span id="test">foo</span></li></ul></div>
......
......@@ -29,4 +29,4 @@ layer at (0,0) size 800x600
RenderBlock (anonymous) at (11,67) size 714x18
RenderText {#text} at (0,0) size 30x18
text run at (0,0) width 30: "Four"
caret: position 3 of child 0 {#text} of child 1 {DIV} of child 2 {DIV} of child 1 {BODY} of child 0 {HTML} of document
caret: position 3 of child 0 {#text} of child 1 {DIV} of child 2 {DIV} of child 2 {BODY} of child 0 {HTML} of document
<script>
if (window.layoutTestController)
layoutTestController.dumpEditingCallbacks();
</script>
<style>
div {
margin: 0.5em;
......
......@@ -23,4 +23,4 @@ layer at (0,0) size 800x600
RenderBlock {DIV} at (0,18) size 784x18
RenderText {#text} at (0,0) size 22x18
text run at (0,0) width 22: "baz"
caret: position 3 of child 0 {#text} of child 2 {DIV} of child 0 {BODY} of child 0 {HTML} of document
caret: position 3 of child 0 {#text} of child 2 {DIV} of child 1 {BODY} of child 0 {HTML} of document
<script>
if (window.layoutTestController)
layoutTestController.dumpEditingCallbacks();
</script>
<p>This tests deleting the line break before a paragraph that ends with unrendered space.</p>
<div id="test" contenteditable="true">foo<br>bar
<div>baz</div></div>
......
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<script>
if (window.layoutTestController)
layoutTestController.dumpEditingCallbacks();
</script>
<title>Editing Test</title>
<script type="text/javascript">
function getContainer(containerID) {return document.getElementById(containerID);}
......
......@@ -23,4 +23,4 @@ layer at (0,0) size 800x600
RenderText {#text} at (0,0) size 24x30
text run at (0,0) width 0: " "
text run at (0,15) width 24: "bar"
caret: position 0 of child 0 {#text} of child 0 {PRE} of child 2 {DIV} of child 0 {BODY} of child 0 {HTML} of document
caret: position 0 of child 0 {#text} of child 0 {PRE} of child 2 {DIV} of child 1 {BODY} of child 0 {HTML} of document
<script>
if (window.layoutTestController)
layoutTestController.dumpEditingCallbacks();
</script>
<p>This tests for a bug where deleting a paragraph in preserveNewline text would introduce an extra line. You should see '\nbar' below.</p>
<div id="test" contenteditable="true"><pre>foo
bar</pre></div>
......
......@@ -41,4 +41,4 @@ layer at (0,0) size 800x600
text run at (0,0) width 24: "baz"
RenderBlock (anonymous) at (0,36) size 784x0
RenderInline {B} at (0,0) size 0x0
caret: position 1 of child 0 {#text} of child 4 {DIV} of child 0 {BODY} of child 0 {HTML} of document
caret: position 1 of child 0 {#text} of child 4 {DIV} of child 1 {BODY} of child 0 {HTML} of document
<script>
if (window.layoutTestController)
layoutTestController.dumpEditingCallbacks();
</script>
<p>This tests the pruning that delete does when the it merges two paragraphs when the selection to delete spans multiple blocks.</p>
<p>You should see:<br>f<b>ar<br>baz</b></p>
<div id="test" contenteditable="true">foo<b><div>bar</div><div>baz</div></b></div>
......
......@@ -29,4 +29,4 @@ layer at (0,0) size 800x600
RenderInline {SPAN} at (0,0) size 24x18
RenderText {#text} at (21,0) size 24x18
text run at (21,0) width 24: "bar"
caret: position 3 of child 0 {#text} of child 0 {DIV} of child 2 {DIV} of child 0 {BODY} of child 0 {HTML} of document
caret: position 3 of child 0 {#text} of child 0 {DIV} of child 2 {DIV} of child 1 {BODY} of child 0 {HTML} of document
<script>
if (window.layoutTestController)
layoutTestController.dumpEditingCallbacks();
</script>
<p>This tests to see if deletion correctly prunes the containers of the paragraph being moved during a merge. You should see 'foo<b>bar</b>' below.</p>
<div id="test" contenteditable="true"><div>foo</div><div style="border: 1px solid blue; padding: 5px"><b><div style="border: 1px solid red; padding: 5px">bar</div></b></div></div>
......
......@@ -22,4 +22,4 @@ layer at (0,0) size 800x600
RenderBlock {DIV} at (0,52) size 784x18
RenderText {#text} at (0,0) size 47x18
text run at (0,0) width 47: "foo baz"
caret: position 3 of child 0 {#text} of child 2 {DIV} of child 0 {BODY} of child 0 {HTML} of document
caret: position 3 of child 0 {#text} of child 2 {DIV} of child 1 {BODY} of child 0 {HTML} of document
<script>
if (window.layoutTestController)
layoutTestController.dumpEditingCallbacks();
</script>
<p>This tests deleting a selection created with a word granularity. To run it manually, double click on 'bar' and hit delete. You should see 'foo bar'.</p>
<div id="div" contenteditable="true">foo bar baz</div>
......
......@@ -22,4 +22,4 @@ layer at (0,0) size 800x600
RenderBlock {DIV} at (0,52) size 784x18
RenderText {#text} at (0,0) size 47x18
text run at (0,0) width 47: "foo baz"
caret: position 3 of child 0 {#text} of child 2 {DIV} of child 0 {BODY} of child 0 {HTML} of document
caret: position 3 of child 0 {#text} of child 2 {DIV} of child 1 {BODY} of child 0 {HTML} of document
<script>
if (window.layoutTestController)
layoutTestController.dumpEditingCallbacks();
</script>
<p>This tests deleting a selection created with a word granularity. To run it manually, double click on 'bar' and hit forward delete. You should see 'foo bar'.</p>
<div id="div" contenteditable="true">foo bar baz</div>
......
......@@ -27,4 +27,4 @@ layer at (0,0) size 800x600
RenderBlock {DIV} at (2,2) size 170x18
RenderText {#text} at (0,0) size 170x18
text run at (0,0) width 170: "should be in different cells."
caret: position 24 of child 0 {#text} of child 0 {DIV} of child 0 {TD} of child 0 {TR} of child 0 {TBODY} of child 0 {TABLE} of child 2 {DIV} of child 0 {BODY} of child 0 {HTML} of document
caret: position 24 of child 0 {#text} of child 0 {DIV} of child 0 {TD} of child 0 {TR} of child 0 {TBODY} of child 0 {TABLE} of child 2 {DIV} of child 1 {BODY} of child 0 {HTML} of document
<script>
if (window.layoutTestController)
layoutTestController.dumpEditingCallbacks();
</script>
<p>This tests deletion of a selection that spans multiple cells. Just table content should be removed, not table structure.</p>
<div id="test" contenteditable="true"><table border="1"><tr><td><div>These two pieces of text<span id="start">blah</span></div></td><td><div><span id="end">blah</span> should be in different cells.</div></td></tr></table>
......
......@@ -20,4 +20,4 @@ layer at (0,0) size 800x600
text run at (0,18) width 353: "There should be three paragraphs in this editable region."
text run at (353,18) width 0: " "
text run at (0,36) width 192: "The first one should be empty."
caret: position 0 of child 0 {#text} of child 2 {DIV} of child 0 {BODY} of child 0 {HTML} of document
caret: position 0 of child 0 {#text} of child 2 {DIV} of child 1 {BODY} of child 0 {HTML} of document
<script>
if (window.layoutTestController)
layoutTestController.dumpEditingCallbacks();
</script>
<p>This tests for a bug in endOfLine.</p>
<div id="test" contenteditable="true" style="white-space:pre;">You should not see this paragraph after the test.
......
......@@ -703,6 +703,9 @@ function forwardDeleteCommand() {
//-------------------------------------------------------------------------------------------------------
function runEditingTest() {
if (window.layoutTestController)
layoutTestController.dumpEditingCallbacks();
var elem = document.getElementById("test");
var selection = window.getSelection();
selection.setPosition(elem, 0);
......
......@@ -45,5 +45,5 @@ layer at (0,0) size 800x600
RenderText {#text} at (0,0) size 22x18
text run at (0,0) width 22: "baz"
RenderBlock (anonymous) at (0,124) size 784x0
selection start: position 2 of child 0 {#text} of child 1 {SPAN} of child 0 {LI} of child 0 {OL} of child 2 {DIV} of child 0 {BODY} of child 0 {HTML} of document
selection end: position 2 of child 0 {#text} of child 0 {SPAN} of child 5 {LI} of child 0 {OL} of child 2 {DIV} of child 0 {BODY} of child 0 {HTML} of document
selection start: position 2 of child 0 {#text} of child 1 {SPAN} of child 0 {LI} of child 0 {OL} of child 2 {DIV} of child 1 {BODY} of child 0 {HTML} of document
selection end: position 2 of child 0 {#text} of child 0 {SPAN} of child 5 {LI} of child 0 {OL} of child 2 {DIV} of child 1 {BODY} of child 0 {HTML} of document
<script>
if (window.layoutTestController)
layoutTestController.dumpEditingCallbacks();
</script>
<p>This tests Insert{Un}OrderedList on a range selection that contains a mix of list and non-list content.</p>
<div id="test" contenteditable="true">asd<span id="start">foo</span><br><ul><li>bar</li></ul>baz<br>foo<ol><li>bar</li></ol><span id="end">baz</span></div>
<script>
......
......@@ -26,4 +26,4 @@ layer at (0,0) size 800x600
RenderBlock {HR} at (0,0) size 744x2 [border: (1px inset #000000)]
RenderBlock (anonymous) at (0,36) size 744x0
RenderBlock (anonymous) at (0,44) size 784x0
caret: position 122 of child 0 {#text} of child 1 {B} of child 0 {P} of child 0 {BODY} of child 0 {HTML} of document
caret: position 122 of child 0 {#text} of child 1 {B} of child 0 {P} of child 1 {BODY} of child 0 {HTML} of document
<script>
if (window.layoutTestController)
layoutTestController.dumpEditingCallbacks();
</script>
<p>This test pushes a horizontal rule into an unordered list with InsertUnorderedList. <b>The fact that the horizontal rule is put into an unnecessary div when it's pushed into the list might be considered a bug.</b></p>
<div contenteditable="true" id="div"><hr></div>
......
......@@ -20,5 +20,5 @@ layer at (0,0) size 800x600
text run at (25,0) width 20: "bar"
RenderText {#text} at (45,0) size 101x18
text run at (45,0) width 101: " baz foo bar baz"
selection start: position 9 of child 2 {#text} of child 2 {DIV} of child 0 {BODY} of child 0 {HTML} of document
selection end: position 12 of child 2 {#text} of child 2 {DIV} of child 0 {BODY} of child 0 {HTML} of document
selection start: position 9 of child 2 {#text} of child 2 {DIV} of child 1 {BODY} of child 0 {HTML} of document
selection end: position 12 of child 2 {#text} of child 2 {DIV} of child 1 {BODY} of child 0 {HTML} of document
<script>
if (window.layoutTestController)
layoutTestController.dumpEditingCallbacks();
</script>
<p>This tests to see if Find will get stuck when searching for a word that is currently selected, and was selected with a double click.</p>
<div>foo <span id="selectme">bar</span> baz foo bar baz</div>
......
......@@ -17,5 +17,5 @@ layer at (0,0) size 800x600
text run at (1,19) width 20: "bar"
RenderText {#text} at (21,19) size 26x18
text run at (21,19) width 26: " baz"
selection start: position 0 of child 0 {#text} of child 1 {SPAN} of child 2 {DIV} of child 0 {BODY} of child 0 {HTML} of document
selection end: position 1 of child 2 {#text} of child 2 {DIV} of child 0 {BODY} of child 0 {HTML} of document
selection start: position 0 of child 0 {#text} of child 1 {SPAN} of child 2 {DIV} of child 1 {BODY} of child 0 {HTML} of document
selection end: position 1 of child 2 {#text} of child 2 {DIV} of child 1 {BODY} of child 0 {HTML} of document
<script>
if (window.layoutTestController)
layoutTestController.dumpEditingCallbacks();
</script>
<p>In the block below, the second 'bar ' should be selected.</p>
<div style="border: 1px solid black; width:50px;">foo bar <span>bar</span> baz</div>
......
......@@ -46,4 +46,4 @@ layer at (0,0) size 800x600
RenderBlock {ADDRESS} at (1,193) size 782x18
RenderText {#text} at (0,0) size 279x18
text run at (0,0) width 279: "Attempt to apply the current formatting here"
caret: position 0 of child 0 {#text} of child 9 {ADDRESS} of child 4 {DIV} of child 0 {BODY} of child 0 {HTML} of document
caret: position 0 of child 0 {#text} of child 9 {ADDRESS} of child 4 {DIV} of child 1 {BODY} of child 0 {HTML} of document
......@@ -43,5 +43,5 @@ layer at (0,0) size 800x600
RenderBlock {DL} at (1,187) size 782x18
RenderText {#text} at (0,0) size 20x18
text run at (0,0) width 20: "yar"
selection start: position 2 of child 0 {#text} of child 1 {DL} of child 4 {DIV} of child 0 {BODY} of child 0 {HTML} of document
selection end: position 2 of child 0 {#text} of child 6 {DL} of child 4 {DIV} of child 0 {BODY} of child 0 {HTML} of document
selection start: position 2 of child 0 {#text} of child 1 {DL} of child 4 {DIV} of child 1 {BODY} of child 0 {HTML} of document
selection end: position 2 of child 0 {#text} of child 6 {DL} of child 4 {DIV} of child 1 {BODY} of child 0 {HTML} of document
<script>
if (window.layoutTestController)
layoutTestController.dumpEditingCallbacks();
</script>
<div id="description">This test uses FormatBlock to apply the dl tag to a range of paragraphs with different block tags.</div>
<br>
<div style="border:1px solid black" contenteditable="true">
......
......@@ -24,4 +24,4 @@ layer at (0,0) size 800x600
RenderBlock (anonymous) at (0,115) size 784x0
RenderInline {DIV} at (0,0) size 0x0
RenderText {#text} at (0,0) size 0x0
caret: position 0 of child 0 {#text} of child 0 {DIV} of child 0 {H1} of child 4 {DIV} of child 0 {BODY} of child 0 {HTML} of document
caret: position 0 of child 0 {#text} of child 0 {DIV} of child 0 {H1} of child 4 {DIV} of child 1 {BODY} of child 0 {HTML} of document
<script>
if (window.layoutTestController)
layoutTestController.dumpEditingCallbacks();
</script>
<div id="description">This test uses FormatBlock with html brackets in the tag string passed to execCommand.</div>
<br>
<div style="display:inline" contenteditable="true" id="item1">
......
......@@ -14,4 +14,4 @@ layer at (0,0) size 800x600
RenderBlock {PRE} at (1,14) size 782x15
RenderText {#text} at (0,0) size 24x15
text run at (0,0) width 24: "Foo"
caret: position 0 of child 0 {#text} of child 1 {PRE} of child 0 {DIV} of child 0 {BODY} of child 0 {HTML} of document
caret: position 0 of child 0 {#text} of child 1 {PRE} of child 0 {DIV} of child 1 {BODY} of child 0 {HTML} of document
<script>
if (window.layoutTestController)
layoutTestController.dumpEditingCallbacks();
</script>
<div style="border:1px solid black" contenteditable="true">
<div id="item1">Foo<br></div>