Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(497)

Side by Side Diff: third_party/WebKit/LayoutTests/accessibility/set-selection-child-offset.html

Issue 2339093003: Support child-based node offsets when setting accessible selections (Closed)
Patch Set: More tests. Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 <!DOCTYPE html>
2 <script src="../resources/testharness.js"></script>
3 <script src="../resources/testharnessreport.js"></script>
4
5 <span id="span1">this is a<a id="link" href="#1">test</a></span>
6 <span id="span2">of selection</span>
7
8 <script>
9 var sel = null;
10 function updateSelectedRangeFromPage() {
11 sel = window.getSelection().getRangeAt(0);
12 }
13
14 // The accessibility tree contains a group with 3 children, select each.
15 test(function()
16 {
17 assert_not_equals(window.accessibilityController, undefined, 'This test requires accessibilityController');
18
19 var axGroup = accessibilityController.accessibleElementById("link").pare ntElement();
dmazzoni 2016/09/15 16:32:36 What element does this correspond to? Is it not sp
David Tseng 2016/09/15 18:34:28 The idea was to use an example where the ax tree r
20 assert_equals(axGroup.role, "AXRole: AXGroup");
21
22 // An insertion point before the first child.
23 axGroup.setSelection(axGroup, 0, axGroup, 0);
24 updateSelectedRangeFromPage();
25 assert_equals(sel.toString(), "");
26 assert_true(sel.collapsed);
27 assert_equals(sel.startContainer.constructor, Text);
28 assert_equals(sel.startOffset, 0);
29 assert_equals(sel.startContainer.textContent, "this is a");
30
31 // A straight-forward selection of the first child.
32 axGroup.setSelection(axGroup, 0, axGroup, 1);
33 updateSelectedRangeFromPage();
34 assert_equals(sel.toString(), "this is a");
35 assert_false(sel.collapsed);
36 assert_equals(sel.startContainer.constructor, Text);
37 assert_equals(sel.endContainer.constructor, Text);
38 assert_equals(sel.startOffset, 0);
39 assert_equals(sel.startContainer.textContent, "this is a");
40 assert_equals(sel.endOffset, 9);
41 assert_equals(sel.endContainer.textContent, "this is a");
42
43 // Another insertion point after the first child, before the second.
44 axGroup.setSelection(axGroup, 1, axGroup, 1);
45 updateSelectedRangeFromPage();
46 assert_equals(sel.toString(), "");
47 assert_true(sel.collapsed);
48 assert_equals(sel.startContainer.constructor, Text);
49 assert_equals(sel.startOffset, 9);
50 assert_equals(sel.startContainer.textContent, "this is a");
51
52 // A selection demonstrating ax can use child indicies to select whitesp ace only in the DOM (second child).
dmazzoni 2016/09/15 16:32:36 What do you mean by whitespace only in the DOM?
David Tseng 2016/09/15 18:34:28 Were you expecting a line break (either a node or
53 axGroup.setSelection(axGroup, 1, axGroup, 2);
54 updateSelectedRangeFromPage();
55 assert_equals(sel.toString(), "test\n");
56 assert_false(sel.collapsed);
57 assert_equals(sel.startContainer.constructor, Text);
58 assert_equals(sel.endContainer.constructor, Text);
59 assert_equals(sel.startOffset, 0);
60 assert_equals(sel.startContainer.textContent, "test");
61 // Assert the endContainer comes *after* the node above.
62 assert_equals(sel.endContainer.previousSibling.lastChild.lastChild, sel. startContainer);
dmazzoni 2016/09/15 16:32:36 I'm worried that this is really fragile and will b
David Tseng 2016/09/15 18:34:28 This is the DOM tree; what type of refactoring are
dmazzoni 2016/09/15 21:06:43 How about this: add comments next to the two types
63 assert_equals(sel.endOffset, 1);
64 assert_equals(sel.endContainer.textContent, "\n");
65
66 // Next, another insertion point between second and third child.
67 axGroup.setSelection(axGroup, 2, axGroup, 2);
68 updateSelectedRangeFromPage();
69 assert_equals(sel.toString(), "");
70 assert_true(sel.collapsed);
71 assert_equals(sel.startContainer.constructor, Text);
72 assert_equals(sel.startOffset, 1);
73 assert_equals(sel.startContainer.textContent, "\n");
74
75 // Select the third child.
76 axGroup.setSelection(axGroup, 2, axGroup, 3);
77 updateSelectedRangeFromPage();
78 assert_equals(sel.toString(), "of selection");
79 assert_false(sel.collapsed);
80 assert_equals(sel.startContainer.constructor, Text);
81 assert_equals(sel.endContainer.constructor, Text);
82 assert_equals(sel.startOffset, 0);
83 assert_equals(sel.startContainer.textContent, "of selection");
84 assert_equals(sel.endOffset, 12);
85 assert_equals(sel.endContainer.textContent, "of selection");
86
87 // Select the first and second children.
88 axGroup.setSelection(axGroup, 0, axGroup, 2);
89 updateSelectedRangeFromPage();
90 assert_equals(sel.toString(), "this is atest\n");
91 assert_false(sel.collapsed);
92 assert_equals(sel.startContainer.constructor, Text);
93 assert_equals(sel.endContainer.constructor, Text);
94 assert_equals(sel.startOffset, 0);
95 assert_equals(sel.startContainer.textContent, "this is a");
96 assert_equals(sel.endOffset, 1);
97 assert_equals(sel.endContainer.textContent, "\n");
98
99 // Select the second and third children.
100 axGroup.setSelection(axGroup, 1, axGroup, 3);
101 updateSelectedRangeFromPage();
102 assert_equals(sel.toString(), "test\nof selection");
103 assert_false(sel.collapsed);
104 assert_equals(sel.startContainer.constructor, Text);
105 assert_equals(sel.endContainer.constructor, Text);
106 assert_equals(sel.startOffset, 0);
107 assert_equals(sel.startContainer.textContent, "test");
108 assert_equals(sel.endOffset, 12);
109 assert_equals(sel.endContainer.textContent, "of selection");
110
111 // Select everything.
112 axGroup.setSelection(axGroup, 0, axGroup, 3);
113 updateSelectedRangeFromPage();
114 assert_equals(sel.toString(), "this is atest\nof selection");
115 assert_false(sel.collapsed);
116 assert_equals(sel.startContainer.constructor, Text);
117 assert_equals(sel.endContainer.constructor, Text);
118 assert_equals(sel.startOffset, 0);
119 assert_equals(sel.startContainer.textContent, "this is a");
120 assert_equals(sel.endOffset, 12);
121 assert_equals(sel.endContainer.textContent, "of selection");
122
123 // Last, the insertion point after third child.
124 axGroup.setSelection(axGroup, 3, axGroup, 3);
125 updateSelectedRangeFromPage();
126 assert_equals(sel.toString(), "");
127 assert_true(sel.collapsed);
128 assert_equals(sel.startContainer.constructor, Text);
129 assert_equals(sel.startOffset, 12);
130 assert_equals(sel.startContainer.textContent, "of selection");
131 }, "Select child node at index.");
132 </script>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698