| Index: chrome/browser/accessibility/browser_accessibility_manager_unittest.cc
|
| diff --git a/chrome/browser/accessibility/browser_accessibility_manager_unittest.cc b/chrome/browser/accessibility/browser_accessibility_manager_unittest.cc
|
| index 79f96b8573c644964b5e12b438f5a0472ba12045..b6f83024b4b876c9d1e8957a4eb56d85efda8f37 100644
|
| --- a/chrome/browser/accessibility/browser_accessibility_manager_unittest.cc
|
| +++ b/chrome/browser/accessibility/browser_accessibility_manager_unittest.cc
|
| @@ -551,3 +551,78 @@ TEST(BrowserAccessibilityManagerTest, TestMoveChildUp) {
|
| delete manager;
|
| ASSERT_EQ(0, CountedBrowserAccessibility::global_obj_count_);
|
| }
|
| +
|
| +TEST(BrowserAccessibilityManagerTest, TestCreateEmptyDocument) {
|
| + // Try creating an empty document with busy state.
|
| + BrowserAccessibilityManager* manager =
|
| + BrowserAccessibilityManager::CreateEmptyDocument(
|
| + NULL,
|
| + WebAccessibility::STATE_BUSY,
|
| + NULL,
|
| + new CountedBrowserAccessibilityFactory());
|
| +
|
| + // Verify the root is as we expect by default.
|
| + BrowserAccessibility* root = manager->GetRoot();
|
| + EXPECT_EQ(1000, root->renderer_id());
|
| + EXPECT_EQ(WebAccessibility::ROLE_WEB_AREA, root->role());
|
| + EXPECT_EQ(WebAccessibility::STATE_BUSY, root->state());
|
| +
|
| + // Tree with a child textfield.
|
| + WebAccessibility tree1_1;
|
| + tree1_1.id = 1000;
|
| + tree1_1.role = WebAccessibility::ROLE_WEB_AREA;
|
| +
|
| + WebAccessibility tree1_2;
|
| + tree1_2.id = 1001;
|
| + tree1_2.role = WebAccessibility::ROLE_TEXT_FIELD;
|
| +
|
| + tree1_1.children.push_back(tree1_2);
|
| +
|
| + // Process a load complete.
|
| + std::vector<ViewHostMsg_AccessibilityNotification_Params> params;
|
| + params.push_back(ViewHostMsg_AccessibilityNotification_Params());
|
| + ViewHostMsg_AccessibilityNotification_Params* msg = ¶ms[0];
|
| + msg->notification_type = ViewHostMsg_AccessibilityNotification_Type::
|
| + NOTIFICATION_TYPE_LOAD_COMPLETE;
|
| + msg->acc_obj = tree1_1;
|
| +
|
| + manager->OnAccessibilityNotifications(params);
|
| +
|
| + // Save for later comparison.
|
| + BrowserAccessibility* acc1_2 = manager->GetFromRendererID(1001);
|
| +
|
| + // Verify the root has not changed.
|
| + EXPECT_EQ(root, manager->GetRoot());
|
| +
|
| + // And the proper child remains.
|
| + EXPECT_EQ(WebAccessibility::ROLE_TEXT_FIELD, acc1_2->role());
|
| + EXPECT_EQ(1001, acc1_2->renderer_id());
|
| +
|
| + // Tree with a child button.
|
| + WebAccessibility tree2_1;
|
| + tree2_1.id = 1000;
|
| + tree2_1.role = WebAccessibility::ROLE_WEB_AREA;
|
| +
|
| + WebAccessibility tree2_2;
|
| + tree2_2.id = 1001;
|
| + tree2_2.role = WebAccessibility::ROLE_BUTTON;
|
| +
|
| + tree2_1.children.push_back(tree2_2);
|
| +
|
| + msg->acc_obj = tree2_1;
|
| +
|
| + // Fire another load complete.
|
| + manager->OnAccessibilityNotifications(params);
|
| +
|
| + BrowserAccessibility* acc2_2 = manager->GetFromRendererID(1001);
|
| +
|
| + // Verify the root has not changed.
|
| + EXPECT_EQ(root, manager->GetRoot());
|
| +
|
| + // And the proper child remains.
|
| + EXPECT_EQ(WebAccessibility::ROLE_BUTTON, acc2_2->role());
|
| + EXPECT_EQ(1001, acc2_2->renderer_id());
|
| +
|
| + // Verify we don't reuse objects that have changed roles.
|
| + EXPECT_NE(acc1_2, acc2_2);
|
| +}
|
|
|