Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / third_party / WebKit / LayoutTests / editing / spelling / script-tests / spelling-backspace-between-lines.js
blob441f4bb19463191382673f2cd940ee580ed96511
1 description('Spelling markers should remain while merging two lines.');
3 jsTestIsAsync = true;
5 if (window.internals) {
6 internals.settings.setUnifiedTextCheckerEnabled(true);
7 internals.settings.setAsynchronousSpellCheckingEnabled(true);
10 var testRoot = document.createElement("div");
11 document.body.insertBefore(testRoot, document.body.firstChild);
13 function setup(targetName)
15 var div = document.createElement("div");
16 div.id = targetName;
17 div.contentEditable = true;
18 div.innerHTML = "<div>OK</div><div>OK zz OK</div>";
19 testRoot.appendChild(div);
21 div.focus();
22 return document.getSelection();
25 function firstLineText(targetName)
27 var div = document.getElementById(targetName);
28 return div.firstChild.innerText.trim();
31 function testTwoLinesMisspellings()
33 window.sel = setup("two-lines"); // ^OK
35 sel.modify("move", "forward", "line"); // ^OK zz OK
36 for (var i = 0; i < 3; i++)
37 sel.modify("move", "forward", "word");
39 shouldBeEqualToString("firstLineText('two-lines')", "OK");
40 shouldBeEqualToString("sel.anchorNode.data", "OK zz OK");
41 if (window.internals)
42 shouldBecomeEqual("internals.hasSpellingMarker(document, 3, 2)", "true", done);
43 else
44 done();
47 function testMisspellingsAfterLineMergeUsingDelete()
49 window.sel = setup("merged-lines-delete-command"); // ^OK
51 sel.modify("move", "forward", "line"); // ^OK zz OK
52 document.execCommand("Delete", false); // OK^OK zz OK
53 sel.modify("move", "right", "line"); // OKOK zz OK^
55 shouldBeEqualToString("firstLineText('merged-lines-delete-command')", "OKOK zz OK");
56 shouldBeEqualToString("sel.anchorNode.data", "OKOK zz OK");
57 if (window.internals)
58 shouldBecomeEqual("internals.hasSpellingMarker(document, 5, 2)", "true", done);
59 else
60 done();
63 function testMisspellingsAfterLineMergeUsingForwardDelete()
65 window.sel = setup("merged-lines-forward-delete-command"); // ^OK
67 sel.modify("move", "forward", "character"); // O^K
68 sel.modify("move", "forward", "character"); // OK^
69 document.execCommand("ForwardDelete", false); // OK^OK zz OK
70 sel.modify("move", "right", "line"); // OKOK zz OK^
72 shouldBeEqualToString("firstLineText('merged-lines-forward-delete-command')", "OKOK zz OK");
73 shouldBeEqualToString("sel.anchorNode.data", "OKOK zz OK");
74 if (window.internals)
75 shouldBecomeEqual("internals.hasSpellingMarker(document, 5, 2)", "true", done);
76 else
77 done();
80 var tests = [
81 function() { testTwoLinesMisspellings(); },
82 function() { testMisspellingsAfterLineMergeUsingDelete(); },
83 function() { testMisspellingsAfterLineMergeUsingForwardDelete(); }
86 function done()
88 var next = tests.shift();
89 if (next)
90 return setTimeout(next, 0);
92 if (window.internals)
93 testRoot.style.display = "none";
95 finishJSTest();
97 done();
99 var successfullyParsed = true;