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

Side by Side Diff: chrome/browser/accessibility/browser_accessibility_manager_unittest.cc

Issue 7966013: Rewrite renderer accessibility to not use WebAccessibilityCache. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 2 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/string16.h" 5 #include "base/string16.h"
6 #include "base/utf_string_conversions.h" 6 #include "base/utf_string_conversions.h"
7 #include "content/browser/accessibility/browser_accessibility.h" 7 #include "content/browser/accessibility/browser_accessibility.h"
8 #include "content/browser/accessibility/browser_accessibility_manager.h" 8 #include "content/browser/accessibility/browser_accessibility_manager.h"
9 #include "content/common/view_messages.h" 9 #include "content/common/view_messages.h"
10 #include "testing/gtest/include/gtest/gtest.h" 10 #include "testing/gtest/include/gtest/gtest.h"
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after
224 // Check the index in parent. 224 // Check the index in parent.
225 EXPECT_EQ(0, child1_accessible->index_in_parent()); 225 EXPECT_EQ(0, child1_accessible->index_in_parent());
226 EXPECT_EQ(1, child2_accessible->index_in_parent()); 226 EXPECT_EQ(1, child2_accessible->index_in_parent());
227 EXPECT_EQ(2, child3_accessible->index_in_parent()); 227 EXPECT_EQ(2, child3_accessible->index_in_parent());
228 228
229 // Process a notification containing the changed subtree. 229 // Process a notification containing the changed subtree.
230 std::vector<ViewHostMsg_AccessibilityNotification_Params> params; 230 std::vector<ViewHostMsg_AccessibilityNotification_Params> params;
231 params.push_back(ViewHostMsg_AccessibilityNotification_Params()); 231 params.push_back(ViewHostMsg_AccessibilityNotification_Params());
232 ViewHostMsg_AccessibilityNotification_Params* msg = &params[0]; 232 ViewHostMsg_AccessibilityNotification_Params* msg = &params[0];
233 msg->notification_type = ViewHostMsg_AccEvent::CHILDREN_CHANGED; 233 msg->notification_type = ViewHostMsg_AccEvent::CHILDREN_CHANGED;
234 msg->acc_obj = tree2_root; 234 msg->acc_tree = tree2_root;
235 msg->includes_children = true;
236 msg->id = tree2_root.id;
235 manager->OnAccessibilityNotifications(params); 237 manager->OnAccessibilityNotifications(params);
236 238
237 // There should be 5 objects now: the 4 from the new tree, plus the 239 // There should be 5 objects now: the 4 from the new tree, plus the
238 // reference to child3 we kept. 240 // reference to child3 we kept.
239 EXPECT_EQ(5, CountedBrowserAccessibility::global_obj_count_); 241 EXPECT_EQ(5, CountedBrowserAccessibility::global_obj_count_);
240 242
241 // Check that our references to the root, child1, and child2 are still valid, 243 // Check that our references to the root, child1, and child2 are still valid,
242 // but that the reference to child3 is now invalid. 244 // but that the reference to child3 is now invalid.
243 EXPECT_TRUE(root_accessible->instance_active()); 245 EXPECT_TRUE(root_accessible->instance_active());
244 EXPECT_TRUE(child1_accessible->instance_active()); 246 EXPECT_TRUE(child1_accessible->instance_active());
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after
428 // Check the index in parent. 430 // Check the index in parent.
429 EXPECT_EQ(1, child2_accessible->index_in_parent()); 431 EXPECT_EQ(1, child2_accessible->index_in_parent());
430 EXPECT_EQ(2, child3_accessible->index_in_parent()); 432 EXPECT_EQ(2, child3_accessible->index_in_parent());
431 433
432 // Process a notification containing the changed subtree rooted at 434 // Process a notification containing the changed subtree rooted at
433 // the container. 435 // the container.
434 std::vector<ViewHostMsg_AccessibilityNotification_Params> params; 436 std::vector<ViewHostMsg_AccessibilityNotification_Params> params;
435 params.push_back(ViewHostMsg_AccessibilityNotification_Params()); 437 params.push_back(ViewHostMsg_AccessibilityNotification_Params());
436 ViewHostMsg_AccessibilityNotification_Params* msg = &params[0]; 438 ViewHostMsg_AccessibilityNotification_Params* msg = &params[0];
437 msg->notification_type = ViewHostMsg_AccEvent::CHILDREN_CHANGED; 439 msg->notification_type = ViewHostMsg_AccEvent::CHILDREN_CHANGED;
438 msg->acc_obj = tree2_container; 440 msg->acc_tree = tree2_container;
441 msg->includes_children = true;
442 msg->id = tree2_container.id;
439 manager->OnAccessibilityNotifications(params); 443 manager->OnAccessibilityNotifications(params);
440 444
441 // There should be 9 objects now: the 8 from the new tree, plus the 445 // There should be 9 objects now: the 8 from the new tree, plus the
442 // reference to child3 we kept. 446 // reference to child3 we kept.
443 EXPECT_EQ(9, CountedBrowserAccessibility::global_obj_count_); 447 EXPECT_EQ(9, CountedBrowserAccessibility::global_obj_count_);
444 448
445 // Check that our references to the root and container and child2 are 449 // Check that our references to the root and container and child2 are
446 // still valid, but that the reference to child3 is now invalid. 450 // still valid, but that the reference to child3 is now invalid.
447 EXPECT_TRUE(root_accessible->instance_active()); 451 EXPECT_TRUE(root_accessible->instance_active());
448 EXPECT_TRUE(container_accessible->instance_active()); 452 EXPECT_TRUE(container_accessible->instance_active());
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
531 tree1_1, 535 tree1_1,
532 NULL, 536 NULL,
533 new CountedBrowserAccessibilityFactory()); 537 new CountedBrowserAccessibilityFactory());
534 ASSERT_EQ(4, CountedBrowserAccessibility::global_obj_count_); 538 ASSERT_EQ(4, CountedBrowserAccessibility::global_obj_count_);
535 539
536 // Process a notification containing the changed subtree. 540 // Process a notification containing the changed subtree.
537 std::vector<ViewHostMsg_AccessibilityNotification_Params> params; 541 std::vector<ViewHostMsg_AccessibilityNotification_Params> params;
538 params.push_back(ViewHostMsg_AccessibilityNotification_Params()); 542 params.push_back(ViewHostMsg_AccessibilityNotification_Params());
539 ViewHostMsg_AccessibilityNotification_Params* msg = &params[0]; 543 ViewHostMsg_AccessibilityNotification_Params* msg = &params[0];
540 msg->notification_type = ViewHostMsg_AccEvent::CHILDREN_CHANGED; 544 msg->notification_type = ViewHostMsg_AccEvent::CHILDREN_CHANGED;
541 msg->acc_obj = tree2_1; 545 msg->acc_tree = tree2_1;
546 msg->includes_children = true;
547 msg->id = tree2_1.id;
542 manager->OnAccessibilityNotifications(params); 548 manager->OnAccessibilityNotifications(params);
543 549
544 // There should be 4 objects now. 550 // There should be 4 objects now.
545 EXPECT_EQ(4, CountedBrowserAccessibility::global_obj_count_); 551 EXPECT_EQ(4, CountedBrowserAccessibility::global_obj_count_);
546 552
547 // Delete the manager and make sure all memory is cleaned up. 553 // Delete the manager and make sure all memory is cleaned up.
548 delete manager; 554 delete manager;
549 ASSERT_EQ(0, CountedBrowserAccessibility::global_obj_count_); 555 ASSERT_EQ(0, CountedBrowserAccessibility::global_obj_count_);
550 } 556 }
551 557
552 TEST(BrowserAccessibilityManagerTest, TestCreateEmptyDocument) { 558 TEST(BrowserAccessibilityManagerTest, TestCreateEmptyDocument) {
553 // Try creating an empty document with busy state. 559 // Try creating an empty document with busy state.
554 scoped_ptr<BrowserAccessibilityManager> manager; 560 scoped_ptr<BrowserAccessibilityManager> manager;
555 manager.reset(BrowserAccessibilityManager::CreateEmptyDocument( 561 manager.reset(BrowserAccessibilityManager::CreateEmptyDocument(
556 NULL, 562 NULL,
557 WebAccessibility::STATE_BUSY, 563 WebAccessibility::STATE_BUSY,
558 NULL, 564 NULL,
559 new CountedBrowserAccessibilityFactory())); 565 new CountedBrowserAccessibilityFactory()));
560 566
561 // Verify the root is as we expect by default. 567 // Verify the root is as we expect by default.
562 BrowserAccessibility* root = manager->GetRoot(); 568 BrowserAccessibility* root = manager->GetRoot();
563 EXPECT_EQ(1000, root->renderer_id()); 569 EXPECT_EQ(0, root->renderer_id());
564 EXPECT_EQ(WebAccessibility::ROLE_WEB_AREA, root->role()); 570 EXPECT_EQ(WebAccessibility::ROLE_ROOT_WEB_AREA, root->role());
565 EXPECT_EQ(WebAccessibility::STATE_BUSY, root->state()); 571 EXPECT_EQ(WebAccessibility::STATE_BUSY, root->state());
566 572
567 // Tree with a child textfield. 573 // Tree with a child textfield.
568 WebAccessibility tree1_1; 574 WebAccessibility tree1_1;
569 tree1_1.id = 1000; 575 tree1_1.id = 1;
570 tree1_1.role = WebAccessibility::ROLE_WEB_AREA; 576 tree1_1.role = WebAccessibility::ROLE_ROOT_WEB_AREA;
571 577
572 WebAccessibility tree1_2; 578 WebAccessibility tree1_2;
573 tree1_2.id = 1001; 579 tree1_2.id = 2;
574 tree1_2.role = WebAccessibility::ROLE_TEXT_FIELD; 580 tree1_2.role = WebAccessibility::ROLE_TEXT_FIELD;
575 581
576 tree1_1.children.push_back(tree1_2); 582 tree1_1.children.push_back(tree1_2);
577 583
578 // Process a load complete. 584 // Process a load complete.
579 std::vector<ViewHostMsg_AccessibilityNotification_Params> params; 585 std::vector<ViewHostMsg_AccessibilityNotification_Params> params;
580 params.push_back(ViewHostMsg_AccessibilityNotification_Params()); 586 params.push_back(ViewHostMsg_AccessibilityNotification_Params());
581 ViewHostMsg_AccessibilityNotification_Params* msg = &params[0]; 587 ViewHostMsg_AccessibilityNotification_Params* msg = &params[0];
582 msg->notification_type = ViewHostMsg_AccEvent::LOAD_COMPLETE; 588 msg->notification_type = ViewHostMsg_AccEvent::LOAD_COMPLETE;
583 msg->acc_obj = tree1_1; 589 msg->acc_tree = tree1_1;
584 590 msg->includes_children = true;
591 msg->id = tree1_1.id;
585 manager->OnAccessibilityNotifications(params); 592 manager->OnAccessibilityNotifications(params);
586 593
587 // Save for later comparison. 594 // Save for later comparison.
588 BrowserAccessibility* acc1_2 = manager->GetFromRendererID(1001); 595 BrowserAccessibility* acc1_2 = manager->GetFromRendererID(2);
589 596
590 // Verify the root has not changed. 597 // Verify the root has not changed.
591 EXPECT_EQ(root, manager->GetRoot()); 598 EXPECT_EQ(root, manager->GetRoot());
592 599
593 // And the proper child remains. 600 // And the proper child remains.
594 EXPECT_EQ(WebAccessibility::ROLE_TEXT_FIELD, acc1_2->role()); 601 EXPECT_EQ(WebAccessibility::ROLE_TEXT_FIELD, acc1_2->role());
595 EXPECT_EQ(1001, acc1_2->renderer_id()); 602 EXPECT_EQ(2, acc1_2->renderer_id());
596 603
597 // Tree with a child button. 604 // Tree with a child button.
598 WebAccessibility tree2_1; 605 WebAccessibility tree2_1;
599 tree2_1.id = 1000; 606 tree2_1.id = 1;
600 tree2_1.role = WebAccessibility::ROLE_WEB_AREA; 607 tree2_1.role = WebAccessibility::ROLE_ROOT_WEB_AREA;
601 608
602 WebAccessibility tree2_2; 609 WebAccessibility tree2_2;
603 tree2_2.id = 1002; 610 tree2_2.id = 3;
604 tree2_2.role = WebAccessibility::ROLE_BUTTON; 611 tree2_2.role = WebAccessibility::ROLE_BUTTON;
605 612
606 tree2_1.children.push_back(tree2_2); 613 tree2_1.children.push_back(tree2_2);
607 614
608 msg->acc_obj = tree2_1; 615 msg->acc_tree = tree2_1;
616 msg->includes_children = true;
617 msg->id = tree2_1.id;
609 618
610 // Fire another load complete. 619 // Fire another load complete.
611 manager->OnAccessibilityNotifications(params); 620 manager->OnAccessibilityNotifications(params);
612 621
613 BrowserAccessibility* acc2_2 = manager->GetFromRendererID(1002); 622 BrowserAccessibility* acc2_2 = manager->GetFromRendererID(3);
614 623
615 // Verify the root has not changed. 624 // Verify the root has not changed.
616 EXPECT_EQ(root, manager->GetRoot()); 625 EXPECT_EQ(root, manager->GetRoot());
617 626
618 // And the new child exists. 627 // And the new child exists.
619 EXPECT_EQ(WebAccessibility::ROLE_BUTTON, acc2_2->role()); 628 EXPECT_EQ(WebAccessibility::ROLE_BUTTON, acc2_2->role());
620 EXPECT_EQ(1002, acc2_2->renderer_id()); 629 EXPECT_EQ(3, acc2_2->renderer_id());
621 630
622 // Ensure we properly cleaned up. 631 // Ensure we properly cleaned up.
623 manager.reset(); 632 manager.reset();
624 ASSERT_EQ(0, CountedBrowserAccessibility::global_obj_count_); 633 ASSERT_EQ(0, CountedBrowserAccessibility::global_obj_count_);
625 } 634 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698