| <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> |
| <html> |
| <head> |
| <script src="../../resources/js-test-pre.js"></script> |
| </head> |
| <body> |
| <p id="description"></p> |
| <div id="console"></div> |
| <script> |
| |
| var sel = document.getSelection(); |
| var root = document.createElement("root"); |
| document.body.appendChild(root); |
| |
| |
| function createEditable(tagName, text) { |
| var node = document.createElement(tagName); |
| node.contentEditable = true; |
| node.innerHTML = text; |
| return node; |
| } |
| |
| function test(tagName, compositionText, expected) { |
| var node = createEditable(tagName, "X"); |
| root.appendChild(node); |
| |
| var textNode = node.firstChild; |
| sel.setBaseAndExtent(textNode, 0, textNode, textNode.data.length); |
| document.execCommand("Delete", false); |
| |
| textInputController.setMarkedText(compositionText, 0, compositionText.length); |
| compositingText = node.innerText; |
| textInputController.unmarkText(); |
| confirmedText = node.innerText; |
| |
| shouldBe("compositingText", "'" + expected + "'"); |
| shouldBe("confirmedText", "'" + expected + "'"); |
| } |
| |
| test("div", "AB", "AB"); |
| test("div", "A B", "A B"); |
| test("div", "A B", "A \xA0B"); |
| test("div", "A B", "A \xA0 B"); |
| test("div", "A B", "A \xA0 \xA0B"); |
| |
| test("div", " AB", "\xA0AB"); |
| test("div", " AB", "\xA0 AB"); |
| test("div", " AB", "\xA0 \xA0AB"); |
| test("div", " AB", "\xA0 \xA0 AB"); |
| test("div", " AB", "\xA0 \xA0 \xA0AB"); |
| test("div", " AB", "\xA0 \xA0 \xA0 AB"); |
| test("div", " AB", "\xA0 \xA0 \xA0 \xA0AB"); |
| test("div", "AB ", "AB \xA0"); |
| test("div", "AB ", "AB \xA0\xA0"); |
| test("div", "AB ", "AB \xA0 \xA0"); |
| test("div", "AB ", "AB \xA0 \xA0\xA0"); |
| test("div", "AB ", "AB \xA0 \xA0 \xA0"); |
| test("div", "AB ", "AB \xA0 \xA0 \xA0\xA0"); |
| |
| test("div", " A B ", "\xA0 A \xA0B \xA0"); |
| test("div", "\t\tA\t\tB\t\t", "\xA0 A \xA0B \xA0"); |
| |
| test("div", " ", "\xA0"); |
| test("div", " ", "\xA0\xA0"); |
| test("div", " ", "\xA0 \xA0"); |
| |
| test("pre", "AB", "AB"); |
| test("pre", "A B", "A B"); |
| test("pre", "A B", "A B"); |
| test("pre", "A B", "A B"); |
| test("pre", "A B", "A B"); |
| test("pre", "AB ", "AB "); |
| test("pre", "AB ", "AB "); |
| test("pre", "AB ", "AB "); |
| test("pre", "AB ", "AB "); |
| test("pre", "AB ", "AB "); |
| test("pre", "AB ", "AB "); |
| test("pre", " AB", " AB"); |
| test("pre", " AB", " AB"); |
| test("pre", " AB", " AB"); |
| test("pre", " AB", " AB"); |
| test("pre", " AB", " AB"); |
| test("pre", " AB", " AB"); |
| |
| test("pre", " A B ", " A B "); |
| test("pre", "\t\tA\t\tB\t\t", "\t\tA\t\tB\t\t"); |
| test("pre", " ", " "); |
| test("pre", " ", " "); |
| test("pre", " ", " "); |
| |
| root.style.display = "none"; |
| |
| </script> |
| <script src="../../resources/js-test-post.js"></script> |
| </body> |
| </html> |