OLD | NEW |
1 description("This tests that the input events are dispatched when contentEditabl
e nodes are edited"); | 1 description("This tests that the input events are dispatched when contentEditabl
e nodes are edited"); |
2 | 2 |
3 var actualInputEventCount = 0; | 3 var actualInputEventCount = 0; |
4 var expectedInputEventCount = 0; | 4 var expectedInputEventCount = 0; |
5 | 5 |
6 function fired(evt, expectedId, expectedText) | 6 function fired(evt, expectedId, expectedText) |
7 { | 7 { |
8 actualInputEventCount++; | 8 actualInputEventCount++; |
9 shouldBe("event.target.id", "'" + expectedId + "'"); | 9 shouldBe("event.target.id", "'" + expectedId + "'"); |
10 shouldBe("event.target.innerHTML", "'" + expectedText + "'"); | 10 shouldBe("event.target.innerHTML", "'" + expectedText + "'"); |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
44 var target1 = makeTestTarget('<p id="target1" contentEditable>Text should be ins
ert via script:</p>'); | 44 var target1 = makeTestTarget('<p id="target1" contentEditable>Text should be ins
ert via script:</p>'); |
45 target1.addEventListener("input", function(evt) { testFailed("should not be reac
hed"); }); | 45 target1.addEventListener("input", function(evt) { testFailed("should not be reac
hed"); }); |
46 target1.firstChild.data += "Text"; | 46 target1.firstChild.data += "Text"; |
47 | 47 |
48 // An event should be dispatched even if resulting DOM tree doesn't change after
the edit. (with replacing it) | 48 // An event should be dispatched even if resulting DOM tree doesn't change after
the edit. (with replacing it) |
49 var target2Text = "This text should not be changed."; | 49 var target2Text = "This text should not be changed."; |
50 var target2 = setupForFiringTest('<p id="target2" contentEditable>This text shou
ld not be changed.</p>', target2Text); | 50 var target2 = setupForFiringTest('<p id="target2" contentEditable>This text shou
ld not be changed.</p>', target2Text); |
51 document.execCommand("insertText", false, target2Text); | 51 document.execCommand("insertText", false, target2Text); |
52 | 52 |
53 // An "delete" command should dispatch an input event. | 53 // An "delete" command should dispatch an input event. |
54 var target3 = setupForFiringTest('<p id="target3" contentEditable>This text shou
ldn be deleted.</p>', "<br>"); | 54 var target3 = setupForFiringTest('<p id="target3" contentEditable>This text shou
ldn be deleted.</p>', ''); |
55 document.execCommand("delete", false); | 55 document.execCommand("delete", false); |
56 | 56 |
57 // A command other than text-editing should dispatch an input event. | 57 // A command other than text-editing should dispatch an input event. |
58 // Also note that createLink is a composite command, | 58 // Also note that createLink is a composite command, |
59 // so this test also ensures that even composite command dispatches the event on
ly once. | 59 // so this test also ensures that even composite command dispatches the event on
ly once. |
60 var target4 = setupForFiringTest('<p id="target4" contentEditable>This text shou
ld be a link.</p>', "<a href=\"http://www.example.com/\">This text should be a l
ink.</a>"); | 60 var target4 = setupForFiringTest('<p id="target4" contentEditable>This text shou
ld be a link.</p>', "<a href=\"http://www.example.com/\">This text should be a l
ink.</a>"); |
61 document.execCommand("createLink", false, "http://www.example.com/"); | 61 document.execCommand("createLink", false, "http://www.example.com/"); |
62 | 62 |
63 // An event shouldn't be dispatched to a 'display:none' node. | 63 // An event shouldn't be dispatched to a 'display:none' node. |
64 var target5 = makeTestTarget('<p id="target5" contentEditable>This will not be r
endered.</p>'); | 64 var target5 = makeTestTarget('<p id="target5" contentEditable>This will not be r
endered.</p>'); |
(...skipping 16 matching lines...) Expand all Loading... |
81 target6end.addEventListener("input", function(evt) { testFailed("should not be r
eached"); }); | 81 target6end.addEventListener("input", function(evt) { testFailed("should not be r
eached"); }); |
82 target6middle.addEventListener("input", function(evt) { fired(evt, "target6end",
""); }); | 82 target6middle.addEventListener("input", function(evt) { fired(evt, "target6end",
""); }); |
83 sel.selectAllChildren(target6parent); | 83 sel.selectAllChildren(target6parent); |
84 document.execCommand("createLink", false, "http://www.example.com/"); | 84 document.execCommand("createLink", false, "http://www.example.com/"); |
85 | 85 |
86 // Ensure key events can cause the event | 86 // Ensure key events can cause the event |
87 var target7 = setupForFiringTest('<p id="target7" contentEditable>Replaced</p>',
"X"); | 87 var target7 = setupForFiringTest('<p id="target7" contentEditable>Replaced</p>',
"X"); |
88 sel.selectAllChildren(target7); | 88 sel.selectAllChildren(target7); |
89 eventSender.keyDown('X'); | 89 eventSender.keyDown('X'); |
90 | 90 |
91 var target8 = setupForFiringTest('<p id="target8" contentEditable>Deleted</p>',
'<br>'); | 91 var target8 = setupForFiringTest('<p id="target8" contentEditable>Deleted</p>',
''); |
92 sel.selectAllChildren(target8); | 92 sel.selectAllChildren(target8); |
93 eventSender.keyDown('delete'); | 93 eventSender.keyDown('delete'); |
94 | 94 |
95 var target9parent = makeTestTarget('<div id="target9parent" contenteditable><div
id="target9child" contenteditable>foo</div></div>'); | 95 var target9parent = makeTestTarget('<div id="target9parent" contenteditable><div
id="target9child" contenteditable>foo</div></div>'); |
96 var target9child = document.getElementById('target9child'); | 96 var target9child = document.getElementById('target9child'); |
97 target9child.addEventListener("input", function(evt) { testFailed("should not be
reached"); }); | 97 target9child.addEventListener("input", function(evt) { testFailed("should not be
reached"); }); |
98 target9parent.addEventListener("input", function(evt) { fired(evt, target9parent
.id, '<div id="target9child" contenteditable="">Replacing</div>'); }); | 98 target9parent.addEventListener("input", function(evt) { fired(evt, target9parent
.id, '<div id="target9child" contenteditable="">Replacing</div>'); }); |
99 sel.selectAllChildren(target9child); | 99 sel.selectAllChildren(target9child); |
100 document.execCommand("insertText", false, "Replacing"); | 100 document.execCommand("insertText", false, "Replacing"); |
101 expectedInputEventCount++; | 101 expectedInputEventCount++; |
102 | 102 |
103 var target10parent = makeTestTarget('<div id="t10parent" contenteditable><div id
="t10child" contenteditable=false><div id="t10gch" contenteditable>foo</div></di
v></div>'); | 103 var target10parent = makeTestTarget('<div id="t10parent" contenteditable><div id
="t10child" contenteditable=false><div id="t10gch" contenteditable>foo</div></di
v></div>'); |
104 var target10child = document.getElementById("t10child"); | 104 var target10child = document.getElementById("t10child"); |
105 var target10gch = document.getElementById("t10gch"); | 105 var target10gch = document.getElementById("t10gch"); |
106 target10gch.addEventListener("input", function(evt) { fired(evt, target10gch.id,
'Replacing'); }); | 106 target10gch.addEventListener("input", function(evt) { fired(evt, target10gch.id,
'Replacing'); }); |
107 sel.selectAllChildren(target10gch); | 107 sel.selectAllChildren(target10gch); |
108 document.execCommand("insertText", false, "Replacing"); | 108 document.execCommand("insertText", false, "Replacing"); |
109 expectedInputEventCount++; | 109 expectedInputEventCount++; |
110 | 110 |
111 shouldBe("expectedInputEventCount", "actualInputEventCount"); | 111 shouldBe("expectedInputEventCount", "actualInputEventCount"); |
112 clearTestTarget(); | 112 clearTestTarget(); |
OLD | NEW |