2010-09-08 MORITA Hajime <morrita@google.com>
[WebKit.git] / LayoutTests / editing / spelling / script-tests / spelling-backspace-between-lines.js
1
2 description('For Bug 41423: Spelling marker should remain after hitting a backspace key.');
3
4 var testRoot = document.createElement("div");
5 document.body.insertBefore(testRoot, document.body.firstChild);
6
7 function setup(targetName)
8 {
9     testRoot.innerHTML = "<div id='" + targetName + "' contentEditable><div>OK</div><div>OK zz OK</div></div>";
10     document.getElementById(targetName).focus();
11     return document.getSelection();
12 }
13
14 function firstLineText()
15 {
16     return testRoot.firstChild.firstChild.innerText.trim();
17 }
18
19 function testWithDelete()
20 {
21     window.sel = setup("target1");
22
23     sel.modify("move", "forward", "line");
24     for (var i = 0; i < 3; i++) // 3 for ["OK, "zz", "OK"].length
25         sel.modify("move", "forward", "word");
26
27     shouldBe("firstLineText()", "'OK'");
28     shouldBe("sel.anchorNode.data", "'OK zz OK'");
29     shouldBe("textInputController.hasSpellingMarker(3, 2)", "1");
30
31     sel.modify("move", "left", "lineboundary");
32     document.execCommand("Delete", false);
33     sel.modify("move", "right", "line"); // Moves to the line ending to focus the "OK zz OK" text.
34
35     shouldBe("sel.anchorNode.data", "'OK zz OK'");
36     shouldBe("firstLineText()", "'OKOK zz OK'");
37     shouldBe("textInputController.hasSpellingMarker(3, 2)", "1");
38 }
39
40 function testWithForwardDelete()
41 {
42     window.sel = setup("target1");
43
44     sel.modify("move", "forward", "line");
45     for (var i = 0; i < 3; i++) // 3 for ["OK, "zz", "OK"].length
46         sel.modify("move", "forward", "word");
47
48     shouldBe("firstLineText()", "'OK'");
49     shouldBe("sel.anchorNode.data", "'OK zz OK'");
50     shouldBe("textInputController.hasSpellingMarker(3, 2)", "1");
51
52     sel.modify("move", "left", "line");
53     document.execCommand("ForwardDelete", false);
54     sel.modify("move", "right", "line"); // Moves to the line ending to focus the "OK zz OK" text.
55
56     shouldBe("firstLineText()", "'OKOK zz OK'");
57     shouldBe("sel.anchorNode.data", "'OK zz OK'");
58     shouldBe("textInputController.hasSpellingMarker(3, 2)", "1");
59 }
60
61 testWithDelete();
62 testWithForwardDelete();
63 testRoot.style.display = "none";
64
65 var successfullyParsed = true;