| 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/strings/utf_string_conversions.h" | 5 #include "base/strings/utf_string_conversions.h" |
| 6 #include "content/common/accessibility_node_data.h" | 6 #include "content/common/accessibility_node_data.h" |
| 7 #include "content/common/view_messages.h" | 7 #include "content/common/view_messages.h" |
| 8 #include "content/public/test/render_view_test.h" | 8 #include "content/public/test/render_view_test.h" |
| 9 #include "content/renderer/accessibility/renderer_accessibility_complete.h" | 9 #include "content/renderer/accessibility/renderer_accessibility_complete.h" |
| 10 #include "content/renderer/render_view_impl.h" | 10 #include "content/renderer/render_view_impl.h" |
| (...skipping 292 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 303 sink_->ClearMessages(); | 303 sink_->ClearMessages(); |
| 304 const WebAccessibilityObject& first_child = root_obj.childAt(0); | 304 const WebAccessibilityObject& first_child = root_obj.childAt(0); |
| 305 accessibility->HandleWebAccessibilityNotification( | 305 accessibility->HandleWebAccessibilityNotification( |
| 306 first_child, | 306 first_child, |
| 307 WebKit::WebAccessibilityNotificationLiveRegionChanged); | 307 WebKit::WebAccessibilityNotificationLiveRegionChanged); |
| 308 accessibility->SendPendingAccessibilityNotifications(); | 308 accessibility->SendPendingAccessibilityNotifications(); |
| 309 EXPECT_EQ(4, accessibility->browser_tree_node_count()); | 309 EXPECT_EQ(4, accessibility->browser_tree_node_count()); |
| 310 EXPECT_EQ(4, CountAccessibilityNodesSentToBrowser()); | 310 EXPECT_EQ(4, CountAccessibilityNodesSentToBrowser()); |
| 311 } | 311 } |
| 312 | 312 |
| 313 TEST_F(RendererAccessibilityTest, AccessibilityMessagesQueueWhileSwappedOut) { |
| 314 std::string html = |
| 315 "<body>" |
| 316 " <p>Hello, world.</p>" |
| 317 "</body>"; |
| 318 LoadHTML(html.c_str()); |
| 319 |
| 320 // Creating a RendererAccessibilityComplete should send the tree |
| 321 // to the browser. |
| 322 scoped_ptr<TestRendererAccessibilityComplete> accessibility( |
| 323 new TestRendererAccessibilityComplete(view())); |
| 324 accessibility->SendPendingAccessibilityNotifications(); |
| 325 EXPECT_EQ(3, accessibility->browser_tree_node_count()); |
| 326 EXPECT_EQ(3, CountAccessibilityNodesSentToBrowser()); |
| 327 |
| 328 // Post a "value changed" notification, but then swap out |
| 329 // before sending it. It shouldn't send the notification while |
| 330 // swapped out. |
| 331 sink_->ClearMessages(); |
| 332 WebDocument document = view()->GetWebView()->mainFrame()->document(); |
| 333 WebAccessibilityObject root_obj = document.accessibilityObject(); |
| 334 accessibility->HandleWebAccessibilityNotification( |
| 335 root_obj, |
| 336 WebKit::WebAccessibilityNotificationValueChanged); |
| 337 view()->OnSwapOut(); |
| 338 accessibility->SendPendingAccessibilityNotifications(); |
| 339 EXPECT_FALSE(sink_->GetUniqueMessageMatching( |
| 340 AccessibilityHostMsg_Notifications::ID)); |
| 341 |
| 342 // Navigate, so we're not swapped out anymore. Now we should |
| 343 // send accessibility notifications again. Note that the |
| 344 // message that was queued up before will be quickly discarded |
| 345 // because the element it was referring to no longer exists, |
| 346 // so the notification here is from loading this new page. |
| 347 ViewMsg_Navigate_Params nav_params; |
| 348 nav_params.url = GURL("data:text/html,<p>Hello, again.</p>"); |
| 349 nav_params.navigation_type = ViewMsg_Navigate_Type::NORMAL; |
| 350 nav_params.transition = PAGE_TRANSITION_TYPED; |
| 351 nav_params.current_history_list_length = 1; |
| 352 nav_params.current_history_list_offset = 0; |
| 353 nav_params.pending_history_list_offset = 1; |
| 354 nav_params.page_id = -1; |
| 355 view()->OnNavigate(nav_params); |
| 356 accessibility->SendPendingAccessibilityNotifications(); |
| 357 EXPECT_TRUE(sink_->GetUniqueMessageMatching( |
| 358 AccessibilityHostMsg_Notifications::ID)); |
| 359 } |
| 360 |
| 313 TEST_F(RendererAccessibilityTest, HideAccessibilityObject) { | 361 TEST_F(RendererAccessibilityTest, HideAccessibilityObject) { |
| 314 // Test RendererAccessibilityComplete and make sure it sends the | 362 // Test RendererAccessibilityComplete and make sure it sends the |
| 315 // proper notification to the browser when an object in the tree | 363 // proper notification to the browser when an object in the tree |
| 316 // is hidden, but its children are not. | 364 // is hidden, but its children are not. |
| 317 std::string html = | 365 std::string html = |
| 318 "<body>" | 366 "<body>" |
| 319 " <div role='group' id='A'>" | 367 " <div role='group' id='A'>" |
| 320 " <div role='group' id='B'>" | 368 " <div role='group' id='B'>" |
| 321 " <div role='group' id='C' style='visibility:visible'>" | 369 " <div role='group' id='C' style='visibility:visible'>" |
| 322 " </div>" | 370 " </div>" |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 401 | 449 |
| 402 accessibility->SendPendingAccessibilityNotifications(); | 450 accessibility->SendPendingAccessibilityNotifications(); |
| 403 EXPECT_EQ(4, accessibility->browser_tree_node_count()); | 451 EXPECT_EQ(4, accessibility->browser_tree_node_count()); |
| 404 AccessibilityHostMsg_NotificationParams notification; | 452 AccessibilityHostMsg_NotificationParams notification; |
| 405 GetLastAccNotification(¬ification); | 453 GetLastAccNotification(¬ification); |
| 406 ASSERT_EQ(3U, notification.nodes.size()); | 454 ASSERT_EQ(3U, notification.nodes.size()); |
| 407 EXPECT_EQ(3, CountAccessibilityNodesSentToBrowser()); | 455 EXPECT_EQ(3, CountAccessibilityNodesSentToBrowser()); |
| 408 } | 456 } |
| 409 | 457 |
| 410 } // namespace content | 458 } // namespace content |
| OLD | NEW |