OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/macros.h" | 5 #include "base/macros.h" |
6 #include "base/strings/utf_string_conversions.h" | 6 #include "base/strings/utf_string_conversions.h" |
7 #include "base/time/time.h" | 7 #include "base/time/time.h" |
8 #include "build/build_config.h" | 8 #include "build/build_config.h" |
9 #include "content/common/accessibility_messages.h" | 9 #include "content/common/accessibility_messages.h" |
10 #include "content/common/frame_messages.h" | 10 #include "content/common/frame_messages.h" |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
109 std::string html = | 109 std::string html = |
110 "<body>" | 110 "<body>" |
111 " <div role='group' id='A'>" | 111 " <div role='group' id='A'>" |
112 " <div role='group' id='A1'></div>" | 112 " <div role='group' id='A1'></div>" |
113 " <div role='group' id='A2'></div>" | 113 " <div role='group' id='A2'></div>" |
114 " </div>" | 114 " </div>" |
115 "</body>"; | 115 "</body>"; |
116 LoadHTML(html.c_str()); | 116 LoadHTML(html.c_str()); |
117 | 117 |
118 // Creating a RendererAccessibility should sent the tree to the browser. | 118 // Creating a RendererAccessibility should sent the tree to the browser. |
119 scoped_ptr<TestRendererAccessibility> accessibility( | 119 std::unique_ptr<TestRendererAccessibility> accessibility( |
120 new TestRendererAccessibility(frame())); | 120 new TestRendererAccessibility(frame())); |
121 accessibility->SendPendingAccessibilityEvents(); | 121 accessibility->SendPendingAccessibilityEvents(); |
122 EXPECT_EQ(4, CountAccessibilityNodesSentToBrowser()); | 122 EXPECT_EQ(4, CountAccessibilityNodesSentToBrowser()); |
123 | 123 |
124 // If we post another event but the tree doesn't change, | 124 // If we post another event but the tree doesn't change, |
125 // we should only send 1 node to the browser. | 125 // we should only send 1 node to the browser. |
126 sink_->ClearMessages(); | 126 sink_->ClearMessages(); |
127 WebDocument document = view()->GetWebView()->mainFrame()->document(); | 127 WebDocument document = view()->GetWebView()->mainFrame()->document(); |
128 WebAXObject root_obj = document.accessibilityObject(); | 128 WebAXObject root_obj = document.accessibilityObject(); |
129 accessibility->HandleAXEvent( | 129 accessibility->HandleAXEvent( |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
174 "<body>" | 174 "<body>" |
175 " <div role='group' id='A'>" | 175 " <div role='group' id='A'>" |
176 " <div role='group' id='B'>" | 176 " <div role='group' id='B'>" |
177 " <div role='group' id='C' style='visibility:visible'>" | 177 " <div role='group' id='C' style='visibility:visible'>" |
178 " </div>" | 178 " </div>" |
179 " </div>" | 179 " </div>" |
180 " </div>" | 180 " </div>" |
181 "</body>"; | 181 "</body>"; |
182 LoadHTML(html.c_str()); | 182 LoadHTML(html.c_str()); |
183 | 183 |
184 scoped_ptr<TestRendererAccessibility> accessibility( | 184 std::unique_ptr<TestRendererAccessibility> accessibility( |
185 new TestRendererAccessibility(frame())); | 185 new TestRendererAccessibility(frame())); |
186 accessibility->SendPendingAccessibilityEvents(); | 186 accessibility->SendPendingAccessibilityEvents(); |
187 EXPECT_EQ(4, CountAccessibilityNodesSentToBrowser()); | 187 EXPECT_EQ(4, CountAccessibilityNodesSentToBrowser()); |
188 | 188 |
189 WebDocument document = view()->GetWebView()->mainFrame()->document(); | 189 WebDocument document = view()->GetWebView()->mainFrame()->document(); |
190 WebAXObject root_obj = document.accessibilityObject(); | 190 WebAXObject root_obj = document.accessibilityObject(); |
191 WebAXObject node_a = root_obj.childAt(0); | 191 WebAXObject node_a = root_obj.childAt(0); |
192 WebAXObject node_b = node_a.childAt(0); | 192 WebAXObject node_b = node_a.childAt(0); |
193 WebAXObject node_c = node_b.childAt(0); | 193 WebAXObject node_c = node_b.childAt(0); |
194 | 194 |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
226 "<body>" | 226 "<body>" |
227 " <div role='group' id='A'>" | 227 " <div role='group' id='A'>" |
228 " <div role='group' id='B' style='visibility:hidden'>" | 228 " <div role='group' id='B' style='visibility:hidden'>" |
229 " <div role='group' id='C' style='visibility:visible'>" | 229 " <div role='group' id='C' style='visibility:visible'>" |
230 " </div>" | 230 " </div>" |
231 " </div>" | 231 " </div>" |
232 " </div>" | 232 " </div>" |
233 "</body>"; | 233 "</body>"; |
234 LoadHTML(html.c_str()); | 234 LoadHTML(html.c_str()); |
235 | 235 |
236 scoped_ptr<TestRendererAccessibility> accessibility( | 236 std::unique_ptr<TestRendererAccessibility> accessibility( |
237 new TestRendererAccessibility(frame())); | 237 new TestRendererAccessibility(frame())); |
238 accessibility->SendPendingAccessibilityEvents(); | 238 accessibility->SendPendingAccessibilityEvents(); |
239 EXPECT_EQ(3, CountAccessibilityNodesSentToBrowser()); | 239 EXPECT_EQ(3, CountAccessibilityNodesSentToBrowser()); |
240 | 240 |
241 // Show node 'B', then send a childrenChanged on 'A'. | 241 // Show node 'B', then send a childrenChanged on 'A'. |
242 ExecuteJavaScriptForTests( | 242 ExecuteJavaScriptForTests( |
243 "document.getElementById('B').style.visibility = 'visible';"); | 243 "document.getElementById('B').style.visibility = 'visible';"); |
244 ExecuteJavaScriptForTests("document.getElementById('B').offsetLeft;"); | 244 ExecuteJavaScriptForTests("document.getElementById('B').offsetLeft;"); |
245 | 245 |
246 sink_->ClearMessages(); | 246 sink_->ClearMessages(); |
(...skipping 23 matching lines...) Expand all Loading... |
270 // Test RendererAccessibility and make sure it sends the | 270 // Test RendererAccessibility and make sure it sends the |
271 // proper event to the browser when an object in the tree | 271 // proper event to the browser when an object in the tree |
272 // is detached, but its children are not. This can happen when | 272 // is detached, but its children are not. This can happen when |
273 // a layout occurs and an anonymous render block is no longer needed. | 273 // a layout occurs and an anonymous render block is no longer needed. |
274 std::string html = | 274 std::string html = |
275 "<body aria-label='Body'>" | 275 "<body aria-label='Body'>" |
276 "<span>1</span><span style='display:block'>2</span>" | 276 "<span>1</span><span style='display:block'>2</span>" |
277 "</body>"; | 277 "</body>"; |
278 LoadHTML(html.c_str()); | 278 LoadHTML(html.c_str()); |
279 | 279 |
280 scoped_ptr<TestRendererAccessibility> accessibility( | 280 std::unique_ptr<TestRendererAccessibility> accessibility( |
281 new TestRendererAccessibility(frame())); | 281 new TestRendererAccessibility(frame())); |
282 accessibility->SendPendingAccessibilityEvents(); | 282 accessibility->SendPendingAccessibilityEvents(); |
283 EXPECT_EQ(7, CountAccessibilityNodesSentToBrowser()); | 283 EXPECT_EQ(7, CountAccessibilityNodesSentToBrowser()); |
284 | 284 |
285 // Initially, the accessibility tree looks like this: | 285 // Initially, the accessibility tree looks like this: |
286 // | 286 // |
287 // Document | 287 // Document |
288 // +--Body | 288 // +--Body |
289 // +--Anonymous Block | 289 // +--Anonymous Block |
290 // +--Static Text "1" | 290 // +--Static Text "1" |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
331 GetLastAccEvent(&event); | 331 GetLastAccEvent(&event); |
332 ASSERT_EQ(5U, event.update.nodes.size()); | 332 ASSERT_EQ(5U, event.update.nodes.size()); |
333 | 333 |
334 EXPECT_EQ(body.axID(), event.update.nodes[0].id); | 334 EXPECT_EQ(body.axID(), event.update.nodes[0].id); |
335 EXPECT_EQ(text_1.axID(), event.update.nodes[1].id); | 335 EXPECT_EQ(text_1.axID(), event.update.nodes[1].id); |
336 // The third event is to update text_2, but its id changes | 336 // The third event is to update text_2, but its id changes |
337 // so we don't have a test expectation for it. | 337 // so we don't have a test expectation for it. |
338 } | 338 } |
339 | 339 |
340 } // namespace content | 340 } // namespace content |
OLD | NEW |