[SCM] WebKit Debian packaging branch, debian/unstable, updated. debian/1.1.15-1-40151-g37bb677

kocienda kocienda at 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Sat Sep 26 08:32:26 UTC 2009


The following commit has been merged in the debian/unstable branch:
commit 495c303e1a6d4bfbf7d97a1e913bc94060e241a7
Author: kocienda <kocienda at 268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Tue Apr 6 15:21:34 2004 +0000

            Reviewed by me
    
            Added a new suite of layout tests for editing, all added
            in the new layout-tests/editing subtree.
    
            * layout-tests/editing/abe.jpg: Added.
            * layout-tests/editing/deleting/delete-block-contents-001-expected.txt: Added.
            * layout-tests/editing/deleting/delete-block-contents-001.html: Added.
            * layout-tests/editing/deleting/delete-block-contents-002-expected.txt: Added.
            * layout-tests/editing/deleting/delete-block-contents-002.html: Added.
            * layout-tests/editing/deleting/delete-block-contents-003-expected.txt: Added.
            * layout-tests/editing/deleting/delete-block-contents-003.html: Added.
            * layout-tests/editing/deleting/delete-br-001-expected.txt: Added.
            * layout-tests/editing/deleting/delete-br-001.html: Added.
            * layout-tests/editing/deleting/delete-br-002-expected.txt: Added.
            * layout-tests/editing/deleting/delete-br-002.html: Added.
            * layout-tests/editing/deleting/delete-br-003-expected.txt: Added.
            * layout-tests/editing/deleting/delete-br-003.html: Added.
            * layout-tests/editing/deleting/delete-br-004-expected.txt: Added.
            * layout-tests/editing/deleting/delete-br-004.html: Added.
            * layout-tests/editing/deleting/delete-br-005-expected.txt: Added.
            * layout-tests/editing/deleting/delete-br-005.html: Added.
            * layout-tests/editing/deleting/delete-br-006-expected.txt: Added.
            * layout-tests/editing/deleting/delete-br-006.html: Added.
            * layout-tests/editing/deleting/delete-character-001-expected.txt: Added.
            * layout-tests/editing/deleting/delete-character-001.html: Added.
            * layout-tests/editing/deleting/delete-contiguous-ws-001-expected.txt: Added.
            * layout-tests/editing/deleting/delete-contiguous-ws-001.html: Added.
            * layout-tests/editing/deleting/delete-image-001-expected.txt: Added.
            * layout-tests/editing/deleting/delete-image-001.html: Added.
            * layout-tests/editing/deleting/delete-image-002-expected.txt: Added.
            * layout-tests/editing/deleting/delete-image-002.html: Added.
            * layout-tests/editing/deleting/delete-image-003-expected.txt: Added.
            * layout-tests/editing/deleting/delete-image-003.html: Added.
            * layout-tests/editing/deleting/delete-leading-ws-001-expected.txt: Added.
            * layout-tests/editing/deleting/delete-leading-ws-001.html: Added.
            * layout-tests/editing/deleting/delete-selection-001-expected.txt: Added.
            * layout-tests/editing/deleting/delete-selection-001.html: Added.
            * layout-tests/editing/deleting/delete-trailing-ws-001-expected.txt: Added.
            * layout-tests/editing/deleting/delete-trailing-ws-001.html: Added.
            * layout-tests/editing/editing.js: Added.
            * layout-tests/editing/inserting/typing-001-expected.txt: Added.
            * layout-tests/editing/inserting/typing-001.html: Added.
            * layout-tests/editing/inserting/typing-002-expected.txt: Added.
            * layout-tests/editing/inserting/typing-002.html: Added.
            * layout-tests/editing/inserting/typing-around-br-001-expected.txt: Added.
            * layout-tests/editing/inserting/typing-around-br-001.html: Added.
            * layout-tests/editing/inserting/typing-around-image-001-expected.txt: Added.
            * layout-tests/editing/inserting/typing-around-image-001.html: Added.
            * layout-tests/editing/selection/extend-by-character-001-expected.txt: Added.
            * layout-tests/editing/selection/extend-by-character-001.html: Added.
            * layout-tests/editing/selection/extend-by-character-002-expected.txt: Added.
            * layout-tests/editing/selection/extend-by-character-002.html: Added.
            * layout-tests/editing/selection/extend-by-character-003-expected.txt: Added.
            * layout-tests/editing/selection/extend-by-character-003.html: Added.
            * layout-tests/editing/selection/extend-by-character-004-expected.txt: Added.
            * layout-tests/editing/selection/extend-by-character-004.html: Added.
            * layout-tests/editing/selection/extend-by-character-005-expected.txt: Added.
            * layout-tests/editing/selection/extend-by-character-005.html: Added.
            * layout-tests/editing/selection/move-by-character-001-expected.txt: Added.
            * layout-tests/editing/selection/move-by-character-001.html: Added.
            * layout-tests/editing/selection/move-by-character-002-expected.txt: Added.
            * layout-tests/editing/selection/move-by-character-002.html: Added.
            * layout-tests/editing/selection/move-by-character-003-expected.txt: Added.
            * layout-tests/editing/selection/move-by-character-003.html: Added.
            * layout-tests/editing/selection/move-by-character-004-expected.txt: Added.
            * layout-tests/editing/selection/move-by-character-004.html: Added.
            * layout-tests/editing/selection/move-by-character-005-expected.txt: Added.
            * layout-tests/editing/selection/move-by-character-005.html: Added.
            * layout-tests/editing/undo/redo-typing-001-expected.txt: Added.
            * layout-tests/editing/undo/redo-typing-001.html: Added.
            * layout-tests/editing/undo/undo-typing-001-expected.txt: Added.
            * layout-tests/editing/undo/undo-typing-001.html: Added.
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@6315 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/LayoutTests/editing/abe.jpg b/LayoutTests/editing/abe.jpg
new file mode 100644
index 0000000..48d5019
Binary files /dev/null and b/LayoutTests/editing/abe.jpg differ
diff --git a/LayoutTests/editing/deleting/delete-block-contents-001-expected.txt b/LayoutTests/editing/deleting/delete-block-contents-001-expected.txt
new file mode 100644
index 0000000..9849805
--- /dev/null
+++ b/LayoutTests/editing/deleting/delete-block-contents-001-expected.txt
@@ -0,0 +1,10 @@
+layer at (0,0) size 800x600
+  RenderCanvas at (0,0) size 800x600
+layer at (0,0) size 800x72
+  RenderBlock {HTML} at (0,0) size 800x72
+    RenderBody {BODY} at (8,8) size 784x56
+      RenderBlock {DIV} at (0,0) size 784x56 [border: (2px solid #FF0000)]
+selection is CARET:
+start:      position 0 of  of root {DIV}
+upstream:   position 0 of  of root {DIV}
+downstream: position 0 of  of root {DIV}
diff --git a/LayoutTests/editing/deleting/delete-block-contents-001.html b/LayoutTests/editing/deleting/delete-block-contents-001.html
new file mode 100644
index 0000000..1f29e92
--- /dev/null
+++ b/LayoutTests/editing/deleting/delete-block-contents-001.html
@@ -0,0 +1,34 @@
+<html> 
+<head>
+
+<style>
+.editing { 
+    border: 2px solid red; 
+    padding: 12px; 
+    font-size: 24px; 
+}
+</style>
+<script src=../editing.js language="JavaScript" type="text/JavaScript" ></script>
+
+<script>
+
+function editingTest() {
+    selectAllCommand();
+    deleteCommand();
+}
+
+</script>
+
+<title>Editing Test</title> 
+</head> 
+<body>
+<div contenteditable id="root" class="editing">
+<span id="test">foo   bar             baz</span>
+</div>
+
+<script>
+runEditingTest();
+</script>
+
+</body>
+</html>
diff --git a/LayoutTests/editing/deleting/delete-block-contents-002-expected.txt b/LayoutTests/editing/deleting/delete-block-contents-002-expected.txt
new file mode 100644
index 0000000..9849805
--- /dev/null
+++ b/LayoutTests/editing/deleting/delete-block-contents-002-expected.txt
@@ -0,0 +1,10 @@
+layer at (0,0) size 800x600
+  RenderCanvas at (0,0) size 800x600
+layer at (0,0) size 800x72
+  RenderBlock {HTML} at (0,0) size 800x72
+    RenderBody {BODY} at (8,8) size 784x56
+      RenderBlock {DIV} at (0,0) size 784x56 [border: (2px solid #FF0000)]
+selection is CARET:
+start:      position 0 of  of root {DIV}
+upstream:   position 0 of  of root {DIV}
+downstream: position 0 of  of root {DIV}
diff --git a/LayoutTests/editing/deleting/delete-block-contents-002.html b/LayoutTests/editing/deleting/delete-block-contents-002.html
new file mode 100644
index 0000000..f6533ec
--- /dev/null
+++ b/LayoutTests/editing/deleting/delete-block-contents-002.html
@@ -0,0 +1,36 @@
+<html> 
+<head>
+
+<style>
+.editing { 
+    border: 2px solid red; 
+    padding: 12px; 
+    font-size: 24px; 
+}
+</style>
+<script src=../editing.js language="JavaScript" type="text/JavaScript" ></script>
+
+<script>
+
+function editingTest() {
+    for (i = 0; i < 11; i++) {
+        extendSelectionForwardByCharacterCommand();    
+    }
+    deleteCommand();
+}
+
+</script>
+
+<title>Editing Test</title> 
+</head> 
+<body>
+<div contenteditable id="root" class="editing">
+<span id="test">foo   bar             baz</span>
+</div>
+
+<script>
+runEditingTest();
+</script>
+
+</body>
+</html>
diff --git a/LayoutTests/editing/deleting/delete-block-contents-003-expected.txt b/LayoutTests/editing/deleting/delete-block-contents-003-expected.txt
new file mode 100644
index 0000000..6f20637
--- /dev/null
+++ b/LayoutTests/editing/deleting/delete-block-contents-003-expected.txt
@@ -0,0 +1,17 @@
+layer at (0,0) size 800x600
+  RenderCanvas at (0,0) size 800x600
+layer at (0,0) size 800x128
+  RenderBlock {HTML} at (0,0) size 800x128
+    RenderBody {BODY} at (8,8) size 784x112
+      RenderBlock {DIV} at (0,0) size 784x56 [border: (2px solid #FF0000)]
+        RenderInline {SPAN} at (0,0) size 109x28
+          RenderText {TEXT} at (14,14) size 109x28
+            text run at (14,14) width 38: "foo "
+            text run at (52,14) width 37: "bar "
+            text run at (89,14) width 34: "baz"
+        RenderText {TEXT} at (0,0) size 0x0
+      RenderBlock {DIV} at (0,56) size 784x56 [border: (2px solid #FF0000)]
+selection is CARET:
+start:      position 0 of child 3 {DIV} of child 2 {BODY} of child 1 {HTML} of root {}
+upstream:   position 0 of child 3 {DIV} of child 2 {BODY} of child 1 {HTML} of root {}
+downstream: position 0 of child 3 {DIV} of child 2 {BODY} of child 1 {HTML} of root {}
diff --git a/LayoutTests/editing/deleting/delete-block-contents-003.html b/LayoutTests/editing/deleting/delete-block-contents-003.html
new file mode 100644
index 0000000..a23e394
--- /dev/null
+++ b/LayoutTests/editing/deleting/delete-block-contents-003.html
@@ -0,0 +1,39 @@
+<html> 
+<head>
+
+<style>
+.editing { 
+    border: 2px solid red; 
+    padding: 12px; 
+    font-size: 24px; 
+}
+</style>
+<script src=../editing.js language="JavaScript" type="text/JavaScript" ></script>
+
+<script>
+
+function editingTest() {
+    for (i = 0; i < 11; i++) {
+        extendSelectionForwardByCharacterCommand();    
+    }
+    deleteCommand();
+}
+
+</script>
+
+<title>Editing Test</title> 
+</head> 
+<body>
+<div contenteditable id="root" class="editing">
+<span>foo   bar             baz</span>
+</div>
+<div contenteditable id="root" class="editing">
+<span id="test">foo   bar             baz</span>
+</div>
+
+<script>
+runEditingTest();
+</script>
+
+</body>
+</html>
diff --git a/LayoutTests/editing/deleting/delete-br-001-expected.txt b/LayoutTests/editing/deleting/delete-br-001-expected.txt
new file mode 100644
index 0000000..12001c6
--- /dev/null
+++ b/LayoutTests/editing/deleting/delete-br-001-expected.txt
@@ -0,0 +1,18 @@
+layer at (0,0) size 800x600
+  RenderCanvas at (0,0) size 800x600
+layer at (0,0) size 800x72
+  RenderBlock {HTML} at (0,0) size 800x72
+    RenderBody {BODY} at (8,8) size 784x56
+      RenderBlock {DIV} at (0,0) size 784x56 [border: (2px solid #FF0000)]
+        RenderInline {SPAN} at (0,0) size 296x28
+          RenderText {TEXT} at (14,14) size 204x28
+            text run at (14,14) width 102: "Fourscore "
+            text run at (116,14) width 41: "and "
+            text run at (157,14) width 61: "seven "
+          RenderText {TEXT} at (218,14) size 92x28
+            text run at (218,14) width 92: "years ago"
+        RenderText {TEXT} at (0,0) size 0x0
+selection is CARET:
+start:      position 0 of child 2 {TEXT} of child 2 {SPAN} of root {DIV}
+upstream:   position 23 of child 1 {TEXT} of child 2 {SPAN} of root {DIV}
+downstream: position 0 of child 2 {TEXT} of child 2 {SPAN} of root {DIV}
diff --git a/LayoutTests/editing/deleting/delete-br-001.html b/LayoutTests/editing/deleting/delete-br-001.html
new file mode 100644
index 0000000..f29d5aa
--- /dev/null
+++ b/LayoutTests/editing/deleting/delete-br-001.html
@@ -0,0 +1,37 @@
+<html> 
+<head>
+
+<style>
+.editing { 
+    border: 2px solid red; 
+    padding: 12px; 
+    font-size: 24px; 
+}
+</style>
+<script src=../editing.js language="JavaScript" type="text/JavaScript" ></script>
+
+<script>
+
+function editingTest() {
+    for (i = 0; i < 21; i++) {
+        moveSelectionForwardByCharacterCommand();
+    }
+    deleteCommand();
+}
+
+</script>
+
+<title>Editing Test</title> 
+</head> 
+<body>
+<div contenteditable id="root" class="editing">
+<span id="test">Fourscore 
+and   seven <br>years ago</span>
+</div>
+
+<script>
+runEditingTest();
+</script>
+
+</body>
+</html>
diff --git a/LayoutTests/editing/deleting/delete-br-002-expected.txt b/LayoutTests/editing/deleting/delete-br-002-expected.txt
new file mode 100644
index 0000000..8d58e59
--- /dev/null
+++ b/LayoutTests/editing/deleting/delete-br-002-expected.txt
@@ -0,0 +1,20 @@
+layer at (0,0) size 800x600
+  RenderCanvas at (0,0) size 800x600
+layer at (0,0) size 800x128
+  RenderBlock {HTML} at (0,0) size 800x128
+    RenderBody {BODY} at (8,8) size 784x112
+      RenderBlock {DIV} at (0,0) size 628x112 [border: (2px solid #FF0000)]
+        RenderInline {SPAN} at (0,0) size 204x84
+          RenderText {TEXT} at (14,14) size 204x28
+            text run at (14,14) width 102: "Fourscore "
+            text run at (116,14) width 41: "and "
+            text run at (157,14) width 61: "seven "
+          RenderBR {BR} at (0,0) size 0x0
+          RenderBR {BR} at (14,42) size 0x28
+          RenderText {TEXT} at (14,70) size 92x28
+            text run at (14,70) width 92: "years ago"
+        RenderText {TEXT} at (0,0) size 0x0
+selection is CARET:
+start:      position 0 of child 3 {BR} of child 2 {SPAN} of root {DIV}
+upstream:   position 1 of child 2 {BR} of child 2 {SPAN} of root {DIV}
+downstream: position 0 of child 3 {BR} of child 2 {SPAN} of root {DIV}
diff --git a/LayoutTests/editing/deleting/delete-br-002.html b/LayoutTests/editing/deleting/delete-br-002.html
new file mode 100644
index 0000000..c63f997
--- /dev/null
+++ b/LayoutTests/editing/deleting/delete-br-002.html
@@ -0,0 +1,44 @@
+<html> 
+<head>
+
+<style>
+.editing { 
+    border: 2px solid red; 
+    padding: 12px; 
+    font-size: 24px; 
+}
+</style>
+<script src=../editing.js language="JavaScript" type="text/JavaScript" ></script>
+
+<script>
+
+function editingTest() {
+    for (i = 0; i < 22; i++) {
+        moveSelectionForwardByCharacterCommand();
+    }
+    deleteCommand();
+    
+    // This should not be necessary, but due to the following bug, the caret
+    // does not repaint in the proper position. Changing the size of the DIV
+    // is a workaround. The bug:
+    // <rdar://problem/3608445>: Garbage characters rendered after doing delete. Resize makes them go away.
+    changeRootSize();
+    
+}
+
+</script>
+
+<title>Editing Test</title> 
+</head> 
+<body>
+<div contenteditable id="root" class="editing">
+<span id="test">Fourscore 
+and   seven <br><br><br>years ago</span>
+</div>
+
+<script>
+runEditingTest();
+</script>
+
+</body>
+</html>
diff --git a/LayoutTests/editing/deleting/delete-br-003-expected.txt b/LayoutTests/editing/deleting/delete-br-003-expected.txt
new file mode 100644
index 0000000..c65dd53
--- /dev/null
+++ b/LayoutTests/editing/deleting/delete-br-003-expected.txt
@@ -0,0 +1,20 @@
+layer at (0,0) size 800x600
+  RenderCanvas at (0,0) size 800x600
+layer at (0,0) size 800x128
+  RenderBlock {HTML} at (0,0) size 800x128
+    RenderBody {BODY} at (8,8) size 784x112
+      RenderBlock {DIV} at (0,0) size 628x112 [border: (2px solid #FF0000)]
+        RenderInline {SPAN} at (0,0) size 204x84
+          RenderText {TEXT} at (14,14) size 204x28
+            text run at (14,14) width 102: "Fourscore "
+            text run at (116,14) width 41: "and "
+            text run at (157,14) width 61: "seven "
+          RenderBR {BR} at (14,42) size 0x28
+          RenderBR {BR} at (14,42) size 0x28
+          RenderText {TEXT} at (14,70) size 92x28
+            text run at (14,70) width 92: "years ago"
+        RenderText {TEXT} at (0,0) size 0x0
+selection is CARET:
+start:      position 0 of child 2 {BR} of child 2 {SPAN} of root {DIV}
+upstream:   position 23 of child 1 {TEXT} of child 2 {SPAN} of root {DIV}
+downstream: position 0 of child 2 {BR} of child 2 {SPAN} of root {DIV}
diff --git a/LayoutTests/editing/deleting/delete-br-003.html b/LayoutTests/editing/deleting/delete-br-003.html
new file mode 100644
index 0000000..3e594e4
--- /dev/null
+++ b/LayoutTests/editing/deleting/delete-br-003.html
@@ -0,0 +1,44 @@
+<html> 
+<head>
+
+<style>
+.editing { 
+    border: 2px solid red; 
+    padding: 12px; 
+    font-size: 24px; 
+    width: 599px; 
+}
+</style>
+<script src=../editing.js language="JavaScript" type="text/JavaScript" ></script>
+
+<script>
+
+function editingTest() {
+    for (i = 0; i < 21; i++) {
+        moveSelectionForwardByCharacterCommand();
+    }
+    deleteCommand();
+    
+    // This should not be necessary, but due to the following bug, the caret
+    // does not repaint in the proper position. Changing the size of the DIV
+    // is a workaround. The bug:
+    // <rdar://problem/3608445>: Garbage characters rendered after doing delete. Resize makes them go away.
+    changeRootSize();
+}
+
+</script>
+
+<title>Editing Test</title> 
+</head> 
+<body>
+<div contenteditable id="root" class="editing">
+<span id="test">Fourscore 
+and   seven <br><br><br>years ago</span>
+</div>
+
+<script>
+runEditingTest();
+</script>
+
+</body>
+</html>
diff --git a/LayoutTests/editing/deleting/delete-br-004-expected.txt b/LayoutTests/editing/deleting/delete-br-004-expected.txt
new file mode 100644
index 0000000..b28eb7f
--- /dev/null
+++ b/LayoutTests/editing/deleting/delete-br-004-expected.txt
@@ -0,0 +1,20 @@
+layer at (0,0) size 800x600
+  RenderCanvas at (0,0) size 800x600
+layer at (0,0) size 800x128
+  RenderBlock {HTML} at (0,0) size 800x128
+    RenderBody {BODY} at (8,8) size 784x112
+      RenderBlock {DIV} at (0,0) size 628x112 [border: (2px solid #FF0000)]
+        RenderInline {SPAN} at (0,0) size 204x84
+          RenderText {TEXT} at (14,14) size 204x28
+            text run at (14,14) width 102: "Fourscore "
+            text run at (116,14) width 41: "and "
+            text run at (157,14) width 61: "seven "
+          RenderBR {BR} at (0,0) size 0x0
+          RenderBR {BR} at (14,42) size 0x28
+          RenderText {TEXT} at (14,70) size 92x28
+            text run at (14,70) width 92: "years ago"
+        RenderText {TEXT} at (0,0) size 0x0
+selection is CARET:
+start:      position 0 of child 4 {TEXT} of child 2 {SPAN} of root {DIV}
+upstream:   position 1 of child 3 {BR} of child 2 {SPAN} of root {DIV}
+downstream: position 0 of child 4 {TEXT} of child 2 {SPAN} of root {DIV}
diff --git a/LayoutTests/editing/deleting/delete-br-004.html b/LayoutTests/editing/deleting/delete-br-004.html
new file mode 100644
index 0000000..3d1ea38
--- /dev/null
+++ b/LayoutTests/editing/deleting/delete-br-004.html
@@ -0,0 +1,44 @@
+<html> 
+<head>
+
+<style>
+.editing { 
+    border: 2px solid red; 
+    padding: 12px; 
+    font-size: 24px; 
+    width: 599px; 
+}
+</style>
+<script src=../editing.js language="JavaScript" type="text/JavaScript" ></script>
+
+<script>
+
+function editingTest() {
+    for (i = 0; i < 23; i++) {
+        moveSelectionForwardByCharacterCommand();
+    }
+    deleteCommand();
+    
+    // This should not be necessary, but due to the following bug, the caret
+    // does not repaint in the proper position. Changing the size of the DIV
+    // is a workaround. The bug:
+    // <rdar://problem/3608445>: Garbage characters rendered after doing delete. Resize makes them go away.
+    changeRootSize();
+}
+
+</script>
+
+<title>Editing Test</title> 
+</head> 
+<body>
+<div contenteditable id="root" class="editing">
+<span id="test">Fourscore 
+and   seven <br><br><br>years ago</span>
+</div>
+
+<script>
+runEditingTest();
+</script>
+
+</body>
+</html>
diff --git a/LayoutTests/editing/deleting/delete-br-005-expected.txt b/LayoutTests/editing/deleting/delete-br-005-expected.txt
new file mode 100644
index 0000000..8865591
--- /dev/null
+++ b/LayoutTests/editing/deleting/delete-br-005-expected.txt
@@ -0,0 +1,19 @@
+layer at (0,0) size 800x600
+  RenderCanvas at (0,0) size 800x600
+layer at (0,0) size 800x100
+  RenderBlock {HTML} at (0,0) size 800x100
+    RenderBody {BODY} at (8,8) size 784x84
+      RenderBlock {DIV} at (0,0) size 628x84 [border: (2px solid #FF0000)]
+        RenderInline {SPAN} at (0,0) size 204x56
+          RenderText {TEXT} at (14,14) size 204x28
+            text run at (14,14) width 102: "Fourscore "
+            text run at (116,14) width 41: "and "
+            text run at (157,14) width 61: "seven "
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (14,42) size 92x28
+            text run at (14,42) width 92: "years ago"
+        RenderText {TEXT} at (0,0) size 0x0
+selection is CARET:
+start:      position 0 of child 3 {TEXT} of child 2 {SPAN} of root {DIV}
+upstream:   position 1 of child 2 {BR} of child 2 {SPAN} of root {DIV}
+downstream: position 0 of child 3 {TEXT} of child 2 {SPAN} of root {DIV}
diff --git a/LayoutTests/editing/deleting/delete-br-005.html b/LayoutTests/editing/deleting/delete-br-005.html
new file mode 100644
index 0000000..245ed31
--- /dev/null
+++ b/LayoutTests/editing/deleting/delete-br-005.html
@@ -0,0 +1,45 @@
+<html> 
+<head>
+
+<style>
+.editing { 
+    border: 2px solid red; 
+    padding: 12px; 
+    font-size: 24px; 
+    width: 599px; 
+}
+</style>
+<script src=../editing.js language="JavaScript" type="text/JavaScript" ></script>
+
+<script>
+
+function editingTest() {
+    for (i = 0; i < 23; i++) {
+        moveSelectionForwardByCharacterCommand();
+    }
+    deleteCommand();
+    deleteCommand();
+    
+    // This should not be necessary, but due to the following bug, the caret
+    // does not repaint in the proper position. Changing the size of the DIV
+    // is a workaround. The bug:
+    // <rdar://problem/3608445>: Garbage characters rendered after doing delete. Resize makes them go away.
+    changeRootSize();
+}
+
+</script>
+
+<title>Editing Test</title> 
+</head> 
+<body>
+<div contenteditable id="root" class="editing">
+<span id="test">Fourscore 
+and   seven <br><br><br>years ago</span>
+</div>
+
+<script>
+runEditingTest();
+</script>
+
+</body>
+</html>
diff --git a/LayoutTests/editing/deleting/delete-br-006-expected.txt b/LayoutTests/editing/deleting/delete-br-006-expected.txt
new file mode 100644
index 0000000..8a40cca
--- /dev/null
+++ b/LayoutTests/editing/deleting/delete-br-006-expected.txt
@@ -0,0 +1,18 @@
+layer at (0,0) size 800x600
+  RenderCanvas at (0,0) size 800x600
+layer at (0,0) size 800x72
+  RenderBlock {HTML} at (0,0) size 800x72
+    RenderBody {BODY} at (8,8) size 784x56
+      RenderBlock {DIV} at (0,0) size 628x56 [border: (2px solid #FF0000)]
+        RenderInline {SPAN} at (0,0) size 296x28
+          RenderText {TEXT} at (14,14) size 204x28
+            text run at (14,14) width 102: "Fourscore "
+            text run at (116,14) width 41: "and "
+            text run at (157,14) width 61: "seven "
+          RenderText {TEXT} at (218,14) size 92x28
+            text run at (218,14) width 92: "years ago"
+        RenderText {TEXT} at (0,0) size 0x0
+selection is CARET:
+start:      position 0 of child 2 {TEXT} of child 2 {SPAN} of root {DIV}
+upstream:   position 23 of child 1 {TEXT} of child 2 {SPAN} of root {DIV}
+downstream: position 0 of child 2 {TEXT} of child 2 {SPAN} of root {DIV}
diff --git a/LayoutTests/editing/deleting/delete-br-006.html b/LayoutTests/editing/deleting/delete-br-006.html
new file mode 100644
index 0000000..e9940b7
--- /dev/null
+++ b/LayoutTests/editing/deleting/delete-br-006.html
@@ -0,0 +1,46 @@
+<html> 
+<head>
+
+<style>
+.editing { 
+    border: 2px solid red; 
+    padding: 12px; 
+    font-size: 24px; 
+    width: 599px; 
+}
+</style>
+<script src=../editing.js language="JavaScript" type="text/JavaScript" ></script>
+
+<script>
+
+function editingTest() {
+    for (i = 0; i < 23; i++) {
+        moveSelectionForwardByCharacterCommand();
+    }
+    deleteCommand();
+    deleteCommand();
+    deleteCommand();
+    
+    // This should not be necessary, but due to the following bug, the caret
+    // does not repaint in the proper position. Changing the size of the DIV
+    // is a workaround. The bug:
+    // <rdar://problem/3608445>: Garbage characters rendered after doing delete. Resize makes them go away.
+    changeRootSize();
+}
+
+</script>
+
+<title>Editing Test</title> 
+</head> 
+<body>
+<div contenteditable id="root" class="editing">
+<span id="test">Fourscore 
+and   seven <br><br><br>years ago</span>
+</div>
+
+<script>
+runEditingTest();
+</script>
+
+</body>
+</html>
diff --git a/LayoutTests/editing/deleting/delete-character-001-expected.txt b/LayoutTests/editing/deleting/delete-character-001-expected.txt
new file mode 100644
index 0000000..d4d3d2e
--- /dev/null
+++ b/LayoutTests/editing/deleting/delete-character-001-expected.txt
@@ -0,0 +1,16 @@
+layer at (0,0) size 800x600
+  RenderCanvas at (0,0) size 800x600
+layer at (0,0) size 800x72
+  RenderBlock {HTML} at (0,0) size 800x72
+    RenderBody {BODY} at (8,8) size 784x56
+      RenderBlock {DIV} at (0,0) size 784x56 [border: (2px solid #FF0000)]
+        RenderInline {SPAN} at (0,0) size 97x28
+          RenderText {TEXT} at (14,14) size 97x28
+            text run at (14,14) width 26: "fo "
+            text run at (40,14) width 37: "bar "
+            text run at (77,14) width 34: "baz"
+        RenderText {TEXT} at (0,0) size 0x0
+selection is CARET:
+start:      position 1 of child 1 {TEXT} of child 2 {SPAN} of root {DIV}
+upstream:   position 1 of child 1 {TEXT} of child 2 {SPAN} of root {DIV}
+downstream: position 1 of child 1 {TEXT} of child 2 {SPAN} of root {DIV}
diff --git a/LayoutTests/editing/deleting/delete-character-001.html b/LayoutTests/editing/deleting/delete-character-001.html
new file mode 100644
index 0000000..6776857
--- /dev/null
+++ b/LayoutTests/editing/deleting/delete-character-001.html
@@ -0,0 +1,36 @@
+<html> 
+<head>
+
+<style>
+.editing { 
+    border: 2px solid red; 
+    padding: 12px; 
+    font-size: 24px; 
+}
+</style>
+<script src=../editing.js language="JavaScript" type="text/JavaScript" ></script>
+
+<script>
+
+function editingTest() {
+    for (i = 0; i < 2; i++) {
+        moveSelectionForwardByCharacterCommand();    
+    }
+    deleteCommand();
+}
+
+</script>
+
+<title>Editing Test</title> 
+</head> 
+<body>
+<div contenteditable id="root" class="editing">
+<span id="test">foo   bar    baz</span>
+</div>
+
+<script>
+runEditingTest();
+</script>
+
+</body>
+</html>
diff --git a/LayoutTests/editing/deleting/delete-contiguous-ws-001-expected.txt b/LayoutTests/editing/deleting/delete-contiguous-ws-001-expected.txt
new file mode 100644
index 0000000..7bc128e
--- /dev/null
+++ b/LayoutTests/editing/deleting/delete-contiguous-ws-001-expected.txt
@@ -0,0 +1,15 @@
+layer at (0,0) size 800x600
+  RenderCanvas at (0,0) size 800x600
+layer at (0,0) size 800x72
+  RenderBlock {HTML} at (0,0) size 800x72
+    RenderBody {BODY} at (8,8) size 784x56
+      RenderBlock {DIV} at (0,0) size 784x56 [border: (2px solid #FF0000)]
+        RenderInline {SPAN} at (0,0) size 78x28
+          RenderText {TEXT} at (14,14) size 78x28
+            text run at (14,14) width 44: "foo  "
+            text run at (58,14) width 34: "baz"
+        RenderText {TEXT} at (0,0) size 0x0
+selection is CARET:
+start:      position 4 of child 1 {TEXT} of child 2 {SPAN} of root {DIV}
+upstream:   position 4 of child 1 {TEXT} of child 2 {SPAN} of root {DIV}
+downstream: position 4 of child 1 {TEXT} of child 2 {SPAN} of root {DIV}
diff --git a/LayoutTests/editing/deleting/delete-contiguous-ws-001.html b/LayoutTests/editing/deleting/delete-contiguous-ws-001.html
new file mode 100644
index 0000000..904a7cf
--- /dev/null
+++ b/LayoutTests/editing/deleting/delete-contiguous-ws-001.html
@@ -0,0 +1,41 @@
+<html> 
+<head>
+
+<style>
+.editing { 
+    border: 2px solid red; 
+    padding: 12px; 
+    font-size: 24px; 
+}
+</style>
+<script src=../editing.js language="JavaScript" type="text/JavaScript" ></script>
+
+<script>
+
+function editingTest() {
+    for (i = 0; i < 4; i++) {
+        moveSelectionForwardByCharacterCommand();    
+    }
+    for (i = 0; i < 3; i++) {
+        extendSelectionForwardByCharacterCommand();    
+    }
+    deleteCommand();
+}
+
+</script>
+
+<title>Editing Test</title> 
+</head> 
+<body>
+<div contenteditable id="root" class="editing">
+<span id="test">foo    bar   
+
+baz</span>
+</div>
+
+<script>
+runEditingTest();
+</script>
+
+</body>
+</html>
diff --git a/LayoutTests/editing/deleting/delete-image-001-expected.txt b/LayoutTests/editing/deleting/delete-image-001-expected.txt
new file mode 100644
index 0000000..141cbf8
--- /dev/null
+++ b/LayoutTests/editing/deleting/delete-image-001-expected.txt
@@ -0,0 +1,23 @@
+layer at (0,0) size 800x600
+  RenderCanvas at (0,0) size 800x600
+layer at (0,0) size 800x262
+  RenderBlock {HTML} at (0,0) size 800x262
+    RenderBody {BODY} at (8,8) size 784x246
+      RenderBlock {DIV} at (0,0) size 784x246 [border: (2px solid #FF0000)]
+        RenderInline {SPAN} at (0,0) size 204x137
+          RenderText {TEXT} at (14,95) size 11x28
+            text run at (14,95) width 11: "a"
+          RenderImage {IMG} at (25,14) size 76x103
+          RenderText {TEXT} at (101,95) size 6x28
+            text run at (101,95) width 6: " "
+          RenderText {TEXT} at (107,95) size 111x28
+            text run at (107,95) width 111: " conceived "
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (14,204) size 61x28
+            text run at (14,204) width 61: "nation"
+          RenderImage {IMG} at (75,123) size 76x103
+        RenderText {TEXT} at (0,0) size 0x0
+selection is CARET:
+start:      position 1 of child 3 {TEXT} of child 2 {SPAN} of root {DIV}
+upstream:   position 1 of child 3 {TEXT} of child 2 {SPAN} of root {DIV}
+downstream: position 0 of child 4 {TEXT} of child 2 {SPAN} of root {DIV}
diff --git a/LayoutTests/editing/deleting/delete-image-001.html b/LayoutTests/editing/deleting/delete-image-001.html
new file mode 100644
index 0000000..8dc9715
--- /dev/null
+++ b/LayoutTests/editing/deleting/delete-image-001.html
@@ -0,0 +1,37 @@
+<html> 
+<head>
+
+<style>
+.editing { 
+    border: 2px solid red; 
+    padding: 12px; 
+    font-size: 24px; 
+}
+</style>
+<script src=../editing.js language="JavaScript" type="text/JavaScript" ></script>
+
+<script>
+
+function editingTest() {
+    for (i = 0; i < 4; i++) {
+        moveSelectionForwardByCharacterCommand();
+    }
+    deleteCommand();
+}
+
+</script>
+
+<title>Editing Test</title> 
+</head> 
+<body>
+<div contenteditable id="root" class="editing">
+<span id="test">a<img src="../abe.jpg"> <img src="../abe.jpg"> conceived
+<br>nation<img src="../abe.jpg"></span>
+</div>
+
+<script>
+runEditingTest();
+</script>
+
+</body>
+</html>
diff --git a/LayoutTests/editing/deleting/delete-image-002-expected.txt b/LayoutTests/editing/deleting/delete-image-002-expected.txt
new file mode 100644
index 0000000..4f95135
--- /dev/null
+++ b/LayoutTests/editing/deleting/delete-image-002-expected.txt
@@ -0,0 +1,29 @@
+layer at (0,0) size 800x600
+  RenderCanvas at (0,0) size 800x600
+layer at (0,0) size 800x290
+  RenderBlock {HTML} at (0,0) size 800x290
+    RenderBody {BODY} at (8,8) size 784x274
+      RenderBlock {DIV} at (0,0) size 784x274 [border: (2px solid #FF0000)]
+        RenderInline {SPAN} at (0,0) size 254x246
+          RenderText {TEXT} at (14,14) size 11x28
+            text run at (14,14) width 11: "a"
+          RenderText {TEXT} at (25,14) size 46x28
+            text run at (25,14) width 46: "new "
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (14,123) size 67x28
+            text run at (14,123) width 67: "nation "
+          RenderInline {I} at (0,0) size 0x0
+            RenderText {TEXT} at (0,0) size 0x0
+          RenderText {TEXT} at (0,0) size 0x0
+          RenderImage {IMG} at (81,42) size 76x103
+          RenderText {TEXT} at (157,123) size 111x28
+            text run at (157,123) width 111: " conceived "
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (14,232) size 61x28
+            text run at (14,232) width 61: "nation"
+          RenderImage {IMG} at (75,151) size 76x103
+        RenderText {TEXT} at (0,0) size 0x0
+selection is CARET:
+start:      position 1 of child 1 {TEXT} of child 2 {SPAN} of root {DIV}
+upstream:   position 1 of child 1 {TEXT} of child 2 {SPAN} of root {DIV}
+downstream: position 0 of child 2 {TEXT} of child 2 {SPAN} of root {DIV}
diff --git a/LayoutTests/editing/deleting/delete-image-002.html b/LayoutTests/editing/deleting/delete-image-002.html
new file mode 100644
index 0000000..bbeb429
--- /dev/null
+++ b/LayoutTests/editing/deleting/delete-image-002.html
@@ -0,0 +1,38 @@
+<html> 
+<head>
+
+<style>
+.editing { 
+    border: 2px solid red; 
+    padding: 12px; 
+    font-size: 24px; 
+}
+</style>
+<script src=../editing.js language="JavaScript" type="text/JavaScript" ></script>
+
+<script>
+
+function editingTest() {
+    for (i = 0; i < 2; i++) {
+        moveSelectionForwardByCharacterCommand();
+    }
+    deleteCommand();
+}
+
+</script>
+
+<title>Editing Test</title> 
+</head> 
+<body>
+<div contenteditable id="root" class="editing">
+<span id="test">a<img src="../abe.jpg">new 
+<br>nation <i>  </i> <img src="../abe.jpg"> conceived
+<br>nation<img src="../abe.jpg"></span>
+</div>
+
+<script>
+runEditingTest();
+</script>
+
+</body>
+</html>
diff --git a/LayoutTests/editing/deleting/delete-image-003-expected.txt b/LayoutTests/editing/deleting/delete-image-003-expected.txt
new file mode 100644
index 0000000..584a054
--- /dev/null
+++ b/LayoutTests/editing/deleting/delete-image-003-expected.txt
@@ -0,0 +1,15 @@
+layer at (0,0) size 800x600
+  RenderCanvas at (0,0) size 800x600
+layer at (0,0) size 800x72
+  RenderBlock {HTML} at (0,0) size 800x72
+    RenderBody {BODY} at (8,8) size 784x56
+      RenderBlock {DIV} at (0,0) size 784x56 [border: (2px solid #FF0000)]
+        RenderInline {SPAN} at (0,0) size 85x28
+          RenderText {TEXT} at (14,14) size 11x28
+            text run at (14,14) width 11: "a"
+          RenderText {TEXT} at (25,14) size 74x28
+            text run at (25,14) width 74: " lincoln"
+selection is CARET:
+start:      position 1 of child 1 {TEXT} of child 2 {SPAN} of root {DIV}
+upstream:   position 1 of child 1 {TEXT} of child 2 {SPAN} of root {DIV}
+downstream: position 0 of child 2 {TEXT} of child 2 {SPAN} of root {DIV}
diff --git a/LayoutTests/editing/deleting/delete-image-003.html b/LayoutTests/editing/deleting/delete-image-003.html
new file mode 100644
index 0000000..dc15f08
--- /dev/null
+++ b/LayoutTests/editing/deleting/delete-image-003.html
@@ -0,0 +1,36 @@
+<html> 
+<head>
+
+<style>
+.editing { 
+    border: 2px solid red; 
+    padding: 12px; 
+    font-size: 24px; 
+}
+</style>
+<script src=../editing.js language="JavaScript" type="text/JavaScript" ></script>
+
+<script>
+
+function editingTest() {
+    moveSelectionForwardByCharacterCommand();
+    extendSelectionForwardByCharacterCommand();
+    extendSelectionForwardByCharacterCommand();
+    deleteCommand();
+}
+
+</script>
+
+<title>Editing Test</title> 
+</head> 
+<body>
+<div contenteditable id="root" class="editing">
+<span id="test">a<img src="../abe.jpg"><img src="../abe.jpg"> lincoln
+</div>
+
+<script>
+runEditingTest();
+</script>
+
+</body>
+</html>
diff --git a/LayoutTests/editing/deleting/delete-leading-ws-001-expected.txt b/LayoutTests/editing/deleting/delete-leading-ws-001-expected.txt
new file mode 100644
index 0000000..d76777f
--- /dev/null
+++ b/LayoutTests/editing/deleting/delete-leading-ws-001-expected.txt
@@ -0,0 +1,13 @@
+layer at (0,0) size 800x600
+  RenderCanvas at (0,0) size 800x600
+layer at (0,0) size 800x72
+  RenderBlock {HTML} at (0,0) size 800x72
+    RenderBody {BODY} at (8,8) size 784x56
+      RenderBlock {DIV} at (0,0) size 784x56 [border: (2px solid #FF0000)]
+        RenderInline {SPAN} at (0,0) size 14x28
+          RenderText {TEXT} at (14,14) size 14x28
+            text run at (14,14) width 14: "f "
+selection is CARET:
+start:      position 2 of child 1 {TEXT} of child 2 {SPAN} of root {DIV}
+upstream:   position 2 of child 1 {TEXT} of child 2 {SPAN} of root {DIV}
+downstream: position 2 of child 1 {TEXT} of child 2 {SPAN} of root {DIV}
diff --git a/LayoutTests/editing/deleting/delete-leading-ws-001.html b/LayoutTests/editing/deleting/delete-leading-ws-001.html
new file mode 100644
index 0000000..a78d29f
--- /dev/null
+++ b/LayoutTests/editing/deleting/delete-leading-ws-001.html
@@ -0,0 +1,39 @@
+<html> 
+<head>
+
+<style>
+.editing { 
+    border: 2px solid red; 
+    padding: 12px; 
+    font-size: 24px; 
+}
+</style>
+<script src=../editing.js language="JavaScript" type="text/JavaScript" ></script>
+
+<script>
+
+function editingTest() {
+    for (i = 0; i < 2; i++) {
+        moveSelectionForwardByCharacterCommand();    
+    }
+    for (i = 0; i < 4; i++) {
+        extendSelectionForwardByCharacterCommand();    
+    }
+    deleteCommand();
+}
+
+</script>
+
+<title>Editing Test</title> 
+</head> 
+<body>
+<div contenteditable id="root" class="editing">
+<span id="test">f   baz</span>
+</div>
+
+<script>
+runEditingTest();
+</script>
+
+</body>
+</html>
diff --git a/LayoutTests/editing/deleting/delete-selection-001-expected.txt b/LayoutTests/editing/deleting/delete-selection-001-expected.txt
new file mode 100644
index 0000000..4f53612
--- /dev/null
+++ b/LayoutTests/editing/deleting/delete-selection-001-expected.txt
@@ -0,0 +1,15 @@
+layer at (0,0) size 800x600
+  RenderCanvas at (0,0) size 800x600
+layer at (0,0) size 800x72
+  RenderBlock {HTML} at (0,0) size 800x72
+    RenderBody {BODY} at (8,8) size 784x56
+      RenderBlock {DIV} at (0,0) size 784x56 [border: (2px solid #FF0000)]
+        RenderInline {SPAN} at (0,0) size 77x28
+          RenderText {TEXT} at (14,14) size 77x28
+            text run at (14,14) width 43: " bar "
+            text run at (57,14) width 34: "baz"
+        RenderText {TEXT} at (0,0) size 0x0
+selection is CARET:
+start:      position 0 of child 1 {TEXT} of child 1 {SPAN} of root {DIV}
+upstream:   position 0 of child 1 {TEXT} of child 1 {SPAN} of root {DIV}
+downstream: position 0 of child 1 {TEXT} of child 1 {SPAN} of root {DIV}
diff --git a/LayoutTests/editing/deleting/delete-selection-001.html b/LayoutTests/editing/deleting/delete-selection-001.html
new file mode 100644
index 0000000..03b8a4f
--- /dev/null
+++ b/LayoutTests/editing/deleting/delete-selection-001.html
@@ -0,0 +1,36 @@
+<html> 
+<head>
+
+<style>
+.editing { 
+    border: 2px solid red; 
+    padding: 12px; 
+    font-size: 24px; 
+}
+</style>
+<script src=../editing.js language="JavaScript" type="text/JavaScript" ></script>
+
+<script>
+
+function editingTest() {
+    for (i = 0; i < 3; i++) {
+        extendSelectionForwardByCharacterCommand();    
+    }
+    deleteCommand();
+}
+
+</script>
+
+<title>Editing Test</title> 
+</head> 
+<body>
+<div contenteditable id="root" class="editing">
+<span id="test">foo   bar    baz</span>
+</div>
+
+<script>
+runEditingTest();
+</script>
+
+</body>
+</html>
diff --git a/LayoutTests/editing/deleting/delete-trailing-ws-001-expected.txt b/LayoutTests/editing/deleting/delete-trailing-ws-001-expected.txt
new file mode 100644
index 0000000..4f53612
--- /dev/null
+++ b/LayoutTests/editing/deleting/delete-trailing-ws-001-expected.txt
@@ -0,0 +1,15 @@
+layer at (0,0) size 800x600
+  RenderCanvas at (0,0) size 800x600
+layer at (0,0) size 800x72
+  RenderBlock {HTML} at (0,0) size 800x72
+    RenderBody {BODY} at (8,8) size 784x56
+      RenderBlock {DIV} at (0,0) size 784x56 [border: (2px solid #FF0000)]
+        RenderInline {SPAN} at (0,0) size 77x28
+          RenderText {TEXT} at (14,14) size 77x28
+            text run at (14,14) width 43: " bar "
+            text run at (57,14) width 34: "baz"
+        RenderText {TEXT} at (0,0) size 0x0
+selection is CARET:
+start:      position 0 of child 1 {TEXT} of child 1 {SPAN} of root {DIV}
+upstream:   position 0 of child 1 {TEXT} of child 1 {SPAN} of root {DIV}
+downstream: position 0 of child 1 {TEXT} of child 1 {SPAN} of root {DIV}
diff --git a/LayoutTests/editing/deleting/delete-trailing-ws-001.html b/LayoutTests/editing/deleting/delete-trailing-ws-001.html
new file mode 100644
index 0000000..03b8a4f
--- /dev/null
+++ b/LayoutTests/editing/deleting/delete-trailing-ws-001.html
@@ -0,0 +1,36 @@
+<html> 
+<head>
+
+<style>
+.editing { 
+    border: 2px solid red; 
+    padding: 12px; 
+    font-size: 24px; 
+}
+</style>
+<script src=../editing.js language="JavaScript" type="text/JavaScript" ></script>
+
+<script>
+
+function editingTest() {
+    for (i = 0; i < 3; i++) {
+        extendSelectionForwardByCharacterCommand();    
+    }
+    deleteCommand();
+}
+
+</script>
+
+<title>Editing Test</title> 
+</head> 
+<body>
+<div contenteditable id="root" class="editing">
+<span id="test">foo   bar    baz</span>
+</div>
+
+<script>
+runEditingTest();
+</script>
+
+</body>
+</html>
diff --git a/LayoutTests/editing/editing.js b/LayoutTests/editing/editing.js
new file mode 100644
index 0000000..43e9284
--- /dev/null
+++ b/LayoutTests/editing/editing.js
@@ -0,0 +1,169 @@
+//-------------------------------------------------------------------------------------------------------
+// Java script library to run editing layout tests
+
+var commandCount = 1;
+var commandDelay = window.location.search.substring(1);
+if (commandDelay == '')
+    commandDelay = 0;
+var selection = window.getSelection();
+
+//-------------------------------------------------------------------------------------------------------
+
+function execMoveSelectionForwardByCharacterCommand() {
+    selection.modify("move", "forward", "character");
+}
+function moveSelectionForwardByCharacterCommand() {
+    if (commandDelay > 0) {
+        window.setTimeout(execMoveSelectionForwardByCharacterCommand, commandCount * commandDelay);
+        commandCount++;
+    }
+    else {
+        execMoveSelectionForwardByCharacterCommand();
+    }
+}
+
+//-------------------------------------------------------------------------------------------------------
+
+function execExtendSelectionForwardByCharacterCommand() {
+    selection.modify("extend", "forward", "character");
+}
+function extendSelectionForwardByCharacterCommand() {
+    if (commandDelay > 0) {
+        window.setTimeout(execExtendSelectionForwardByCharacterCommand, commandCount * commandDelay);
+        commandCount++;
+    }
+    else {
+        execExtendSelectionForwardByCharacterCommand();
+    }
+}
+
+//-------------------------------------------------------------------------------------------------------
+
+function execMoveSelectionBackwardByCharacterCommand() {
+    selection.modify("move", "backward", "character");
+}
+function moveSelectionBackwardByCharacterCommand() {
+    if (commandDelay > 0) {
+        window.setTimeout(execMoveSelectionBackwardByCharacterCommand, commandCount * commandDelay);
+        commandCount++;
+    }
+    else {
+        execMoveSelectionBackwardByCharacterCommand();
+    }
+}
+
+//-------------------------------------------------------------------------------------------------------
+
+function execExtendSelectionBackwardByCharacterCommand() {
+    selection.modify("extend", "backward", "character");
+}
+function extendSelectionBackwardByCharacterCommand() {
+    if (commandDelay > 0) {
+        window.setTimeout(execExtendSelectionBackwardByCharacterCommand, commandCount * commandDelay);
+        commandCount++;
+    }
+    else {
+        execExtendSelectionBackwardByCharacterCommand();
+    }
+}
+
+//-------------------------------------------------------------------------------------------------------
+
+function execTypeCharacterCommand() {
+    document.execCommand("InsertText", false, "x");
+}
+function typeCharacterCommand() {
+    if (commandDelay > 0) {
+        window.setTimeout(execTypeCharacterCommand, commandCount * commandDelay);
+        commandCount++;
+    }
+    else {
+        execTypeCharacterCommand();
+    }
+}
+
+//-------------------------------------------------------------------------------------------------------
+
+function execSelectAllCommand() {
+    document.execCommand("SelectAll");
+}
+function selectAllCommand() {
+    if (commandDelay > 0) {
+        window.setTimeout(execSelectAllCommand, commandCount * commandDelay);
+        commandCount++;
+    }
+    else {
+        execSelectAllCommand();
+    }
+}
+
+//-------------------------------------------------------------------------------------------------------
+
+function execUndoCommand() {
+    document.execCommand("Undo");
+}
+function undoCommand() {
+    if (commandDelay > 0) {
+        window.setTimeout(execUndoCommand, commandCount * commandDelay);
+        commandCount++;
+    }
+    else {
+        execUndoCommand();
+    }
+}
+
+//-------------------------------------------------------------------------------------------------------
+
+function execRedoCommand() {
+    document.execCommand("Redo");
+}
+function redoCommand() {
+    if (commandDelay > 0) {
+        window.setTimeout(execRedoCommand, commandCount * commandDelay);
+        commandCount++;
+    }
+    else {
+        execRedoCommand();
+    }
+}
+
+//-------------------------------------------------------------------------------------------------------
+
+function execChangeRootSize() {
+    document.getElementById("root").style.width = "600px";
+}
+function changeRootSize() {
+    if (commandDelay > 0) {
+        window.setTimeout(execChangeRootSize, commandCount * commandDelay);
+        commandCount++;
+    }
+    else {
+        execChangeRootSize();
+    }
+}
+
+//-------------------------------------------------------------------------------------------------------
+
+function execDeleteCommand() {
+    document.execCommand("Delete");
+}
+function deleteCommand() {
+    if (commandDelay > 0) {
+        window.setTimeout(execDeleteCommand, commandCount * commandDelay);
+        commandCount++;
+    }
+    else {
+        execDeleteCommand();
+    }
+}
+
+//-------------------------------------------------------------------------------------------------------
+
+function runEditingTest() {
+    var elem = document.getElementById("test");
+    var selection = window.getSelection();
+    selection.setPosition(elem, 0);
+    editingTest();
+}
+
+//-------------------------------------------------------------------------------------------------------
diff --git a/LayoutTests/editing/inserting/typing-001-expected.txt b/LayoutTests/editing/inserting/typing-001-expected.txt
new file mode 100644
index 0000000..0bcd397
--- /dev/null
+++ b/LayoutTests/editing/inserting/typing-001-expected.txt
@@ -0,0 +1,13 @@
+layer at (0,0) size 800x600
+  RenderCanvas at (0,0) size 800x600
+layer at (0,0) size 800x72
+  RenderBlock {HTML} at (0,0) size 800x72
+    RenderBody {BODY} at (8,8) size 784x56
+      RenderBlock {DIV} at (0,0) size 784x56 [border: (2px solid #FF0000)]
+        RenderInline {SPAN} at (0,0) size 176x28
+          RenderText {TEXT} at (14,14) size 176x28
+            text run at (14,14) width 176: "xxxXXxxxXXxxx"
+selection is CARET:
+start:      position 13 of child 1 {TEXT} of child 1 {SPAN} of root {DIV}
+upstream:   position 13 of child 1 {TEXT} of child 1 {SPAN} of root {DIV}
+downstream: position 13 of child 1 {TEXT} of child 1 {SPAN} of root {DIV}
diff --git a/LayoutTests/editing/inserting/typing-001.html b/LayoutTests/editing/inserting/typing-001.html
new file mode 100644
index 0000000..a56ea04
--- /dev/null
+++ b/LayoutTests/editing/inserting/typing-001.html
@@ -0,0 +1,47 @@
+<html> 
+<head>
+
+<style>
+.editing { 
+    border: 2px solid red; 
+    padding: 12px; 
+    font-size: 24px; 
+}
+</style>
+<script src=../editing.js language="JavaScript" type="text/JavaScript" ></script>
+
+<script>
+
+function editingTest() {
+    for (i = 0; i < 3; i++) {
+        typeCharacterCommand();
+    }
+    for (i = 0; i < 2; i++) {
+        moveSelectionForwardByCharacterCommand();
+    }
+    for (i = 0; i < 3; i++) {
+        typeCharacterCommand();
+    }
+    for (i = 0; i < 2; i++) {
+        moveSelectionForwardByCharacterCommand();
+    }
+    for (i = 0; i < 3; i++) {
+        typeCharacterCommand();
+    }
+}
+
+</script>
+
+<title>Editing Test</title> 
+</head> 
+<body>
+<div contenteditable id="root" class="editing">
+<span id="test">XXXX</span>
+</div>
+
+<script>
+runEditingTest();
+</script>
+
+</body>
+</html>
diff --git a/LayoutTests/editing/inserting/typing-002-expected.txt b/LayoutTests/editing/inserting/typing-002-expected.txt
new file mode 100644
index 0000000..7919da1
--- /dev/null
+++ b/LayoutTests/editing/inserting/typing-002-expected.txt
@@ -0,0 +1,17 @@
+layer at (0,0) size 800x600
+  RenderCanvas at (0,0) size 800x600
+layer at (0,0) size 800x72
+  RenderBlock {HTML} at (0,0) size 800x72
+    RenderBody {BODY} at (8,8) size 784x56
+      RenderBlock {DIV} at (0,0) size 784x56 [border: (2px solid #FF0000)]
+        RenderInline {SPAN} at (0,0) size 112x28
+          RenderText {TEXT} at (14,14) size 79x28
+            text run at (14,14) width 79: "Foo xxx"
+          RenderInline {I} at (0,0) size 33x28
+            RenderText {TEXT} at (93,14) size 33x28
+              text run at (93,14) width 33: "bar"
+        RenderText {TEXT} at (0,0) size 0x0
+selection is CARET:
+start:      position 7 of child 1 {TEXT} of child 2 {SPAN} of root {DIV}
+upstream:   position 7 of child 1 {TEXT} of child 2 {SPAN} of root {DIV}
+downstream: position 0 of child 1 {TEXT} of child 2 {I} of child 2 {SPAN} of root {DIV}
diff --git a/LayoutTests/editing/inserting/typing-002.html b/LayoutTests/editing/inserting/typing-002.html
new file mode 100644
index 0000000..94af2a5
--- /dev/null
+++ b/LayoutTests/editing/inserting/typing-002.html
@@ -0,0 +1,42 @@
+<html> 
+<head>
+
+<style>
+.editing { 
+    border: 2px solid red; 
+    padding: 12px; 
+    font-size: 24px; 
+}
+</style>
+<script src=../editing.js language="JavaScript" type="text/JavaScript" ></script>
+
+<script>
+
+function moveNSpacesAndType(n) {
+    for (i = 0; i < n; i++) {
+        moveSelectionForwardByCharacterCommand();
+    }
+    for (i = 0; i < 3; i++) {
+        typeCharacterCommand();
+    }
+}
+
+function editingTest() {
+    moveNSpacesAndType(4);
+}
+
+</script>
+
+<title>Editing Test</title> 
+</head> 
+<body>
+<div contenteditable id="root" class="editing">
+<span id="test">Foo    <i>  bar</i></span>
+</div>
+
+<script>
+runEditingTest();
+</script>
+
+</body>
+</html>
diff --git a/LayoutTests/editing/inserting/typing-around-br-001-expected.txt b/LayoutTests/editing/inserting/typing-around-br-001-expected.txt
new file mode 100644
index 0000000..55eb5ed
--- /dev/null
+++ b/LayoutTests/editing/inserting/typing-around-br-001-expected.txt
@@ -0,0 +1,34 @@
+layer at (0,0) size 800x600
+  RenderCanvas at (0,0) size 800x600
+layer at (0,0) size 800x268
+  RenderBlock {HTML} at (0,0) size 800x268
+    RenderBody {BODY} at (8,8) size 784x252
+      RenderBlock {DIV} at (0,0) size 784x252 [border: (2px solid #FF0000)]
+        RenderInline {SPAN} at (0,0) size 70x224
+          RenderText {TEXT} at (14,14) size 70x28
+            text run at (14,14) width 70: "XXxxx"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (14,42) size 70x28
+            text run at (14,42) width 70: "XXxxx"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (14,70) size 36x28
+            text run at (14,70) width 36: "xxx"
+          RenderBR {BR} at (14,70) size 0x28
+          RenderText {TEXT} at (14,98) size 70x28
+            text run at (14,98) width 70: "XXxxx"
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (14,126) size 36x28
+            text run at (14,126) width 36: "xxx"
+          RenderBR {BR} at (14,126) size 0x28
+          RenderText {TEXT} at (14,154) size 36x28
+            text run at (14,154) width 36: "xxx"
+          RenderBR {BR} at (14,154) size 0x28
+          RenderText {TEXT} at (14,182) size 36x28
+            text run at (14,182) width 36: "xxx"
+          RenderBR {BR} at (14,182) size 0x28
+          RenderText {TEXT} at (14,210) size 70x28
+            text run at (14,210) width 70: "XXxxx"
+selection is CARET:
+start:      position 5 of child 15 {TEXT} of child 2 {SPAN} of root {DIV}
+upstream:   position 5 of child 15 {TEXT} of child 2 {SPAN} of root {DIV}
+downstream: position 5 of child 15 {TEXT} of child 2 {SPAN} of root {DIV}
diff --git a/LayoutTests/editing/inserting/typing-around-br-001.html b/LayoutTests/editing/inserting/typing-around-br-001.html
new file mode 100644
index 0000000..bba7f54
--- /dev/null
+++ b/LayoutTests/editing/inserting/typing-around-br-001.html
@@ -0,0 +1,49 @@
+<html> 
+<head>
+
+<style>
+.editing { 
+    border: 2px solid red; 
+    padding: 12px; 
+    font-size: 24px; 
+}
+</style>
+<script src=../editing.js language="JavaScript" type="text/JavaScript" ></script>
+
+<script>
+
+function moveNSpacesAndType(n) {
+    for (i = 0; i < n; i++) {
+        moveSelectionForwardByCharacterCommand();
+    }
+    for (i = 0; i < 3; i++) {
+        typeCharacterCommand();
+    }
+}
+
+function editingTest() {
+    moveNSpacesAndType(2);
+    moveNSpacesAndType(3);
+    moveNSpacesAndType(1);
+    moveNSpacesAndType(3);
+    moveNSpacesAndType(1);
+    moveNSpacesAndType(1);
+    moveNSpacesAndType(1);
+    moveNSpacesAndType(3);
+}
+
+</script>
+
+<title>Editing Test</title> 
+</head> 
+<body>
+<div contenteditable id="root" class="editing">
+<span id="test">XX<br>XX<br><br>XX<br><br><br><br>XX</span>
+</div>
+
+<script>
+runEditingTest();
+</script>
+
+</body>
+</html>
diff --git a/LayoutTests/editing/inserting/typing-around-image-001-expected.txt b/LayoutTests/editing/inserting/typing-around-image-001-expected.txt
new file mode 100644
index 0000000..f725ce4
--- /dev/null
+++ b/LayoutTests/editing/inserting/typing-around-image-001-expected.txt
@@ -0,0 +1,24 @@
+layer at (0,0) size 800x600
+  RenderCanvas at (0,0) size 800x600
+layer at (0,0) size 800x153
+  RenderBlock {HTML} at (0,0) size 800x153
+    RenderBody {BODY} at (8,8) size 784x137
+      RenderBlock {DIV} at (0,0) size 784x137 [border: (2px solid #FF0000)]
+        RenderInline {SPAN} at (0,0) size 390x28
+          RenderText {TEXT} at (14,95) size 12x28
+            text run at (14,95) width 12: "x"
+          RenderImage {IMG} at (26,14) size 76x103
+          RenderText {TEXT} at (102,95) size 36x28
+            text run at (102,95) width 36: "xxx"
+          RenderImage {IMG} at (138,14) size 76x103
+          RenderText {TEXT} at (214,95) size 36x28
+            text run at (214,95) width 36: "xxx"
+          RenderText {TEXT} at (250,95) size 42x28
+            text run at (250,95) width 42: " xxx"
+          RenderImage {IMG} at (292,14) size 76x103
+          RenderText {TEXT} at (368,95) size 36x28
+            text run at (368,95) width 36: "xxx"
+selection is CARET:
+start:      position 3 of child 8 {TEXT} of child 1 {SPAN} of root {DIV}
+upstream:   position 3 of child 8 {TEXT} of child 1 {SPAN} of root {DIV}
+downstream: position 3 of child 8 {TEXT} of child 1 {SPAN} of root {DIV}
diff --git a/LayoutTests/editing/inserting/typing-around-image-001.html b/LayoutTests/editing/inserting/typing-around-image-001.html
new file mode 100644
index 0000000..98d0896
--- /dev/null
+++ b/LayoutTests/editing/inserting/typing-around-image-001.html
@@ -0,0 +1,46 @@
+<html> 
+<head>
+
+<style>
+.editing { 
+    border: 2px solid red; 
+    padding: 12px; 
+    font-size: 24px; 
+}
+</style>
+<script src=../editing.js language="JavaScript" type="text/JavaScript" ></script>
+
+<script>
+
+function moveNSpacesAndType(n) {
+    for (i = 0; i < n; i++) {
+        moveSelectionForwardByCharacterCommand();
+    }
+    for (i = 0; i < 3; i++) {
+        typeCharacterCommand();
+    }
+}
+
+function editingTest() {
+    typeCharacterCommand();
+    moveNSpacesAndType(1);
+    moveNSpacesAndType(1);
+    moveNSpacesAndType(1);
+    moveNSpacesAndType(1);
+}
+
+</script>
+
+<title>Editing Test</title> 
+</head> 
+<body>
+<div contenteditable id="root" class="editing">
+<span id="test"><img src="../abe.jpg"><img src="../abe.jpg"> <img src="../abe.jpg"></span>
+</div>
+
+<script>
+runEditingTest();
+</script>
+
+</body>
+</html>
diff --git a/LayoutTests/editing/selection/extend-by-character-001-expected.txt b/LayoutTests/editing/selection/extend-by-character-001-expected.txt
new file mode 100644
index 0000000..8dd38e4
--- /dev/null
+++ b/LayoutTests/editing/selection/extend-by-character-001-expected.txt
@@ -0,0 +1,20 @@
+layer at (0,0) size 800x600
+  RenderCanvas at (0,0) size 800x600
+layer at (0,0) size 800x72
+  RenderBlock {HTML} at (0,0) size 800x72
+    RenderBody {BODY} at (8,8) size 784x56
+      RenderBlock {DIV} at (0,0) size 784x56 [border: (2px solid #FF0000)]
+        RenderInline {SPAN} at (0,0) size 115x28
+          RenderText {TEXT} at (14,14) size 115x28
+            text run at (14,14) width 14: "f "
+            text run at (28,14) width 30: "oo "
+            text run at (58,14) width 37: "bar "
+            text run at (95,14) width 34: "baz"
+        RenderText {TEXT} at (0,0) size 0x0
+selection is RANGE:
+start:      position 2 of child 1 {TEXT} of child 2 {SPAN} of root {DIV}
+upstream:   position 2 of child 1 {TEXT} of child 2 {SPAN} of root {DIV}
+downstream: position 5 of child 1 {TEXT} of child 2 {SPAN} of root {DIV}
+end:        position 14 of child 1 {TEXT} of child 2 {SPAN} of root {DIV}
+upstream:   position 14 of child 1 {TEXT} of child 2 {SPAN} of root {DIV}
+downstream: position 17 of child 1 {TEXT} of child 2 {SPAN} of root {DIV}
diff --git a/LayoutTests/editing/selection/extend-by-character-001.html b/LayoutTests/editing/selection/extend-by-character-001.html
new file mode 100644
index 0000000..63db1c0
--- /dev/null
+++ b/LayoutTests/editing/selection/extend-by-character-001.html
@@ -0,0 +1,37 @@
+<html> 
+<head>
+
+<style>
+.editing { 
+    border: 2px solid red; 
+    padding: 12px; 
+    font-size: 24px; 
+}
+</style>
+<script src=../editing.js language="JavaScript" type="text/JavaScript" ></script>
+
+<script>
+
+function editingTest() {
+    moveSelectionForwardByCharacterCommand();
+    moveSelectionForwardByCharacterCommand();
+    for (i = 0; i < 7; i++) {
+        extendSelectionForwardByCharacterCommand();
+    }
+}
+
+</script>
+
+<title>Editing Test</title> 
+</head> 
+<body>
+<div contenteditable id="root" class="editing">
+<span id="test">f    oo   bar    baz</span>
+</div>
+
+<script>
+runEditingTest();
+</script>
+
+</body>
+</html>
diff --git a/LayoutTests/editing/selection/extend-by-character-002-expected.txt b/LayoutTests/editing/selection/extend-by-character-002-expected.txt
new file mode 100644
index 0000000..993861b
--- /dev/null
+++ b/LayoutTests/editing/selection/extend-by-character-002-expected.txt
@@ -0,0 +1,34 @@
+layer at (0,0) size 800x600
+  RenderCanvas at (0,0) size 800x600
+layer at (0,0) size 800x371
+  RenderBlock {HTML} at (0,0) size 800x371
+    RenderBody {BODY} at (8,8) size 784x355
+      RenderBlock {DIV} at (0,0) size 784x355 [border: (2px solid #FF0000)]
+        RenderInline {SPAN} at (0,0) size 254x246
+          RenderText {TEXT} at (14,95) size 11x28
+            text run at (14,95) width 11: "a"
+          RenderImage {IMG} at (25,14) size 76x103
+          RenderText {TEXT} at (101,95) size 46x28
+            text run at (101,95) width 46: "new "
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (14,204) size 67x28
+            text run at (14,204) width 67: "nation "
+          RenderInline {I} at (0,0) size 0x0
+            RenderText {TEXT} at (0,0) size 0x0
+          RenderText {TEXT} at (0,0) size 0x0
+          RenderImage {IMG} at (81,123) size 76x103
+          RenderText {TEXT} at (157,204) size 111x28
+            text run at (157,204) width 6: " "
+            text run at (163,204) width 105: "conceived "
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (14,313) size 61x28
+            text run at (14,313) width 61: "nation"
+          RenderImage {IMG} at (75,232) size 76x103
+        RenderText {TEXT} at (0,0) size 0x0
+selection is RANGE:
+start:      position 0 of child 1 {TEXT} of child 2 {SPAN} of root {DIV}
+upstream:   position 0 of child 1 {TEXT} of root {DIV}
+downstream: position 0 of child 1 {TEXT} of child 2 {SPAN} of root {DIV}
+end:        position 6 of child 11 {TEXT} of child 2 {SPAN} of root {DIV}
+upstream:   position 6 of child 11 {TEXT} of child 2 {SPAN} of root {DIV}
+downstream: position 0 of child 12 {IMG} of child 2 {SPAN} of root {DIV}
diff --git a/LayoutTests/editing/selection/extend-by-character-002.html b/LayoutTests/editing/selection/extend-by-character-002.html
new file mode 100644
index 0000000..9768d8a
--- /dev/null
+++ b/LayoutTests/editing/selection/extend-by-character-002.html
@@ -0,0 +1,40 @@
+<html> 
+<head>
+
+<style>
+.editing { 
+    border: 2px solid red; 
+    padding: 12px; 
+    font-size: 24px; 
+}
+</style>
+<script src=../editing.js language="JavaScript" type="text/JavaScript" ></script>
+
+<script>
+
+function editingTest() {
+    for (i = 0; i < 33; i++) {
+        extendSelectionForwardByCharacterCommand();
+    }
+}
+
+</script>
+
+<title>Editing Test</title> 
+</head> 
+<body>
+<div contenteditable id="root" class="editing">
+<span id="test">a<img src="../abe.jpg">new      
+<br>nation    <i>  </i> <img src="../abe.jpg">     
+
+
+conceived
+<br>nation<img src="../abe.jpg"></span>
+</div>
+
+<script>
+runEditingTest();
+</script>
+
+</body>
+</html>
diff --git a/LayoutTests/editing/selection/extend-by-character-003-expected.txt b/LayoutTests/editing/selection/extend-by-character-003-expected.txt
new file mode 100644
index 0000000..7ccd6d8
--- /dev/null
+++ b/LayoutTests/editing/selection/extend-by-character-003-expected.txt
@@ -0,0 +1,32 @@
+layer at (0,0) size 800x600
+  RenderCanvas at (0,0) size 800x600
+layer at (0,0) size 800x128
+  RenderBlock {HTML} at (0,0) size 800x128
+    RenderBody {BODY} at (8,8) size 784x112
+      RenderBlock {DIV} at (0,0) size 784x112 [border: (2px solid #FF0000)]
+        RenderInline {SPAN} at (0,0) size 659x84
+          RenderInline {I} at (0,0) size 117x28
+            RenderText {TEXT} at (14,14) size 117x28
+              text run at (14,14) width 21: "F "
+              text run at (35,14) width 96: "and seven"
+          RenderText {TEXT} at (131,14) size 63x28
+            text run at (131,14) width 63: " years "
+          RenderInline {B} at (0,0) size 27x28
+            RenderText {TEXT} at (194,14) size 27x28
+              text run at (194,14) width 27: "as "
+          RenderText {TEXT} at (221,14) size 659x56
+            text run at (221,14) width 110: "our fathers "
+            text run at (331,14) width 342: "f upon this continent, a new nation,"
+            text run at (14,42) width 232: "conceived    in Liberty, "
+            text run at (246,42) width 392: "and dedicated to the proposition that all "
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (14,70) size 220x28
+            text run at (14,70) width 220: "men are created equal."
+        RenderText {TEXT} at (0,0) size 0x0
+selection is RANGE:
+start:      position 2 of child 1 {TEXT} of child 1 {I} of child 2 {SPAN} of root {DIV}
+upstream:   position 2 of child 1 {TEXT} of child 1 {I} of child 2 {SPAN} of root {DIV}
+downstream: position 5 of child 1 {TEXT} of child 1 {I} of child 2 {SPAN} of root {DIV}
+end:        position 21 of child 6 {TEXT} of child 2 {SPAN} of root {DIV}
+upstream:   position 21 of child 6 {TEXT} of child 2 {SPAN} of root {DIV}
+downstream: position 21 of child 6 {TEXT} of child 2 {SPAN} of root {DIV}
diff --git a/LayoutTests/editing/selection/extend-by-character-003.html b/LayoutTests/editing/selection/extend-by-character-003.html
new file mode 100644
index 0000000..9e43e1d
--- /dev/null
+++ b/LayoutTests/editing/selection/extend-by-character-003.html
@@ -0,0 +1,40 @@
+<html> 
+<head>
+
+<style>
+.editing { 
+    border: 2px solid red; 
+    padding: 12px; 
+    font-size: 24px; 
+}
+</style>
+<script src=../editing.js language="JavaScript" type="text/JavaScript" ></script>
+
+<script>
+
+function editingTest() {
+    moveSelectionForwardByCharacterCommand();
+    moveSelectionForwardByCharacterCommand();
+    for (i = 0; i < 157; i++) {
+        extendSelectionForwardByCharacterCommand();
+    }
+}
+
+</script>
+
+<title>Editing Test</title> 
+</head> 
+<body>
+<div contenteditable id="root" class="editing">
+<span id="test"><i>F    and seven</i> years <b>  as </b>our fathers  f upon this
+continent, a new nation, conceived &nbsp;&nbsp; in Liberty,                 and dedicated to the
+proposition that all 
+<br>men are created equal.</span>
+</div>
+
+<script>
+runEditingTest();
+</script>
+
+</body>
+</html>
diff --git a/LayoutTests/editing/selection/extend-by-character-004-expected.txt b/LayoutTests/editing/selection/extend-by-character-004-expected.txt
new file mode 100644
index 0000000..3ac25b4
--- /dev/null
+++ b/LayoutTests/editing/selection/extend-by-character-004-expected.txt
@@ -0,0 +1,33 @@
+layer at (0,0) size 800x600
+  RenderCanvas at (0,0) size 800x600
+layer at (0,0) size 800x371
+  RenderBlock {HTML} at (0,0) size 800x371
+    RenderBody {BODY} at (8,8) size 784x355
+      RenderBlock {DIV} at (0,0) size 784x355 [border: (2px solid #FF0000)]
+        RenderInline {SPAN} at (0,0) size 254x246
+          RenderText {TEXT} at (14,95) size 11x28
+            text run at (14,95) width 11: "a"
+          RenderImage {IMG} at (25,14) size 76x103
+          RenderText {TEXT} at (101,95) size 46x28
+            text run at (101,95) width 46: "new "
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (14,204) size 67x28
+            text run at (14,204) width 67: "nation "
+          RenderInline {I} at (0,0) size 0x0
+            RenderText {TEXT} at (0,0) size 0x0
+          RenderText {TEXT} at (0,0) size 0x0
+          RenderImage {IMG} at (81,123) size 76x103
+          RenderText {TEXT} at (157,204) size 111x28
+            text run at (157,204) width 111: " conceived "
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (14,313) size 61x28
+            text run at (14,313) width 61: "nation"
+          RenderImage {IMG} at (75,232) size 76x103
+        RenderText {TEXT} at (0,0) size 0x0
+selection is RANGE:
+start:      position 0 of child 1 {TEXT} of child 2 {SPAN} of root {DIV}
+upstream:   position 0 of child 1 {TEXT} of root {DIV}
+downstream: position 0 of child 1 {TEXT} of child 2 {SPAN} of root {DIV}
+end:        position 1 of child 3 {TEXT} of child 2 {SPAN} of root {DIV}
+upstream:   position 1 of child 3 {TEXT} of child 2 {SPAN} of root {DIV}
+downstream: position 1 of child 3 {TEXT} of child 2 {SPAN} of root {DIV}
diff --git a/LayoutTests/editing/selection/extend-by-character-004.html b/LayoutTests/editing/selection/extend-by-character-004.html
new file mode 100644
index 0000000..7c63a07
--- /dev/null
+++ b/LayoutTests/editing/selection/extend-by-character-004.html
@@ -0,0 +1,40 @@
+<html> 
+<head>
+
+<style>
+.editing { 
+    border: 2px solid red; 
+    padding: 12px; 
+    font-size: 24px; 
+}
+</style>
+<script src=../editing.js language="JavaScript" type="text/JavaScript" ></script>
+
+<script>
+
+function editingTest() {
+    for (i = 0; i < 33; i++) {
+        extendSelectionForwardByCharacterCommand();
+    }
+    for (i = 0; i < 30; i++) {
+        extendSelectionBackwardByCharacterCommand();
+    }
+}
+
+</script>
+
+<title>Editing Test</title> 
+</head> 
+<body>
+<div contenteditable id="root" class="editing">
+<span id="test">a<img src="../abe.jpg">new 
+<br>nation <i>  </i> <img src="../abe.jpg"> conceived
+<br>nation<img src="../abe.jpg"></span>
+</div>
+
+<script>
+runEditingTest();
+</script>
+
+</body>
+</html>
diff --git a/LayoutTests/editing/selection/extend-by-character-005-expected.txt b/LayoutTests/editing/selection/extend-by-character-005-expected.txt
new file mode 100644
index 0000000..a6701d2
--- /dev/null
+++ b/LayoutTests/editing/selection/extend-by-character-005-expected.txt
@@ -0,0 +1,32 @@
+layer at (0,0) size 800x600
+  RenderCanvas at (0,0) size 800x600
+layer at (0,0) size 800x128
+  RenderBlock {HTML} at (0,0) size 800x128
+    RenderBody {BODY} at (8,8) size 784x112
+      RenderBlock {DIV} at (0,0) size 784x112 [border: (2px solid #FF0000)]
+        RenderInline {SPAN} at (0,0) size 659x84
+          RenderInline {I} at (0,0) size 117x28
+            RenderText {TEXT} at (14,14) size 117x28
+              text run at (14,14) width 21: "F "
+              text run at (35,14) width 96: "and seven"
+          RenderText {TEXT} at (131,14) size 63x28
+            text run at (131,14) width 63: " years "
+          RenderInline {B} at (0,0) size 27x28
+            RenderText {TEXT} at (194,14) size 27x28
+              text run at (194,14) width 27: "as "
+          RenderText {TEXT} at (221,14) size 659x56
+            text run at (221,14) width 110: "our fathers "
+            text run at (331,14) width 342: "f upon this continent, a new nation,"
+            text run at (14,42) width 232: "conceived    in Liberty, "
+            text run at (246,42) width 392: "and dedicated to the proposition that all "
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (14,70) size 220x28
+            text run at (14,70) width 220: "men are created equal."
+        RenderText {TEXT} at (0,0) size 0x0
+selection is RANGE:
+start:      position 0 of child 1 {TEXT} of child 1 {I} of child 2 {SPAN} of root {DIV}
+upstream:   position 0 of child 1 {TEXT} of root {DIV}
+downstream: position 0 of child 1 {TEXT} of child 1 {I} of child 2 {SPAN} of root {DIV}
+end:        position 1 of child 1 {TEXT} of child 1 {I} of child 2 {SPAN} of root {DIV}
+upstream:   position 1 of child 1 {TEXT} of child 1 {I} of child 2 {SPAN} of root {DIV}
+downstream: position 1 of child 1 {TEXT} of child 1 {I} of child 2 {SPAN} of root {DIV}
diff --git a/LayoutTests/editing/selection/extend-by-character-005.html b/LayoutTests/editing/selection/extend-by-character-005.html
new file mode 100644
index 0000000..4b12949
--- /dev/null
+++ b/LayoutTests/editing/selection/extend-by-character-005.html
@@ -0,0 +1,41 @@
+<html> 
+<head>
+
+<style>
+.editing { 
+    border: 2px solid red; 
+    padding: 12px; 
+    font-size: 24px; 
+}
+</style>
+<script src=../editing.js language="JavaScript" type="text/JavaScript" ></script>
+
+<script>
+
+function editingTest() {
+    for (i = 0; i < 159; i++) {
+        extendSelectionForwardByCharacterCommand();
+    }
+    for (i = 0; i < 158; i++) {
+        extendSelectionBackwardByCharacterCommand();
+    }
+}
+
+</script>
+
+<title>Editing Test</title> 
+</head> 
+<body>
+<div contenteditable id="root" class="editing">
+<span id="test"><i>F    and seven</i> years <b>  as </b>our fathers  f upon this
+continent, a new nation, conceived &nbsp;&nbsp; in Liberty,                 and dedicated to the
+proposition that all 
+<br>men are created equal.</span>
+</div>
+
+<script>
+runEditingTest();
+</script>
+
+</body>
+</html>
diff --git a/LayoutTests/editing/selection/move-by-character-001-expected.txt b/LayoutTests/editing/selection/move-by-character-001-expected.txt
new file mode 100644
index 0000000..d1df4fa
--- /dev/null
+++ b/LayoutTests/editing/selection/move-by-character-001-expected.txt
@@ -0,0 +1,16 @@
+layer at (0,0) size 800x600
+  RenderCanvas at (0,0) size 800x600
+layer at (0,0) size 800x72
+  RenderBlock {HTML} at (0,0) size 800x72
+    RenderBody {BODY} at (8,8) size 784x56
+      RenderBlock {DIV} at (0,0) size 784x56 [border: (2px solid #FF0000)]
+        RenderInline {SPAN} at (0,0) size 109x28
+          RenderText {TEXT} at (14,14) size 109x28
+            text run at (14,14) width 38: "foo "
+            text run at (52,14) width 37: "bar "
+            text run at (89,14) width 34: "baz"
+        RenderText {TEXT} at (0,0) size 0x0
+selection is CARET:
+start:      position 16 of child 1 {TEXT} of child 2 {SPAN} of root {DIV}
+upstream:   position 16 of child 1 {TEXT} of child 2 {SPAN} of root {DIV}
+downstream: position 1 of child 3 {TEXT} of root {DIV}
diff --git a/LayoutTests/editing/selection/move-by-character-001.html b/LayoutTests/editing/selection/move-by-character-001.html
new file mode 100644
index 0000000..52fca9f
--- /dev/null
+++ b/LayoutTests/editing/selection/move-by-character-001.html
@@ -0,0 +1,35 @@
+<html> 
+<head>
+
+<style>
+.editing { 
+    border: 2px solid red; 
+    padding: 12px; 
+    font-size: 24px; 
+}
+</style>
+<script src=../editing.js language="JavaScript" type="text/JavaScript" ></script>
+
+<script>
+
+function editingTest() {
+    for (i = 0; i < 11; i++) {
+        moveSelectionForwardByCharacterCommand();
+    }
+}
+
+</script>
+
+<title>Editing Test</title> 
+</head> 
+<body>
+<div contenteditable id="root" class="editing">
+<span id="test">foo   bar    baz</span>
+</div>
+
+<script>
+runEditingTest();
+</script>
+
+</body>
+</html>
diff --git a/LayoutTests/editing/selection/move-by-character-002-expected.txt b/LayoutTests/editing/selection/move-by-character-002-expected.txt
new file mode 100644
index 0000000..c95a720
--- /dev/null
+++ b/LayoutTests/editing/selection/move-by-character-002-expected.txt
@@ -0,0 +1,30 @@
+layer at (0,0) size 800x600
+  RenderCanvas at (0,0) size 800x600
+layer at (0,0) size 800x371
+  RenderBlock {HTML} at (0,0) size 800x371
+    RenderBody {BODY} at (8,8) size 784x355
+      RenderBlock {DIV} at (0,0) size 784x355 [border: (2px solid #FF0000)]
+        RenderInline {SPAN} at (0,0) size 254x246
+          RenderText {TEXT} at (14,95) size 11x28
+            text run at (14,95) width 11: "a"
+          RenderImage {IMG} at (25,14) size 76x103
+          RenderText {TEXT} at (101,95) size 46x28
+            text run at (101,95) width 46: "new "
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (14,204) size 67x28
+            text run at (14,204) width 67: "nation "
+          RenderInline {I} at (0,0) size 0x0
+            RenderText {TEXT} at (0,0) size 0x0
+          RenderText {TEXT} at (0,0) size 0x0
+          RenderImage {IMG} at (81,123) size 76x103
+          RenderText {TEXT} at (157,204) size 111x28
+            text run at (157,204) width 111: " conceived "
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (14,313) size 61x28
+            text run at (14,313) width 61: "nation"
+          RenderImage {IMG} at (75,232) size 76x103
+        RenderText {TEXT} at (0,0) size 0x0
+selection is CARET:
+start:      position 6 of child 11 {TEXT} of child 2 {SPAN} of root {DIV}
+upstream:   position 6 of child 11 {TEXT} of child 2 {SPAN} of root {DIV}
+downstream: position 0 of child 12 {IMG} of child 2 {SPAN} of root {DIV}
diff --git a/LayoutTests/editing/selection/move-by-character-002.html b/LayoutTests/editing/selection/move-by-character-002.html
new file mode 100644
index 0000000..e6cbc1c
--- /dev/null
+++ b/LayoutTests/editing/selection/move-by-character-002.html
@@ -0,0 +1,37 @@
+<html> 
+<head>
+
+<style>
+.editing { 
+    border: 2px solid red; 
+    padding: 12px; 
+    font-size: 24px; 
+}
+</style>
+<script src=../editing.js language="JavaScript" type="text/JavaScript" ></script>
+
+<script>
+
+function editingTest() {
+    for (i = 0; i < 33; i++) {
+        moveSelectionForwardByCharacterCommand();
+    }
+}
+
+</script>
+
+<title>Editing Test</title> 
+</head> 
+<body>
+<div contenteditable id="root" class="editing">
+<span id="test">a<img src="../abe.jpg">new 
+<br>nation <i>  </i> <img src="../abe.jpg"> conceived
+<br>nation<img src="../abe.jpg"></span>
+</div>
+
+<script>
+runEditingTest();
+</script>
+
+</body>
+</html>
diff --git a/LayoutTests/editing/selection/move-by-character-003-expected.txt b/LayoutTests/editing/selection/move-by-character-003-expected.txt
new file mode 100644
index 0000000..c94149f
--- /dev/null
+++ b/LayoutTests/editing/selection/move-by-character-003-expected.txt
@@ -0,0 +1,29 @@
+layer at (0,0) size 800x600
+  RenderCanvas at (0,0) size 800x600
+layer at (0,0) size 800x128
+  RenderBlock {HTML} at (0,0) size 800x128
+    RenderBody {BODY} at (8,8) size 784x112
+      RenderBlock {DIV} at (0,0) size 784x112 [border: (2px solid #FF0000)]
+        RenderInline {SPAN} at (0,0) size 659x84
+          RenderInline {I} at (0,0) size 117x28
+            RenderText {TEXT} at (14,14) size 117x28
+              text run at (14,14) width 21: "F "
+              text run at (35,14) width 96: "and seven"
+          RenderText {TEXT} at (131,14) size 63x28
+            text run at (131,14) width 63: " years "
+          RenderInline {B} at (0,0) size 27x28
+            RenderText {TEXT} at (194,14) size 27x28
+              text run at (194,14) width 27: "as "
+          RenderText {TEXT} at (221,14) size 659x56
+            text run at (221,14) width 110: "our fathers "
+            text run at (331,14) width 342: "f upon this continent, a new nation,"
+            text run at (14,42) width 232: "conceived    in Liberty, "
+            text run at (246,42) width 392: "and dedicated to the proposition that all "
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (14,70) size 220x28
+            text run at (14,70) width 220: "men are created equal."
+        RenderText {TEXT} at (0,0) size 0x0
+selection is CARET:
+start:      position 21 of child 6 {TEXT} of child 2 {SPAN} of root {DIV}
+upstream:   position 21 of child 6 {TEXT} of child 2 {SPAN} of root {DIV}
+downstream: position 21 of child 6 {TEXT} of child 2 {SPAN} of root {DIV}
diff --git a/LayoutTests/editing/selection/move-by-character-003.html b/LayoutTests/editing/selection/move-by-character-003.html
new file mode 100644
index 0000000..addca0b
--- /dev/null
+++ b/LayoutTests/editing/selection/move-by-character-003.html
@@ -0,0 +1,38 @@
+<html> 
+<head>
+
+<style>
+.editing { 
+    border: 2px solid red; 
+    padding: 12px; 
+    font-size: 24px; 
+}
+</style>
+<script src=../editing.js language="JavaScript" type="text/JavaScript" ></script>
+
+<script>
+
+function editingTest() {
+    for (i = 0; i < 159; i++) {
+        moveSelectionForwardByCharacterCommand();
+    }
+}
+
+</script>
+
+<title>Editing Test</title> 
+</head> 
+<body>
+<div contenteditable id="root" class="editing">
+<span id="test"><i>F    and seven</i> years <b>  as </b>our fathers  f upon this
+continent, a new nation, conceived &nbsp;&nbsp; in Liberty,                 and dedicated to the
+proposition that all 
+<br>men are created equal.</span>
+</div>
+
+<script>
+runEditingTest();
+</script>
+
+</body>
+</html>
diff --git a/LayoutTests/editing/selection/move-by-character-004-expected.txt b/LayoutTests/editing/selection/move-by-character-004-expected.txt
new file mode 100644
index 0000000..3eb37f8
--- /dev/null
+++ b/LayoutTests/editing/selection/move-by-character-004-expected.txt
@@ -0,0 +1,30 @@
+layer at (0,0) size 800x600
+  RenderCanvas at (0,0) size 800x600
+layer at (0,0) size 800x371
+  RenderBlock {HTML} at (0,0) size 800x371
+    RenderBody {BODY} at (8,8) size 784x355
+      RenderBlock {DIV} at (0,0) size 784x355 [border: (2px solid #FF0000)]
+        RenderInline {SPAN} at (0,0) size 254x246
+          RenderText {TEXT} at (14,95) size 11x28
+            text run at (14,95) width 11: "a"
+          RenderImage {IMG} at (25,14) size 76x103
+          RenderText {TEXT} at (101,95) size 46x28
+            text run at (101,95) width 46: "new "
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (14,204) size 67x28
+            text run at (14,204) width 67: "nation "
+          RenderInline {I} at (0,0) size 0x0
+            RenderText {TEXT} at (0,0) size 0x0
+          RenderText {TEXT} at (0,0) size 0x0
+          RenderImage {IMG} at (81,123) size 76x103
+          RenderText {TEXT} at (157,204) size 111x28
+            text run at (157,204) width 111: " conceived "
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (14,313) size 61x28
+            text run at (14,313) width 61: "nation"
+          RenderImage {IMG} at (75,232) size 76x103
+        RenderText {TEXT} at (0,0) size 0x0
+selection is CARET:
+start:      position 0 of child 2 {IMG} of child 2 {SPAN} of root {DIV}
+upstream:   position 1 of child 1 {TEXT} of child 2 {SPAN} of root {DIV}
+downstream: position 0 of child 2 {IMG} of child 2 {SPAN} of root {DIV}
diff --git a/LayoutTests/editing/selection/move-by-character-004.html b/LayoutTests/editing/selection/move-by-character-004.html
new file mode 100644
index 0000000..76b8d68
--- /dev/null
+++ b/LayoutTests/editing/selection/move-by-character-004.html
@@ -0,0 +1,40 @@
+<html> 
+<head>
+
+<style>
+.editing { 
+    border: 2px solid red; 
+    padding: 12px; 
+    font-size: 24px; 
+}
+</style>
+<script src=../editing.js language="JavaScript" type="text/JavaScript" ></script>
+
+<script>
+
+function editingTest() {
+    for (i = 0; i < 33; i++) {
+        moveSelectionForwardByCharacterCommand();
+    }
+    for (i = 0; i < 32; i++) {
+        moveSelectionBackwardByCharacterCommand();
+    }
+}
+
+</script>
+
+<title>Editing Test</title> 
+</head> 
+<body>
+<div contenteditable id="root" class="editing">
+<span id="test">a<img src="../abe.jpg">new 
+<br>nation <i>  </i> <img src="../abe.jpg"> conceived
+<br>nation<img src="../abe.jpg"></span>
+</div>
+
+<script>
+runEditingTest();
+</script>
+
+</body>
+</html>
diff --git a/LayoutTests/editing/selection/move-by-character-005-expected.txt b/LayoutTests/editing/selection/move-by-character-005-expected.txt
new file mode 100644
index 0000000..a882a18
--- /dev/null
+++ b/LayoutTests/editing/selection/move-by-character-005-expected.txt
@@ -0,0 +1,29 @@
+layer at (0,0) size 800x600
+  RenderCanvas at (0,0) size 800x600
+layer at (0,0) size 800x128
+  RenderBlock {HTML} at (0,0) size 800x128
+    RenderBody {BODY} at (8,8) size 784x112
+      RenderBlock {DIV} at (0,0) size 784x112 [border: (2px solid #FF0000)]
+        RenderInline {SPAN} at (0,0) size 659x84
+          RenderInline {I} at (0,0) size 117x28
+            RenderText {TEXT} at (14,14) size 117x28
+              text run at (14,14) width 21: "F "
+              text run at (35,14) width 96: "and seven"
+          RenderText {TEXT} at (131,14) size 63x28
+            text run at (131,14) width 63: " years "
+          RenderInline {B} at (0,0) size 27x28
+            RenderText {TEXT} at (194,14) size 27x28
+              text run at (194,14) width 27: "as "
+          RenderText {TEXT} at (221,14) size 659x56
+            text run at (221,14) width 110: "our fathers "
+            text run at (331,14) width 342: "f upon this continent, a new nation,"
+            text run at (14,42) width 232: "conceived    in Liberty, "
+            text run at (246,42) width 392: "and dedicated to the proposition that all "
+          RenderBR {BR} at (0,0) size 0x0
+          RenderText {TEXT} at (14,70) size 220x28
+            text run at (14,70) width 220: "men are created equal."
+        RenderText {TEXT} at (0,0) size 0x0
+selection is CARET:
+start:      position 1 of child 1 {TEXT} of child 1 {I} of child 2 {SPAN} of root {DIV}
+upstream:   position 1 of child 1 {TEXT} of child 1 {I} of child 2 {SPAN} of root {DIV}
+downstream: position 1 of child 1 {TEXT} of child 1 {I} of child 2 {SPAN} of root {DIV}
diff --git a/LayoutTests/editing/selection/move-by-character-005.html b/LayoutTests/editing/selection/move-by-character-005.html
new file mode 100644
index 0000000..e468225
--- /dev/null
+++ b/LayoutTests/editing/selection/move-by-character-005.html
@@ -0,0 +1,41 @@
+<html> 
+<head>
+
+<style>
+.editing { 
+    border: 2px solid red; 
+    padding: 12px; 
+    font-size: 24px; 
+}
+</style>
+<script src=../editing.js language="JavaScript" type="text/JavaScript" ></script>
+
+<script>
+
+function editingTest() {
+    for (i = 0; i < 159; i++) {
+        moveSelectionForwardByCharacterCommand();
+    }
+    for (i = 0; i < 158; i++) {
+        moveSelectionBackwardByCharacterCommand();
+    }
+}
+
+</script>
+
+<title>Editing Test</title> 
+</head> 
+<body>
+<div contenteditable id="root" class="editing">
+<span id="test"><i>F    and seven</i> years <b>  as </b>our fathers  f upon this
+continent, a new nation, conceived &nbsp;&nbsp; in Liberty,                 and dedicated to the
+proposition that all 
+<br>men are created equal.</span>
+</div>
+
+<script>
+runEditingTest();
+</script>
+
+</body>
+</html>
diff --git a/LayoutTests/editing/undo/redo-typing-001-expected.txt b/LayoutTests/editing/undo/redo-typing-001-expected.txt
new file mode 100644
index 0000000..29e150d
--- /dev/null
+++ b/LayoutTests/editing/undo/redo-typing-001-expected.txt
@@ -0,0 +1,13 @@
+layer at (0,0) size 800x600
+  RenderCanvas at (0,0) size 800x600
+layer at (0,0) size 800x72
+  RenderBlock {HTML} at (0,0) size 800x72
+    RenderBody {BODY} at (8,8) size 784x56
+      RenderBlock {DIV} at (0,0) size 784x56 [border: (2px solid #FF0000)]
+        RenderInline {SPAN} at (0,0) size 46x28
+          RenderText {TEXT} at (14,14) size 46x28
+            text run at (14,14) width 46: "xXX"
+selection is CARET:
+start:      position 1 of child 1 {TEXT} of child 1 {SPAN} of root {DIV}
+upstream:   position 1 of child 1 {TEXT} of child 1 {SPAN} of root {DIV}
+downstream: position 1 of child 1 {TEXT} of child 1 {SPAN} of root {DIV}
diff --git a/LayoutTests/editing/undo/redo-typing-001.html b/LayoutTests/editing/undo/redo-typing-001.html
new file mode 100644
index 0000000..4f6e403
--- /dev/null
+++ b/LayoutTests/editing/undo/redo-typing-001.html
@@ -0,0 +1,35 @@
+<html> 
+<head>
+
+<style>
+.editing { 
+    border: 2px solid red; 
+    padding: 12px; 
+    font-size: 24px; 
+}
+</style>
+<script src=../editing.js language="JavaScript" type="text/JavaScript" ></script>
+
+<script>
+
+function editingTest() {
+    typeCharacterCommand();
+    undoCommand();
+    redoCommand();
+}
+
+</script>
+
+<title>Editing Test</title> 
+</head> 
+<body>
+<div contenteditable id="root" class="editing">
+<span id="test">XX
+</div>
+
+<script>
+runEditingTest();
+</script>
+
+</body>
+</html>
diff --git a/LayoutTests/editing/undo/undo-typing-001-expected.txt b/LayoutTests/editing/undo/undo-typing-001-expected.txt
new file mode 100644
index 0000000..29e150d
--- /dev/null
+++ b/LayoutTests/editing/undo/undo-typing-001-expected.txt
@@ -0,0 +1,13 @@
+layer at (0,0) size 800x600
+  RenderCanvas at (0,0) size 800x600
+layer at (0,0) size 800x72
+  RenderBlock {HTML} at (0,0) size 800x72
+    RenderBody {BODY} at (8,8) size 784x56
+      RenderBlock {DIV} at (0,0) size 784x56 [border: (2px solid #FF0000)]
+        RenderInline {SPAN} at (0,0) size 46x28
+          RenderText {TEXT} at (14,14) size 46x28
+            text run at (14,14) width 46: "xXX"
+selection is CARET:
+start:      position 1 of child 1 {TEXT} of child 1 {SPAN} of root {DIV}
+upstream:   position 1 of child 1 {TEXT} of child 1 {SPAN} of root {DIV}
+downstream: position 1 of child 1 {TEXT} of child 1 {SPAN} of root {DIV}
diff --git a/LayoutTests/editing/undo/undo-typing-001.html b/LayoutTests/editing/undo/undo-typing-001.html
new file mode 100644
index 0000000..b4060d9
--- /dev/null
+++ b/LayoutTests/editing/undo/undo-typing-001.html
@@ -0,0 +1,34 @@
+<html> 
+<head>
+
+<style>
+.editing { 
+    border: 2px solid red; 
+    padding: 12px; 
+    font-size: 24px; 
+}
+</style>
+<script src=../editing.js language="JavaScript" type="text/JavaScript" ></script>
+
+<script>
+
+function editingTest() {
+    typeCharacterCommand();
+    undoCommand();
+}
+
+</script>
+
+<title>Editing Test</title> 
+</head> 
+<body>
+<div contenteditable id="root" class="editing">
+<span id="test">XX
+</div>
+
+<script>
+runEditingTest();
+</script>
+
+</body>
+</html>
diff --git a/WebCore/ChangeLog-2005-08-23 b/WebCore/ChangeLog-2005-08-23
index bb134fb..37b640d 100644
--- a/WebCore/ChangeLog-2005-08-23
+++ b/WebCore/ChangeLog-2005-08-23
@@ -1,5 +1,81 @@
 2004-04-06  Ken Kocienda  <kocienda at apple.com>
 
+        Reviewed by me
+
+        Added a new suite of layout tests for editing, all added
+        in the new layout-tests/editing subtree.
+
+        * layout-tests/editing/abe.jpg: Added.
+        * layout-tests/editing/deleting/delete-block-contents-001-expected.txt: Added.
+        * layout-tests/editing/deleting/delete-block-contents-001.html: Added.
+        * layout-tests/editing/deleting/delete-block-contents-002-expected.txt: Added.
+        * layout-tests/editing/deleting/delete-block-contents-002.html: Added.
+        * layout-tests/editing/deleting/delete-block-contents-003-expected.txt: Added.
+        * layout-tests/editing/deleting/delete-block-contents-003.html: Added.
+        * layout-tests/editing/deleting/delete-br-001-expected.txt: Added.
+        * layout-tests/editing/deleting/delete-br-001.html: Added.
+        * layout-tests/editing/deleting/delete-br-002-expected.txt: Added.
+        * layout-tests/editing/deleting/delete-br-002.html: Added.
+        * layout-tests/editing/deleting/delete-br-003-expected.txt: Added.
+        * layout-tests/editing/deleting/delete-br-003.html: Added.
+        * layout-tests/editing/deleting/delete-br-004-expected.txt: Added.
+        * layout-tests/editing/deleting/delete-br-004.html: Added.
+        * layout-tests/editing/deleting/delete-br-005-expected.txt: Added.
+        * layout-tests/editing/deleting/delete-br-005.html: Added.
+        * layout-tests/editing/deleting/delete-br-006-expected.txt: Added.
+        * layout-tests/editing/deleting/delete-br-006.html: Added.
+        * layout-tests/editing/deleting/delete-character-001-expected.txt: Added.
+        * layout-tests/editing/deleting/delete-character-001.html: Added.
+        * layout-tests/editing/deleting/delete-contiguous-ws-001-expected.txt: Added.
+        * layout-tests/editing/deleting/delete-contiguous-ws-001.html: Added.
+        * layout-tests/editing/deleting/delete-image-001-expected.txt: Added.
+        * layout-tests/editing/deleting/delete-image-001.html: Added.
+        * layout-tests/editing/deleting/delete-image-002-expected.txt: Added.
+        * layout-tests/editing/deleting/delete-image-002.html: Added.
+        * layout-tests/editing/deleting/delete-image-003-expected.txt: Added.
+        * layout-tests/editing/deleting/delete-image-003.html: Added.
+        * layout-tests/editing/deleting/delete-leading-ws-001-expected.txt: Added.
+        * layout-tests/editing/deleting/delete-leading-ws-001.html: Added.
+        * layout-tests/editing/deleting/delete-selection-001-expected.txt: Added.
+        * layout-tests/editing/deleting/delete-selection-001.html: Added.
+        * layout-tests/editing/deleting/delete-trailing-ws-001-expected.txt: Added.
+        * layout-tests/editing/deleting/delete-trailing-ws-001.html: Added.
+        * layout-tests/editing/editing.js: Added.
+        * layout-tests/editing/inserting/typing-001-expected.txt: Added.
+        * layout-tests/editing/inserting/typing-001.html: Added.
+        * layout-tests/editing/inserting/typing-002-expected.txt: Added.
+        * layout-tests/editing/inserting/typing-002.html: Added.
+        * layout-tests/editing/inserting/typing-around-br-001-expected.txt: Added.
+        * layout-tests/editing/inserting/typing-around-br-001.html: Added.
+        * layout-tests/editing/inserting/typing-around-image-001-expected.txt: Added.
+        * layout-tests/editing/inserting/typing-around-image-001.html: Added.
+        * layout-tests/editing/selection/extend-by-character-001-expected.txt: Added.
+        * layout-tests/editing/selection/extend-by-character-001.html: Added.
+        * layout-tests/editing/selection/extend-by-character-002-expected.txt: Added.
+        * layout-tests/editing/selection/extend-by-character-002.html: Added.
+        * layout-tests/editing/selection/extend-by-character-003-expected.txt: Added.
+        * layout-tests/editing/selection/extend-by-character-003.html: Added.
+        * layout-tests/editing/selection/extend-by-character-004-expected.txt: Added.
+        * layout-tests/editing/selection/extend-by-character-004.html: Added.
+        * layout-tests/editing/selection/extend-by-character-005-expected.txt: Added.
+        * layout-tests/editing/selection/extend-by-character-005.html: Added.
+        * layout-tests/editing/selection/move-by-character-001-expected.txt: Added.
+        * layout-tests/editing/selection/move-by-character-001.html: Added.
+        * layout-tests/editing/selection/move-by-character-002-expected.txt: Added.
+        * layout-tests/editing/selection/move-by-character-002.html: Added.
+        * layout-tests/editing/selection/move-by-character-003-expected.txt: Added.
+        * layout-tests/editing/selection/move-by-character-003.html: Added.
+        * layout-tests/editing/selection/move-by-character-004-expected.txt: Added.
+        * layout-tests/editing/selection/move-by-character-004.html: Added.
+        * layout-tests/editing/selection/move-by-character-005-expected.txt: Added.
+        * layout-tests/editing/selection/move-by-character-005.html: Added.
+        * layout-tests/editing/undo/redo-typing-001-expected.txt: Added.
+        * layout-tests/editing/undo/redo-typing-001.html: Added.
+        * layout-tests/editing/undo/undo-typing-001-expected.txt: Added.
+        * layout-tests/editing/undo/undo-typing-001.html: Added.
+
+2004-04-06  Ken Kocienda  <kocienda at apple.com>
+
         Reviewed by Dave
 
         Added execCommand feature. 

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list