| 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 314 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 325 "<body>" | 325 "<body>" |
| 326 " <p>Hello, world.</p>" | 326 " <p>Hello, world.</p>" |
| 327 "</body>"; | 327 "</body>"; |
| 328 LoadHTML(html.c_str()); | 328 LoadHTML(html.c_str()); |
| 329 | 329 |
| 330 // Creating a RendererAccessibilityComplete should send the tree | 330 // Creating a RendererAccessibilityComplete should send the tree |
| 331 // to the browser. | 331 // to the browser. |
| 332 scoped_ptr<TestRendererAccessibilityComplete> accessibility( | 332 scoped_ptr<TestRendererAccessibilityComplete> accessibility( |
| 333 new TestRendererAccessibilityComplete(view())); | 333 new TestRendererAccessibilityComplete(view())); |
| 334 accessibility->SendPendingAccessibilityEvents(); | 334 accessibility->SendPendingAccessibilityEvents(); |
| 335 EXPECT_EQ(3, accessibility->browser_tree_node_count()); | 335 EXPECT_EQ(5, accessibility->browser_tree_node_count()); |
| 336 EXPECT_EQ(3, CountAccessibilityNodesSentToBrowser()); | 336 EXPECT_EQ(5, CountAccessibilityNodesSentToBrowser()); |
| 337 | 337 |
| 338 // Post a "value changed" event, but then swap out | 338 // Post a "value changed" event, but then swap out |
| 339 // before sending it. It shouldn't send the event while | 339 // before sending it. It shouldn't send the event while |
| 340 // swapped out. | 340 // swapped out. |
| 341 sink_->ClearMessages(); | 341 sink_->ClearMessages(); |
| 342 WebDocument document = view()->GetWebView()->mainFrame()->document(); | 342 WebDocument document = view()->GetWebView()->mainFrame()->document(); |
| 343 WebAXObject root_obj = document.accessibilityObject(); | 343 WebAXObject root_obj = document.accessibilityObject(); |
| 344 accessibility->HandleWebAccessibilityEvent( | 344 accessibility->HandleWebAccessibilityEvent( |
| 345 root_obj, | 345 root_obj, |
| 346 WebKit::WebAXEventValueChanged); | 346 WebKit::WebAXEventValueChanged); |
| (...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 472 // a layout occurs and an anonymous render block is no longer needed. | 472 // a layout occurs and an anonymous render block is no longer needed. |
| 473 std::string html = | 473 std::string html = |
| 474 "<body aria-label='Body'>" | 474 "<body aria-label='Body'>" |
| 475 "<span>1</span><span style='display:block'>2</span>" | 475 "<span>1</span><span style='display:block'>2</span>" |
| 476 "</body>"; | 476 "</body>"; |
| 477 LoadHTML(html.c_str()); | 477 LoadHTML(html.c_str()); |
| 478 | 478 |
| 479 scoped_ptr<TestRendererAccessibilityComplete> accessibility( | 479 scoped_ptr<TestRendererAccessibilityComplete> accessibility( |
| 480 new TestRendererAccessibilityComplete(view())); | 480 new TestRendererAccessibilityComplete(view())); |
| 481 accessibility->SendPendingAccessibilityEvents(); | 481 accessibility->SendPendingAccessibilityEvents(); |
| 482 EXPECT_EQ(5, accessibility->browser_tree_node_count()); | 482 EXPECT_EQ(7, accessibility->browser_tree_node_count()); |
| 483 EXPECT_EQ(5, CountAccessibilityNodesSentToBrowser()); | 483 EXPECT_EQ(7, CountAccessibilityNodesSentToBrowser()); |
| 484 | 484 |
| 485 // Initially, the accessibility tree looks like this: | 485 // Initially, the accessibility tree looks like this: |
| 486 // | 486 // |
| 487 // Document | 487 // Document |
| 488 // +--Body | 488 // +--Body |
| 489 // +--Anonymous Block | 489 // +--Anonymous Block |
| 490 // +--Static Text "1" | 490 // +--Static Text "1" |
| 491 // +--Inline Text Box "1" |
| 491 // +--Static Text "2" | 492 // +--Static Text "2" |
| 493 // +--Inline Text Box "2" |
| 492 WebDocument document = view()->GetWebView()->mainFrame()->document(); | 494 WebDocument document = view()->GetWebView()->mainFrame()->document(); |
| 493 WebAXObject root_obj = document.accessibilityObject(); | 495 WebAXObject root_obj = document.accessibilityObject(); |
| 494 WebAXObject body = root_obj.childAt(0); | 496 WebAXObject body = root_obj.childAt(0); |
| 495 WebAXObject anonymous_block = body.childAt(0); | 497 WebAXObject anonymous_block = body.childAt(0); |
| 496 WebAXObject text_1 = anonymous_block.childAt(0); | 498 WebAXObject text_1 = anonymous_block.childAt(0); |
| 497 WebAXObject text_2 = body.childAt(1); | 499 WebAXObject text_2 = body.childAt(1); |
| 498 | 500 |
| 499 // Change the display of the second 'span' back to inline, which causes the | 501 // Change the display of the second 'span' back to inline, which causes the |
| 500 // anonymous block to be destroyed. | 502 // anonymous block to be destroyed. |
| 501 ExecuteJavaScript( | 503 ExecuteJavaScript( |
| 502 "document.querySelectorAll('span')[1].style.display = 'inline';"); | 504 "document.querySelectorAll('span')[1].style.display = 'inline';"); |
| 503 // Force layout now. | 505 // Force layout now. |
| 504 ExecuteJavaScript("document.body.offsetLeft;"); | 506 ExecuteJavaScript("document.body.offsetLeft;"); |
| 505 | 507 |
| 506 // Send a childrenChanged on the body. | 508 // Send a childrenChanged on the body. |
| 507 sink_->ClearMessages(); | 509 sink_->ClearMessages(); |
| 508 accessibility->HandleWebAccessibilityEvent( | 510 accessibility->HandleWebAccessibilityEvent( |
| 509 body, | 511 body, |
| 510 WebKit::WebAXEventChildrenChanged); | 512 WebKit::WebAXEventChildrenChanged); |
| 511 | 513 |
| 512 accessibility->SendPendingAccessibilityEvents(); | 514 accessibility->SendPendingAccessibilityEvents(); |
| 513 | 515 |
| 514 // Afterwards, the accessibility tree looks like this: | 516 // Afterwards, the accessibility tree looks like this: |
| 515 // | 517 // |
| 516 // Document | 518 // Document |
| 517 // +--Body | 519 // +--Body |
| 518 // +--Static Text "1" | 520 // +--Static Text "1" |
| 521 // +--Inline Text Box "1" |
| 519 // +--Static Text "2" | 522 // +--Static Text "2" |
| 523 // +--Inline Text Box "2" |
| 520 // | 524 // |
| 521 // We just assert that there are now four nodes in the | 525 // We just assert that there are now four nodes in the |
| 522 // accessibility tree and that only three nodes needed | 526 // accessibility tree and that only three nodes needed |
| 523 // to be updated (the body, the static text 1, and | 527 // to be updated (the body, the static text 1, and |
| 524 // the static text 2). | 528 // the static text 2). |
| 525 EXPECT_EQ(4, accessibility->browser_tree_node_count()); | 529 EXPECT_EQ(6, accessibility->browser_tree_node_count()); |
| 526 | 530 |
| 527 AccessibilityHostMsg_EventParams event; | 531 AccessibilityHostMsg_EventParams event; |
| 528 GetLastAccEvent(&event); | 532 GetLastAccEvent(&event); |
| 529 ASSERT_EQ(3U, event.nodes.size()); | 533 ASSERT_EQ(5U, event.nodes.size()); |
| 530 | 534 |
| 531 EXPECT_EQ(body.axID(), event.nodes[0].id); | 535 EXPECT_EQ(body.axID(), event.nodes[0].id); |
| 532 EXPECT_EQ(text_1.axID(), event.nodes[1].id); | 536 EXPECT_EQ(text_1.axID(), event.nodes[1].id); |
| 533 // The third event is to update text_2, but its id changes | 537 // The third event is to update text_2, but its id changes |
| 534 // so we don't have a test expectation for it. | 538 // so we don't have a test expectation for it. |
| 535 } | 539 } |
| 536 | 540 |
| 537 } // namespace content | 541 } // namespace content |
| OLD | NEW |