OLD | NEW |
| (Empty) |
1 <!DOCTYPE html> | |
2 <html> | |
3 <head> | |
4 <script src="../resources/js-test.js"></script> | |
5 </head> | |
6 <body> | |
7 | |
8 <div id="contenteditable-textbox" role="textbox" contenteditable="true"> | |
9 <div id="contenteditable-line1">Line 1</div> | |
10 <textarea id="contenteditable-line2" rows="1" cols="40">Line 2</textarea> | |
11 </div> | |
12 | |
13 <div id="contenteditable-div" contenteditable> | |
14 <p id="paragraph1">Line 1<br>Line 2</p> | |
15 <p id="paragraph2">Line 3</p> | |
16 </div> | |
17 | |
18 <p id="description"></p> | |
19 <div id="console"></div> | |
20 | |
21 <script> | |
22 description("This tests that caret position is reported correctly for co
ntenteditable elements."); | |
23 | |
24 if (window.accessibilityController) { | |
25 var selection = window.getSelection(); | |
26 var selectionRange = document.createRange(); | |
27 | |
28 var textbox = document.getElementById("contenteditable-textbox"); | |
29 textbox.focus(); | |
30 var textboxAccessible = | |
31 accessibilityController.accessibleElementById( | |
32 'contenteditable-textbox'); | |
33 | |
34 shouldBeZero("textboxAccessible.selectionStart"); | |
35 shouldBeZero("textboxAccessible.selectionEnd"); | |
36 | |
37 var line1 = document.getElementById("contenteditable-line1"); | |
38 selectionRange.setStart(line1.firstChild, 1); | |
39 selectionRange.setEnd(line1.firstChild, 1); | |
40 selection.removeAllRanges(); | |
41 selection.addRange(selectionRange); | |
42 shouldBeEqualToNumber("textboxAccessible.selectionStart", 1); | |
43 shouldBeEqualToNumber("textboxAccessible.selectionEnd", 1); | |
44 | |
45 var line2 = document.getElementById("contenteditable-line2"); | |
46 line2.focus(); | |
47 // The selection should have been removed from the line1 div. | |
48 shouldBeZero("textboxAccessible.selectionStart"); | |
49 shouldBeZero("textboxAccessible.selectionEnd"); | |
50 | |
51 var line2Accessible = accessibilityController.focusedElement; | |
52 shouldBeZero("line2Accessible.selectionStart"); | |
53 shouldBeZero("line2Accessible.selectionEnd"); | |
54 line2.setSelectionRange(3, 3); | |
55 shouldBeEqualToNumber("line2Accessible.selectionStart", 3); | |
56 shouldBeEqualToNumber("line2Accessible.selectionEnd", 3); | |
57 | |
58 var contenteditable = document.getElementById('contenteditable-div')
; | |
59 contenteditable.focus(); | |
60 var line1 = document.getElementById('paragraph1').firstChild; | |
61 var line2 = document.getElementById('paragraph1').lastChild; | |
62 var line3 = document.getElementById('paragraph2').firstChild; | |
63 var contenteditableLines = [ line1, line2, line3 ]; | |
64 var contenteditableAccessible = | |
65 accessibilityController.accessibleElementById( | |
66 'contenteditable-div'); | |
67 | |
68 for (var lineNumber = 0; lineNumber < 3; ++lineNumber) { | |
69 // Place the caret at the end of each line. | |
70 var caretPosition = lineNumber * 7 + 6; | |
71 // Paragraphs should have an extra blank line between them. | |
72 if (lineNumber == 2) | |
73 caretPosition += 1; | |
74 | |
75 selectionRange.setStart(contenteditableLines[lineNumber], 6); | |
76 selectionRange.setEnd(contenteditableLines[lineNumber], 6); | |
77 selection.removeAllRanges(); | |
78 selection.addRange(selectionRange); | |
79 | |
80 shouldBeEqualToNumber("contenteditableAccessible.selectionStart"
, | |
81 caretPosition); | |
82 shouldBeEqualToNumber("contenteditableAccessible.selectionEnd", | |
83 caretPosition); | |
84 } | |
85 | |
86 } | |
87 </script> | |
88 | |
89 </body> | |
90 </html> | |
OLD | NEW |