| 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 "content/browser/accessibility/browser_accessibility_win.h" |
| 6 |
| 5 #include <stdint.h> | 7 #include <stdint.h> |
| 6 | 8 |
| 9 #include <memory> |
| 10 |
| 7 #include "base/macros.h" | 11 #include "base/macros.h" |
| 8 #include "base/memory/scoped_ptr.h" | |
| 9 #include "base/strings/utf_string_conversions.h" | 12 #include "base/strings/utf_string_conversions.h" |
| 10 #include "base/win/scoped_bstr.h" | 13 #include "base/win/scoped_bstr.h" |
| 11 #include "base/win/scoped_comptr.h" | 14 #include "base/win/scoped_comptr.h" |
| 12 #include "base/win/scoped_variant.h" | 15 #include "base/win/scoped_variant.h" |
| 13 #include "content/browser/accessibility/browser_accessibility_manager.h" | 16 #include "content/browser/accessibility/browser_accessibility_manager.h" |
| 14 #include "content/browser/accessibility/browser_accessibility_manager_win.h" | 17 #include "content/browser/accessibility/browser_accessibility_manager_win.h" |
| 15 #include "content/browser/accessibility/browser_accessibility_state_impl.h" | 18 #include "content/browser/accessibility/browser_accessibility_state_impl.h" |
| 16 #include "content/browser/accessibility/browser_accessibility_win.h" | |
| 17 #include "content/browser/renderer_host/legacy_render_widget_host_win.h" | 19 #include "content/browser/renderer_host/legacy_render_widget_host_win.h" |
| 18 #include "content/common/accessibility_messages.h" | 20 #include "content/common/accessibility_messages.h" |
| 19 #include "content/public/test/test_browser_thread_bundle.h" | 21 #include "content/public/test/test_browser_thread_bundle.h" |
| 20 #include "testing/gtest/include/gtest/gtest.h" | 22 #include "testing/gtest/include/gtest/gtest.h" |
| 21 #include "ui/base/win/atl_module.h" | 23 #include "ui/base/win/atl_module.h" |
| 22 | 24 |
| 23 namespace content { | 25 namespace content { |
| 24 namespace { | 26 namespace { |
| 25 | 27 |
| 26 | 28 |
| (...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 138 root.role = ui::AX_ROLE_ROOT_WEB_AREA; | 140 root.role = ui::AX_ROLE_ROOT_WEB_AREA; |
| 139 root.state = 0; | 141 root.state = 0; |
| 140 root.child_ids.push_back(2); | 142 root.child_ids.push_back(2); |
| 141 root.child_ids.push_back(3); | 143 root.child_ids.push_back(3); |
| 142 | 144 |
| 143 // Construct a BrowserAccessibilityManager with this | 145 // Construct a BrowserAccessibilityManager with this |
| 144 // ui::AXNodeData tree and a factory for an instance-counting | 146 // ui::AXNodeData tree and a factory for an instance-counting |
| 145 // BrowserAccessibility, and ensure that exactly 3 instances were | 147 // BrowserAccessibility, and ensure that exactly 3 instances were |
| 146 // created. Note that the manager takes ownership of the factory. | 148 // created. Note that the manager takes ownership of the factory. |
| 147 CountedBrowserAccessibility::reset(); | 149 CountedBrowserAccessibility::reset(); |
| 148 scoped_ptr<BrowserAccessibilityManager> manager( | 150 std::unique_ptr<BrowserAccessibilityManager> manager( |
| 149 BrowserAccessibilityManager::Create( | 151 BrowserAccessibilityManager::Create( |
| 150 MakeAXTreeUpdate(root, button, checkbox), | 152 MakeAXTreeUpdate(root, button, checkbox), NULL, |
| 151 NULL, new CountedBrowserAccessibilityFactory())); | 153 new CountedBrowserAccessibilityFactory())); |
| 152 ASSERT_EQ(3, CountedBrowserAccessibility::num_instances()); | 154 ASSERT_EQ(3, CountedBrowserAccessibility::num_instances()); |
| 153 | 155 |
| 154 // Delete the manager and test that all 3 instances are deleted. | 156 // Delete the manager and test that all 3 instances are deleted. |
| 155 manager.reset(); | 157 manager.reset(); |
| 156 ASSERT_EQ(0, CountedBrowserAccessibility::num_instances()); | 158 ASSERT_EQ(0, CountedBrowserAccessibility::num_instances()); |
| 157 | 159 |
| 158 // Construct a manager again, and this time use the IAccessible interface | 160 // Construct a manager again, and this time use the IAccessible interface |
| 159 // to get new references to two of the three nodes in the tree. | 161 // to get new references to two of the three nodes in the tree. |
| 160 manager.reset(BrowserAccessibilityManager::Create( | 162 manager.reset(BrowserAccessibilityManager::Create( |
| 161 MakeAXTreeUpdate(root, button, checkbox), | 163 MakeAXTreeUpdate(root, button, checkbox), |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 198 root.id = 1; | 200 root.id = 1; |
| 199 root.SetName("Document"); | 201 root.SetName("Document"); |
| 200 root.role = ui::AX_ROLE_ROOT_WEB_AREA; | 202 root.role = ui::AX_ROLE_ROOT_WEB_AREA; |
| 201 root.state = 0; | 203 root.state = 0; |
| 202 root.child_ids.push_back(2); | 204 root.child_ids.push_back(2); |
| 203 | 205 |
| 204 // Construct a BrowserAccessibilityManager with this | 206 // Construct a BrowserAccessibilityManager with this |
| 205 // ui::AXNodeData tree and a factory for an instance-counting | 207 // ui::AXNodeData tree and a factory for an instance-counting |
| 206 // BrowserAccessibility. | 208 // BrowserAccessibility. |
| 207 CountedBrowserAccessibility::reset(); | 209 CountedBrowserAccessibility::reset(); |
| 208 scoped_ptr<BrowserAccessibilityManager> manager( | 210 std::unique_ptr<BrowserAccessibilityManager> manager( |
| 209 BrowserAccessibilityManager::Create( | 211 BrowserAccessibilityManager::Create( |
| 210 MakeAXTreeUpdate(root, text), | 212 MakeAXTreeUpdate(root, text), NULL, |
| 211 NULL, new CountedBrowserAccessibilityFactory())); | 213 new CountedBrowserAccessibilityFactory())); |
| 212 | 214 |
| 213 // Query for the text IAccessible and verify that it returns "old text" as its | 215 // Query for the text IAccessible and verify that it returns "old text" as its |
| 214 // value. | 216 // value. |
| 215 base::win::ScopedVariant one(1); | 217 base::win::ScopedVariant one(1); |
| 216 base::win::ScopedComPtr<IDispatch> text_dispatch; | 218 base::win::ScopedComPtr<IDispatch> text_dispatch; |
| 217 HRESULT hr = ToBrowserAccessibilityWin(manager->GetRoot())->get_accChild( | 219 HRESULT hr = ToBrowserAccessibilityWin(manager->GetRoot())->get_accChild( |
| 218 one, text_dispatch.Receive()); | 220 one, text_dispatch.Receive()); |
| 219 ASSERT_EQ(S_OK, hr); | 221 ASSERT_EQ(S_OK, hr); |
| 220 | 222 |
| 221 base::win::ScopedComPtr<IAccessible> text_accessible; | 223 base::win::ScopedComPtr<IAccessible> text_accessible; |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 294 root.id = 1; | 296 root.id = 1; |
| 295 root.role = ui::AX_ROLE_ROOT_WEB_AREA; | 297 root.role = ui::AX_ROLE_ROOT_WEB_AREA; |
| 296 root.state = 0; | 298 root.state = 0; |
| 297 root.child_ids.push_back(2); | 299 root.child_ids.push_back(2); |
| 298 | 300 |
| 299 // Construct a BrowserAccessibilityManager with this | 301 // Construct a BrowserAccessibilityManager with this |
| 300 // ui::AXNodeData tree and a factory for an instance-counting | 302 // ui::AXNodeData tree and a factory for an instance-counting |
| 301 // BrowserAccessibility and ensure that exactly 4 instances were | 303 // BrowserAccessibility and ensure that exactly 4 instances were |
| 302 // created. Note that the manager takes ownership of the factory. | 304 // created. Note that the manager takes ownership of the factory. |
| 303 CountedBrowserAccessibility::reset(); | 305 CountedBrowserAccessibility::reset(); |
| 304 scoped_ptr<BrowserAccessibilityManager> manager( | 306 std::unique_ptr<BrowserAccessibilityManager> manager( |
| 305 BrowserAccessibilityManager::Create( | 307 BrowserAccessibilityManager::Create( |
| 306 MakeAXTreeUpdate(root, div, text3, text4), | 308 MakeAXTreeUpdate(root, div, text3, text4), NULL, |
| 307 NULL, new CountedBrowserAccessibilityFactory())); | 309 new CountedBrowserAccessibilityFactory())); |
| 308 ASSERT_EQ(4, CountedBrowserAccessibility::num_instances()); | 310 ASSERT_EQ(4, CountedBrowserAccessibility::num_instances()); |
| 309 | 311 |
| 310 // Notify the BrowserAccessibilityManager that the div node and its children | 312 // Notify the BrowserAccessibilityManager that the div node and its children |
| 311 // were removed and ensure that only one BrowserAccessibility instance exists. | 313 // were removed and ensure that only one BrowserAccessibility instance exists. |
| 312 root.child_ids.clear(); | 314 root.child_ids.clear(); |
| 313 AXEventNotificationDetails param; | 315 AXEventNotificationDetails param; |
| 314 param.event_type = ui::AX_EVENT_CHILDREN_CHANGED; | 316 param.event_type = ui::AX_EVENT_CHILDREN_CHANGED; |
| 315 param.update.nodes.push_back(root); | 317 param.update.nodes.push_back(root); |
| 316 param.id = root.id; | 318 param.id = root.id; |
| 317 std::vector<AXEventNotificationDetails> events; | 319 std::vector<AXEventNotificationDetails> events; |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 380 inline_box2.role = ui::AX_ROLE_INLINE_TEXT_BOX; | 382 inline_box2.role = ui::AX_ROLE_INLINE_TEXT_BOX; |
| 381 inline_box2.AddStringAttribute(ui::AX_ATTR_NAME, line2); | 383 inline_box2.AddStringAttribute(ui::AX_ATTR_NAME, line2); |
| 382 std::vector<int32_t> word_start_offsets2; | 384 std::vector<int32_t> word_start_offsets2; |
| 383 word_start_offsets2.push_back(0); | 385 word_start_offsets2.push_back(0); |
| 384 word_start_offsets2.push_back(5); | 386 word_start_offsets2.push_back(5); |
| 385 word_start_offsets2.push_back(10); | 387 word_start_offsets2.push_back(10); |
| 386 inline_box2.AddIntListAttribute( | 388 inline_box2.AddIntListAttribute( |
| 387 ui::AX_ATTR_WORD_STARTS, word_start_offsets2); | 389 ui::AX_ATTR_WORD_STARTS, word_start_offsets2); |
| 388 | 390 |
| 389 CountedBrowserAccessibility::reset(); | 391 CountedBrowserAccessibility::reset(); |
| 390 scoped_ptr<BrowserAccessibilityManager> manager( | 392 std::unique_ptr<BrowserAccessibilityManager> manager( |
| 391 BrowserAccessibilityManager::Create( | 393 BrowserAccessibilityManager::Create( |
| 392 MakeAXTreeUpdate(root, text_field, static_text1, inline_box1, | 394 MakeAXTreeUpdate(root, text_field, static_text1, inline_box1, |
| 393 line_break, static_text2, inline_box2), | 395 line_break, static_text2, inline_box2), |
| 394 nullptr, new CountedBrowserAccessibilityFactory())); | 396 nullptr, new CountedBrowserAccessibilityFactory())); |
| 395 ASSERT_EQ(7, CountedBrowserAccessibility::num_instances()); | 397 ASSERT_EQ(7, CountedBrowserAccessibility::num_instances()); |
| 396 | 398 |
| 397 BrowserAccessibilityWin* root_obj = | 399 BrowserAccessibilityWin* root_obj = |
| 398 ToBrowserAccessibilityWin(manager->GetRoot()); | 400 ToBrowserAccessibilityWin(manager->GetRoot()); |
| 399 ASSERT_NE(nullptr, root_obj); | 401 ASSERT_NE(nullptr, root_obj); |
| 400 ASSERT_EQ(1U, root_obj->PlatformChildCount()); | 402 ASSERT_EQ(1U, root_obj->PlatformChildCount()); |
| 401 | 403 |
| 402 BrowserAccessibilityWin* text_field_obj = | 404 BrowserAccessibilityWin* text_field_obj = |
| 403 ToBrowserAccessibilityWin(root_obj->PlatformGetChild(0)); | 405 ToBrowserAccessibilityWin(root_obj->PlatformGetChild(0)); |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 501 text2.SetName(text2_name); | 503 text2.SetName(text2_name); |
| 502 | 504 |
| 503 ui::AXNodeData root; | 505 ui::AXNodeData root; |
| 504 root.id = 1; | 506 root.id = 1; |
| 505 root.role = ui::AX_ROLE_ROOT_WEB_AREA; | 507 root.role = ui::AX_ROLE_ROOT_WEB_AREA; |
| 506 root.state = 1 << ui::AX_STATE_READ_ONLY; | 508 root.state = 1 << ui::AX_STATE_READ_ONLY; |
| 507 root.child_ids.push_back(text1.id); | 509 root.child_ids.push_back(text1.id); |
| 508 root.child_ids.push_back(text2.id); | 510 root.child_ids.push_back(text2.id); |
| 509 | 511 |
| 510 CountedBrowserAccessibility::reset(); | 512 CountedBrowserAccessibility::reset(); |
| 511 scoped_ptr<BrowserAccessibilityManager> manager( | 513 std::unique_ptr<BrowserAccessibilityManager> manager( |
| 512 BrowserAccessibilityManager::Create( | 514 BrowserAccessibilityManager::Create( |
| 513 MakeAXTreeUpdate(root, text1, text2), nullptr, | 515 MakeAXTreeUpdate(root, text1, text2), nullptr, |
| 514 new CountedBrowserAccessibilityFactory())); | 516 new CountedBrowserAccessibilityFactory())); |
| 515 ASSERT_EQ(3, CountedBrowserAccessibility::num_instances()); | 517 ASSERT_EQ(3, CountedBrowserAccessibility::num_instances()); |
| 516 | 518 |
| 517 BrowserAccessibilityWin* root_obj = | 519 BrowserAccessibilityWin* root_obj = |
| 518 ToBrowserAccessibilityWin(manager->GetRoot()); | 520 ToBrowserAccessibilityWin(manager->GetRoot()); |
| 519 | 521 |
| 520 long text_len; | 522 long text_len; |
| 521 EXPECT_EQ(S_OK, root_obj->get_nCharacters(&text_len)); | 523 EXPECT_EQ(S_OK, root_obj->get_nCharacters(&text_len)); |
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 621 root.role = ui::AX_ROLE_ROOT_WEB_AREA; | 623 root.role = ui::AX_ROLE_ROOT_WEB_AREA; |
| 622 root.state = 1 << ui::AX_STATE_READ_ONLY; | 624 root.state = 1 << ui::AX_STATE_READ_ONLY; |
| 623 root.child_ids.push_back(text1.id); | 625 root.child_ids.push_back(text1.id); |
| 624 root.child_ids.push_back(combo_box.id); | 626 root.child_ids.push_back(combo_box.id); |
| 625 root.child_ids.push_back(text2.id); | 627 root.child_ids.push_back(text2.id); |
| 626 root.child_ids.push_back(check_box.id); | 628 root.child_ids.push_back(check_box.id); |
| 627 root.child_ids.push_back(button.id); | 629 root.child_ids.push_back(button.id); |
| 628 root.child_ids.push_back(link.id); | 630 root.child_ids.push_back(link.id); |
| 629 | 631 |
| 630 CountedBrowserAccessibility::reset(); | 632 CountedBrowserAccessibility::reset(); |
| 631 scoped_ptr<BrowserAccessibilityManager> manager( | 633 std::unique_ptr<BrowserAccessibilityManager> manager( |
| 632 BrowserAccessibilityManager::Create( | 634 BrowserAccessibilityManager::Create( |
| 633 MakeAXTreeUpdate(root, text1, combo_box, text2, check_box, button, | 635 MakeAXTreeUpdate(root, text1, combo_box, text2, check_box, button, |
| 634 button_text, link, link_text), | 636 button_text, link, link_text), |
| 635 nullptr, new CountedBrowserAccessibilityFactory())); | 637 nullptr, new CountedBrowserAccessibilityFactory())); |
| 636 ASSERT_EQ(9, CountedBrowserAccessibility::num_instances()); | 638 ASSERT_EQ(9, CountedBrowserAccessibility::num_instances()); |
| 637 | 639 |
| 638 BrowserAccessibilityWin* root_obj = | 640 BrowserAccessibilityWin* root_obj = |
| 639 ToBrowserAccessibilityWin(manager->GetRoot()); | 641 ToBrowserAccessibilityWin(manager->GetRoot()); |
| 640 | 642 |
| 641 long text_len; | 643 long text_len; |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 718 ASSERT_EQ(0, CountedBrowserAccessibility::num_instances()); | 720 ASSERT_EQ(0, CountedBrowserAccessibility::num_instances()); |
| 719 } | 721 } |
| 720 | 722 |
| 721 TEST_F(BrowserAccessibilityTest, TestCreateEmptyDocument) { | 723 TEST_F(BrowserAccessibilityTest, TestCreateEmptyDocument) { |
| 722 // Try creating an empty document with busy state. Readonly is | 724 // Try creating an empty document with busy state. Readonly is |
| 723 // set automatically. | 725 // set automatically. |
| 724 CountedBrowserAccessibility::reset(); | 726 CountedBrowserAccessibility::reset(); |
| 725 const int32_t busy_state = 1 << ui::AX_STATE_BUSY; | 727 const int32_t busy_state = 1 << ui::AX_STATE_BUSY; |
| 726 const int32_t readonly_state = 1 << ui::AX_STATE_READ_ONLY; | 728 const int32_t readonly_state = 1 << ui::AX_STATE_READ_ONLY; |
| 727 const int32_t enabled_state = 1 << ui::AX_STATE_ENABLED; | 729 const int32_t enabled_state = 1 << ui::AX_STATE_ENABLED; |
| 728 scoped_ptr<BrowserAccessibilityManager> manager( | 730 std::unique_ptr<BrowserAccessibilityManager> manager( |
| 729 new BrowserAccessibilityManagerWin( | 731 new BrowserAccessibilityManagerWin( |
| 730 BrowserAccessibilityManagerWin::GetEmptyDocument(), | 732 BrowserAccessibilityManagerWin::GetEmptyDocument(), NULL, |
| 731 NULL, | |
| 732 new CountedBrowserAccessibilityFactory())); | 733 new CountedBrowserAccessibilityFactory())); |
| 733 | 734 |
| 734 // Verify the root is as we expect by default. | 735 // Verify the root is as we expect by default. |
| 735 BrowserAccessibility* root = manager->GetRoot(); | 736 BrowserAccessibility* root = manager->GetRoot(); |
| 736 EXPECT_EQ(0, root->GetId()); | 737 EXPECT_EQ(0, root->GetId()); |
| 737 EXPECT_EQ(ui::AX_ROLE_ROOT_WEB_AREA, root->GetRole()); | 738 EXPECT_EQ(ui::AX_ROLE_ROOT_WEB_AREA, root->GetRole()); |
| 738 EXPECT_EQ(busy_state | readonly_state | enabled_state, root->GetState()); | 739 EXPECT_EQ(busy_state | readonly_state | enabled_state, root->GetState()); |
| 739 | 740 |
| 740 // Tree with a child textfield. | 741 // Tree with a child textfield. |
| 741 ui::AXNodeData tree1_1; | 742 ui::AXNodeData tree1_1; |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 798 manager.reset(); | 799 manager.reset(); |
| 799 ASSERT_EQ(0, CountedBrowserAccessibility::num_instances()); | 800 ASSERT_EQ(0, CountedBrowserAccessibility::num_instances()); |
| 800 } | 801 } |
| 801 | 802 |
| 802 // This is a regression test for a bug where the initial empty document | 803 // This is a regression test for a bug where the initial empty document |
| 803 // loaded by a BrowserAccessibilityManagerWin couldn't be looked up by | 804 // loaded by a BrowserAccessibilityManagerWin couldn't be looked up by |
| 804 // its UniqueIDWin, because the AX Tree was loaded in | 805 // its UniqueIDWin, because the AX Tree was loaded in |
| 805 // BrowserAccessibilityManager code before BrowserAccessibilityManagerWin | 806 // BrowserAccessibilityManager code before BrowserAccessibilityManagerWin |
| 806 // was initialized. | 807 // was initialized. |
| 807 TEST_F(BrowserAccessibilityTest, EmptyDocHasUniqueIdWin) { | 808 TEST_F(BrowserAccessibilityTest, EmptyDocHasUniqueIdWin) { |
| 808 scoped_ptr<BrowserAccessibilityManagerWin> manager( | 809 std::unique_ptr<BrowserAccessibilityManagerWin> manager( |
| 809 new BrowserAccessibilityManagerWin( | 810 new BrowserAccessibilityManagerWin( |
| 810 BrowserAccessibilityManagerWin::GetEmptyDocument(), | 811 BrowserAccessibilityManagerWin::GetEmptyDocument(), NULL, |
| 811 NULL, | |
| 812 new CountedBrowserAccessibilityFactory())); | 812 new CountedBrowserAccessibilityFactory())); |
| 813 | 813 |
| 814 // Verify the root is as we expect by default. | 814 // Verify the root is as we expect by default. |
| 815 BrowserAccessibility* root = manager->GetRoot(); | 815 BrowserAccessibility* root = manager->GetRoot(); |
| 816 EXPECT_EQ(0, root->GetId()); | 816 EXPECT_EQ(0, root->GetId()); |
| 817 EXPECT_EQ(ui::AX_ROLE_ROOT_WEB_AREA, root->GetRole()); | 817 EXPECT_EQ(ui::AX_ROLE_ROOT_WEB_AREA, root->GetRole()); |
| 818 EXPECT_EQ(1 << ui::AX_STATE_BUSY | | 818 EXPECT_EQ(1 << ui::AX_STATE_BUSY | |
| 819 1 << ui::AX_STATE_READ_ONLY | | 819 1 << ui::AX_STATE_READ_ONLY | |
| 820 1 << ui::AX_STATE_ENABLED, | 820 1 << ui::AX_STATE_ENABLED, |
| 821 root->GetState()); | 821 root->GetState()); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 839 | 839 |
| 840 ui::AXNodeData root; | 840 ui::AXNodeData root; |
| 841 root.id = 1; | 841 root.id = 1; |
| 842 root.SetName("Document"); | 842 root.SetName("Document"); |
| 843 root.role = ui::AX_ROLE_ROOT_WEB_AREA; | 843 root.role = ui::AX_ROLE_ROOT_WEB_AREA; |
| 844 root.state = (1 << ui::AX_STATE_READ_ONLY) | (1 << ui::AX_STATE_FOCUSABLE); | 844 root.state = (1 << ui::AX_STATE_READ_ONLY) | (1 << ui::AX_STATE_FOCUSABLE); |
| 845 root.child_ids.push_back(2); | 845 root.child_ids.push_back(2); |
| 846 root.child_ids.push_back(3); | 846 root.child_ids.push_back(3); |
| 847 | 847 |
| 848 CountedBrowserAccessibility::reset(); | 848 CountedBrowserAccessibility::reset(); |
| 849 scoped_ptr<BrowserAccessibilityManager> manager( | 849 std::unique_ptr<BrowserAccessibilityManager> manager( |
| 850 BrowserAccessibilityManager::Create( | 850 BrowserAccessibilityManager::Create( |
| 851 MakeAXTreeUpdate(root, pseudo_before, checkbox), nullptr, | 851 MakeAXTreeUpdate(root, pseudo_before, checkbox), nullptr, |
| 852 new CountedBrowserAccessibilityFactory())); | 852 new CountedBrowserAccessibilityFactory())); |
| 853 ASSERT_EQ(3, CountedBrowserAccessibility::num_instances()); | 853 ASSERT_EQ(3, CountedBrowserAccessibility::num_instances()); |
| 854 | 854 |
| 855 ASSERT_NE(nullptr, manager->GetRoot()); | 855 ASSERT_NE(nullptr, manager->GetRoot()); |
| 856 BrowserAccessibilityWin* root_accessible = | 856 BrowserAccessibilityWin* root_accessible = |
| 857 ToBrowserAccessibilityWin(manager->GetRoot()); | 857 ToBrowserAccessibilityWin(manager->GetRoot()); |
| 858 ASSERT_NE(nullptr, root_accessible); | 858 ASSERT_NE(nullptr, root_accessible); |
| 859 ASSERT_EQ(2U, root_accessible->PlatformChildCount()); | 859 ASSERT_EQ(2U, root_accessible->PlatformChildCount()); |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 944 slider.state = slider_text.state = 1 << ui::AX_STATE_READ_ONLY; | 944 slider.state = slider_text.state = 1 << ui::AX_STATE_READ_ONLY; |
| 945 slider.child_ids.push_back(slider_text.id); | 945 slider.child_ids.push_back(slider_text.id); |
| 946 | 946 |
| 947 root.child_ids.push_back(2); // Combo box. | 947 root.child_ids.push_back(2); // Combo box. |
| 948 root.child_ids.push_back(4); // Search box. | 948 root.child_ids.push_back(4); // Search box. |
| 949 root.child_ids.push_back(7); // Text field. | 949 root.child_ids.push_back(7); // Text field. |
| 950 root.child_ids.push_back(8); // Link. | 950 root.child_ids.push_back(8); // Link. |
| 951 root.child_ids.push_back(10); // Slider. | 951 root.child_ids.push_back(10); // Slider. |
| 952 | 952 |
| 953 CountedBrowserAccessibility::reset(); | 953 CountedBrowserAccessibility::reset(); |
| 954 scoped_ptr<BrowserAccessibilityManager> manager( | 954 std::unique_ptr<BrowserAccessibilityManager> manager( |
| 955 BrowserAccessibilityManager::Create( | 955 BrowserAccessibilityManager::Create( |
| 956 MakeAXTreeUpdate(root, combo_box, combo_box_text, search_box, | 956 MakeAXTreeUpdate(root, combo_box, combo_box_text, search_box, |
| 957 search_box_text, new_line, text_field, link, | 957 search_box_text, new_line, text_field, link, |
| 958 link_text, slider, slider_text), | 958 link_text, slider, slider_text), |
| 959 nullptr, new CountedBrowserAccessibilityFactory())); | 959 nullptr, new CountedBrowserAccessibilityFactory())); |
| 960 ASSERT_EQ(11, CountedBrowserAccessibility::num_instances()); | 960 ASSERT_EQ(11, CountedBrowserAccessibility::num_instances()); |
| 961 | 961 |
| 962 ASSERT_NE(nullptr, manager->GetRoot()); | 962 ASSERT_NE(nullptr, manager->GetRoot()); |
| 963 BrowserAccessibilityWin* root_accessible = | 963 BrowserAccessibilityWin* root_accessible = |
| 964 ToBrowserAccessibilityWin(manager->GetRoot()); | 964 ToBrowserAccessibilityWin(manager->GetRoot()); |
| (...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1106 text_field_line.state = 1 << ui::AX_STATE_EDITABLE; | 1106 text_field_line.state = 1 << ui::AX_STATE_EDITABLE; |
| 1107 text_field_line.SetName(base::UTF16ToUTF8(line1)); | 1107 text_field_line.SetName(base::UTF16ToUTF8(line1)); |
| 1108 text_field_line.AddIntListAttribute(ui::AX_ATTR_WORD_STARTS, | 1108 text_field_line.AddIntListAttribute(ui::AX_ATTR_WORD_STARTS, |
| 1109 line1_word_starts); | 1109 line1_word_starts); |
| 1110 text_field_text.child_ids.push_back(text_field_line.id); | 1110 text_field_text.child_ids.push_back(text_field_line.id); |
| 1111 | 1111 |
| 1112 root.child_ids.push_back(2); // Textarea. | 1112 root.child_ids.push_back(2); // Textarea. |
| 1113 root.child_ids.push_back(7); // Text field. | 1113 root.child_ids.push_back(7); // Text field. |
| 1114 | 1114 |
| 1115 CountedBrowserAccessibility::reset(); | 1115 CountedBrowserAccessibility::reset(); |
| 1116 scoped_ptr<BrowserAccessibilityManager> manager( | 1116 std::unique_ptr<BrowserAccessibilityManager> manager( |
| 1117 BrowserAccessibilityManager::Create( | 1117 BrowserAccessibilityManager::Create( |
| 1118 MakeAXTreeUpdate(root, textarea, textarea_div, textarea_text, | 1118 MakeAXTreeUpdate(root, textarea, textarea_div, textarea_text, |
| 1119 textarea_line1, textarea_line2, text_field, | 1119 textarea_line1, textarea_line2, text_field, |
| 1120 text_field_div, text_field_text, text_field_line), | 1120 text_field_div, text_field_text, text_field_line), |
| 1121 nullptr, new CountedBrowserAccessibilityFactory())); | 1121 nullptr, new CountedBrowserAccessibilityFactory())); |
| 1122 ASSERT_EQ(10, CountedBrowserAccessibility::num_instances()); | 1122 ASSERT_EQ(10, CountedBrowserAccessibility::num_instances()); |
| 1123 | 1123 |
| 1124 ASSERT_NE(nullptr, manager->GetRoot()); | 1124 ASSERT_NE(nullptr, manager->GetRoot()); |
| 1125 BrowserAccessibilityWin* root_accessible = | 1125 BrowserAccessibilityWin* root_accessible = |
| 1126 ToBrowserAccessibilityWin(manager->GetRoot()); | 1126 ToBrowserAccessibilityWin(manager->GetRoot()); |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1207 (1 << ui::AX_STATE_FOCUSABLE); | 1207 (1 << ui::AX_STATE_FOCUSABLE); |
| 1208 text_field.SetValue("Test2"); | 1208 text_field.SetValue("Test2"); |
| 1209 // Select the letter 'e'. | 1209 // Select the letter 'e'. |
| 1210 text_field.AddIntAttribute(ui::AX_ATTR_TEXT_SEL_START, 1); | 1210 text_field.AddIntAttribute(ui::AX_ATTR_TEXT_SEL_START, 1); |
| 1211 text_field.AddIntAttribute(ui::AX_ATTR_TEXT_SEL_END, 2); | 1211 text_field.AddIntAttribute(ui::AX_ATTR_TEXT_SEL_END, 2); |
| 1212 | 1212 |
| 1213 root.child_ids.push_back(2); | 1213 root.child_ids.push_back(2); |
| 1214 root.child_ids.push_back(3); | 1214 root.child_ids.push_back(3); |
| 1215 | 1215 |
| 1216 CountedBrowserAccessibility::reset(); | 1216 CountedBrowserAccessibility::reset(); |
| 1217 scoped_ptr<BrowserAccessibilityManager> manager( | 1217 std::unique_ptr<BrowserAccessibilityManager> manager( |
| 1218 BrowserAccessibilityManager::Create( | 1218 BrowserAccessibilityManager::Create( |
| 1219 MakeAXTreeUpdate(root, combo_box, text_field), | 1219 MakeAXTreeUpdate(root, combo_box, text_field), nullptr, |
| 1220 nullptr, new CountedBrowserAccessibilityFactory())); | 1220 new CountedBrowserAccessibilityFactory())); |
| 1221 ASSERT_EQ(3, CountedBrowserAccessibility::num_instances()); | 1221 ASSERT_EQ(3, CountedBrowserAccessibility::num_instances()); |
| 1222 | 1222 |
| 1223 ASSERT_NE(nullptr, manager->GetRoot()); | 1223 ASSERT_NE(nullptr, manager->GetRoot()); |
| 1224 BrowserAccessibilityWin* root_accessible = | 1224 BrowserAccessibilityWin* root_accessible = |
| 1225 ToBrowserAccessibilityWin(manager->GetRoot()); | 1225 ToBrowserAccessibilityWin(manager->GetRoot()); |
| 1226 ASSERT_NE(nullptr, root_accessible); | 1226 ASSERT_NE(nullptr, root_accessible); |
| 1227 ASSERT_EQ(2U, root_accessible->PlatformChildCount()); | 1227 ASSERT_EQ(2U, root_accessible->PlatformChildCount()); |
| 1228 | 1228 |
| 1229 BrowserAccessibilityWin* combo_box_accessible = | 1229 BrowserAccessibilityWin* combo_box_accessible = |
| 1230 ToBrowserAccessibilityWin(root_accessible->PlatformGetChild(0)); | 1230 ToBrowserAccessibilityWin(root_accessible->PlatformGetChild(0)); |
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1327 root, div_editable, link, link_text, text); | 1327 root, div_editable, link, link_text, text); |
| 1328 | 1328 |
| 1329 // Place the caret between 'h' and 'e'. | 1329 // Place the caret between 'h' and 'e'. |
| 1330 update.has_tree_data = true; | 1330 update.has_tree_data = true; |
| 1331 update.tree_data.sel_anchor_object_id = 5; | 1331 update.tree_data.sel_anchor_object_id = 5; |
| 1332 update.tree_data.sel_anchor_offset = 1; | 1332 update.tree_data.sel_anchor_offset = 1; |
| 1333 update.tree_data.sel_focus_object_id = 5; | 1333 update.tree_data.sel_focus_object_id = 5; |
| 1334 update.tree_data.sel_focus_offset = 1; | 1334 update.tree_data.sel_focus_offset = 1; |
| 1335 | 1335 |
| 1336 CountedBrowserAccessibility::reset(); | 1336 CountedBrowserAccessibility::reset(); |
| 1337 scoped_ptr<BrowserAccessibilityManager> manager( | 1337 std::unique_ptr<BrowserAccessibilityManager> manager( |
| 1338 BrowserAccessibilityManager::Create( | 1338 BrowserAccessibilityManager::Create( |
| 1339 update, | 1339 update, nullptr, new CountedBrowserAccessibilityFactory())); |
| 1340 nullptr, new CountedBrowserAccessibilityFactory())); | |
| 1341 ASSERT_EQ(5, CountedBrowserAccessibility::num_instances()); | 1340 ASSERT_EQ(5, CountedBrowserAccessibility::num_instances()); |
| 1342 | 1341 |
| 1343 ASSERT_NE(nullptr, manager->GetRoot()); | 1342 ASSERT_NE(nullptr, manager->GetRoot()); |
| 1344 BrowserAccessibilityWin* root_accessible = | 1343 BrowserAccessibilityWin* root_accessible = |
| 1345 ToBrowserAccessibilityWin(manager->GetRoot()); | 1344 ToBrowserAccessibilityWin(manager->GetRoot()); |
| 1346 ASSERT_NE(nullptr, root_accessible); | 1345 ASSERT_NE(nullptr, root_accessible); |
| 1347 ASSERT_EQ(1U, root_accessible->PlatformChildCount()); | 1346 ASSERT_EQ(1U, root_accessible->PlatformChildCount()); |
| 1348 | 1347 |
| 1349 BrowserAccessibilityWin* div_editable_accessible = | 1348 BrowserAccessibilityWin* div_editable_accessible = |
| 1350 ToBrowserAccessibilityWin(root_accessible->PlatformGetChild(0)); | 1349 ToBrowserAccessibilityWin(root_accessible->PlatformGetChild(0)); |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1445 MakeAXTreeUpdate(root, div_editable, link, link_text, text); | 1444 MakeAXTreeUpdate(root, div_editable, link, link_text, text); |
| 1446 | 1445 |
| 1447 // Select the following part of the text: "lick here". | 1446 // Select the following part of the text: "lick here". |
| 1448 update.has_tree_data = true; | 1447 update.has_tree_data = true; |
| 1449 update.tree_data.sel_anchor_object_id = 3; | 1448 update.tree_data.sel_anchor_object_id = 3; |
| 1450 update.tree_data.sel_anchor_offset = 1; | 1449 update.tree_data.sel_anchor_offset = 1; |
| 1451 update.tree_data.sel_focus_object_id = 5; | 1450 update.tree_data.sel_focus_object_id = 5; |
| 1452 update.tree_data.sel_focus_offset = 4; | 1451 update.tree_data.sel_focus_offset = 4; |
| 1453 | 1452 |
| 1454 CountedBrowserAccessibility::reset(); | 1453 CountedBrowserAccessibility::reset(); |
| 1455 scoped_ptr<BrowserAccessibilityManager> manager( | 1454 std::unique_ptr<BrowserAccessibilityManager> manager( |
| 1456 BrowserAccessibilityManager::Create( | 1455 BrowserAccessibilityManager::Create( |
| 1457 update, | 1456 update, nullptr, new CountedBrowserAccessibilityFactory())); |
| 1458 nullptr, new CountedBrowserAccessibilityFactory())); | |
| 1459 ASSERT_EQ(5, CountedBrowserAccessibility::num_instances()); | 1457 ASSERT_EQ(5, CountedBrowserAccessibility::num_instances()); |
| 1460 | 1458 |
| 1461 ASSERT_NE(nullptr, manager->GetRoot()); | 1459 ASSERT_NE(nullptr, manager->GetRoot()); |
| 1462 BrowserAccessibilityWin* root_accessible = | 1460 BrowserAccessibilityWin* root_accessible = |
| 1463 ToBrowserAccessibilityWin(manager->GetRoot()); | 1461 ToBrowserAccessibilityWin(manager->GetRoot()); |
| 1464 ASSERT_NE(nullptr, root_accessible); | 1462 ASSERT_NE(nullptr, root_accessible); |
| 1465 ASSERT_EQ(1U, root_accessible->PlatformChildCount()); | 1463 ASSERT_EQ(1U, root_accessible->PlatformChildCount()); |
| 1466 | 1464 |
| 1467 BrowserAccessibilityWin* div_editable_accessible = | 1465 BrowserAccessibilityWin* div_editable_accessible = |
| 1468 ToBrowserAccessibilityWin(root_accessible->PlatformGetChild(0)); | 1466 ToBrowserAccessibilityWin(root_accessible->PlatformGetChild(0)); |
| (...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1581 link.role = ui::AX_ROLE_LINK; | 1579 link.role = ui::AX_ROLE_LINK; |
| 1582 link.state = (1 << ui::AX_STATE_FOCUSABLE) | (1 << ui::AX_STATE_LINKED); | 1580 link.state = (1 << ui::AX_STATE_FOCUSABLE) | (1 << ui::AX_STATE_LINKED); |
| 1583 link.SetName("here"); | 1581 link.SetName("here"); |
| 1584 link.AddStringAttribute(ui::AX_ATTR_URL, "example.com"); | 1582 link.AddStringAttribute(ui::AX_ATTR_URL, "example.com"); |
| 1585 | 1583 |
| 1586 root.child_ids.push_back(2); | 1584 root.child_ids.push_back(2); |
| 1587 div.child_ids.push_back(3); | 1585 div.child_ids.push_back(3); |
| 1588 div.child_ids.push_back(4); | 1586 div.child_ids.push_back(4); |
| 1589 | 1587 |
| 1590 CountedBrowserAccessibility::reset(); | 1588 CountedBrowserAccessibility::reset(); |
| 1591 scoped_ptr<BrowserAccessibilityManager> manager( | 1589 std::unique_ptr<BrowserAccessibilityManager> manager( |
| 1592 BrowserAccessibilityManager::Create( | 1590 BrowserAccessibilityManager::Create( |
| 1593 MakeAXTreeUpdate(root, div, link, text), nullptr, | 1591 MakeAXTreeUpdate(root, div, link, text), nullptr, |
| 1594 new CountedBrowserAccessibilityFactory())); | 1592 new CountedBrowserAccessibilityFactory())); |
| 1595 ASSERT_EQ(4, CountedBrowserAccessibility::num_instances()); | 1593 ASSERT_EQ(4, CountedBrowserAccessibility::num_instances()); |
| 1596 | 1594 |
| 1597 ASSERT_NE(nullptr, manager->GetRoot()); | 1595 ASSERT_NE(nullptr, manager->GetRoot()); |
| 1598 BrowserAccessibilityWin* root_accessible = | 1596 BrowserAccessibilityWin* root_accessible = |
| 1599 ToBrowserAccessibilityWin(manager->GetRoot()); | 1597 ToBrowserAccessibilityWin(manager->GetRoot()); |
| 1600 ASSERT_NE(nullptr, root_accessible); | 1598 ASSERT_NE(nullptr, root_accessible); |
| 1601 ASSERT_EQ(1U, root_accessible->PlatformChildCount()); | 1599 ASSERT_EQ(1U, root_accessible->PlatformChildCount()); |
| (...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1732 ui::AXNodeData child2_child1; | 1730 ui::AXNodeData child2_child1; |
| 1733 child2_child1.id = 4; | 1731 child2_child1.id = 4; |
| 1734 child2_child1.role = ui::AX_ROLE_INLINE_TEXT_BOX; | 1732 child2_child1.role = ui::AX_ROLE_INLINE_TEXT_BOX; |
| 1735 child2.child_ids.push_back(4); | 1733 child2.child_ids.push_back(4); |
| 1736 | 1734 |
| 1737 ui::AXNodeData child2_child2; | 1735 ui::AXNodeData child2_child2; |
| 1738 child2_child2.id = 5; | 1736 child2_child2.id = 5; |
| 1739 child2_child2.role = ui::AX_ROLE_INLINE_TEXT_BOX; | 1737 child2_child2.role = ui::AX_ROLE_INLINE_TEXT_BOX; |
| 1740 child2.child_ids.push_back(5); | 1738 child2.child_ids.push_back(5); |
| 1741 | 1739 |
| 1742 scoped_ptr<BrowserAccessibilityManager> manager( | 1740 std::unique_ptr<BrowserAccessibilityManager> manager( |
| 1743 BrowserAccessibilityManager::Create( | 1741 BrowserAccessibilityManager::Create( |
| 1744 MakeAXTreeUpdate(root, child1, child2, child2_child1, child2_child2), | 1742 MakeAXTreeUpdate(root, child1, child2, child2_child1, child2_child2), |
| 1745 nullptr, new CountedBrowserAccessibilityFactory())); | 1743 nullptr, new CountedBrowserAccessibilityFactory())); |
| 1746 | 1744 |
| 1747 BrowserAccessibility* root_accessible = manager->GetRoot(); | 1745 BrowserAccessibility* root_accessible = manager->GetRoot(); |
| 1748 ASSERT_NE(nullptr, root_accessible); | 1746 ASSERT_NE(nullptr, root_accessible); |
| 1749 ASSERT_EQ(2U, root_accessible->PlatformChildCount()); | 1747 ASSERT_EQ(2U, root_accessible->PlatformChildCount()); |
| 1750 BrowserAccessibility* child1_accessible = | 1748 BrowserAccessibility* child1_accessible = |
| 1751 root_accessible->PlatformGetChild(0); | 1749 root_accessible->PlatformGetChild(0); |
| 1752 ASSERT_NE(nullptr, child1_accessible); | 1750 ASSERT_NE(nullptr, child1_accessible); |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1815 ui::AXNodeData child2_child1; | 1813 ui::AXNodeData child2_child1; |
| 1816 child2_child1.id = 4; | 1814 child2_child1.id = 4; |
| 1817 child2_child1.role = ui::AX_ROLE_INLINE_TEXT_BOX; | 1815 child2_child1.role = ui::AX_ROLE_INLINE_TEXT_BOX; |
| 1818 child2.child_ids.push_back(4); | 1816 child2.child_ids.push_back(4); |
| 1819 | 1817 |
| 1820 ui::AXNodeData child2_child2; | 1818 ui::AXNodeData child2_child2; |
| 1821 child2_child2.id = 5; | 1819 child2_child2.id = 5; |
| 1822 child2_child2.role = ui::AX_ROLE_INLINE_TEXT_BOX; | 1820 child2_child2.role = ui::AX_ROLE_INLINE_TEXT_BOX; |
| 1823 child2.child_ids.push_back(5); | 1821 child2.child_ids.push_back(5); |
| 1824 | 1822 |
| 1825 scoped_ptr<BrowserAccessibilityManager> manager( | 1823 std::unique_ptr<BrowserAccessibilityManager> manager( |
| 1826 BrowserAccessibilityManager::Create( | 1824 BrowserAccessibilityManager::Create( |
| 1827 MakeAXTreeUpdate(root, child1, child2, child2_child1, child2_child2), | 1825 MakeAXTreeUpdate(root, child1, child2, child2_child1, child2_child2), |
| 1828 nullptr, new CountedBrowserAccessibilityFactory())); | 1826 nullptr, new CountedBrowserAccessibilityFactory())); |
| 1829 | 1827 |
| 1830 BrowserAccessibility* root_accessible = manager->GetRoot(); | 1828 BrowserAccessibility* root_accessible = manager->GetRoot(); |
| 1831 ASSERT_NE(nullptr, root_accessible); | 1829 ASSERT_NE(nullptr, root_accessible); |
| 1832 BrowserAccessibility* child1_accessible = | 1830 BrowserAccessibility* child1_accessible = |
| 1833 root_accessible->PlatformGetChild(0); | 1831 root_accessible->PlatformGetChild(0); |
| 1834 ASSERT_NE(nullptr, child1_accessible); | 1832 ASSERT_NE(nullptr, child1_accessible); |
| 1835 BrowserAccessibility* child2_accessible = | 1833 BrowserAccessibility* child2_accessible = |
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1917 | 1915 |
| 1918 TEST_F(BrowserAccessibilityTest, UniqueIdWinInvalidAfterDeletingTree) { | 1916 TEST_F(BrowserAccessibilityTest, UniqueIdWinInvalidAfterDeletingTree) { |
| 1919 ui::AXNodeData root_node; | 1917 ui::AXNodeData root_node; |
| 1920 root_node.id = 1; | 1918 root_node.id = 1; |
| 1921 root_node.role = ui::AX_ROLE_ROOT_WEB_AREA; | 1919 root_node.role = ui::AX_ROLE_ROOT_WEB_AREA; |
| 1922 | 1920 |
| 1923 ui::AXNodeData child_node; | 1921 ui::AXNodeData child_node; |
| 1924 child_node.id = 2; | 1922 child_node.id = 2; |
| 1925 root_node.child_ids.push_back(2); | 1923 root_node.child_ids.push_back(2); |
| 1926 | 1924 |
| 1927 scoped_ptr<BrowserAccessibilityManagerWin> manager( | 1925 std::unique_ptr<BrowserAccessibilityManagerWin> manager( |
| 1928 new BrowserAccessibilityManagerWin( | 1926 new BrowserAccessibilityManagerWin( |
| 1929 MakeAXTreeUpdate(root_node, child_node), | 1927 MakeAXTreeUpdate(root_node, child_node), nullptr, |
| 1930 nullptr, | |
| 1931 new CountedBrowserAccessibilityFactory())); | 1928 new CountedBrowserAccessibilityFactory())); |
| 1932 | 1929 |
| 1933 BrowserAccessibility* root = manager->GetRoot(); | 1930 BrowserAccessibility* root = manager->GetRoot(); |
| 1934 int32_t root_unique_id = root->unique_id(); | 1931 int32_t root_unique_id = root->unique_id(); |
| 1935 BrowserAccessibility* child = root->PlatformGetChild(0); | 1932 BrowserAccessibility* child = root->PlatformGetChild(0); |
| 1936 int32_t child_unique_id = child->unique_id(); | 1933 int32_t child_unique_id = child->unique_id(); |
| 1937 | 1934 |
| 1938 // Now destroy that original tree and create a new tree. | 1935 // Now destroy that original tree and create a new tree. |
| 1939 manager.reset( | 1936 manager.reset( |
| 1940 new BrowserAccessibilityManagerWin( | 1937 new BrowserAccessibilityManagerWin( |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1979 | 1976 |
| 1980 TEST_F(BrowserAccessibilityTest, AccChildOnlyReturnsDescendants) { | 1977 TEST_F(BrowserAccessibilityTest, AccChildOnlyReturnsDescendants) { |
| 1981 ui::AXNodeData root_node; | 1978 ui::AXNodeData root_node; |
| 1982 root_node.id = 1; | 1979 root_node.id = 1; |
| 1983 root_node.role = ui::AX_ROLE_ROOT_WEB_AREA; | 1980 root_node.role = ui::AX_ROLE_ROOT_WEB_AREA; |
| 1984 | 1981 |
| 1985 ui::AXNodeData child_node; | 1982 ui::AXNodeData child_node; |
| 1986 child_node.id = 2; | 1983 child_node.id = 2; |
| 1987 root_node.child_ids.push_back(2); | 1984 root_node.child_ids.push_back(2); |
| 1988 | 1985 |
| 1989 scoped_ptr<BrowserAccessibilityManagerWin> manager( | 1986 std::unique_ptr<BrowserAccessibilityManagerWin> manager( |
| 1990 new BrowserAccessibilityManagerWin( | 1987 new BrowserAccessibilityManagerWin( |
| 1991 MakeAXTreeUpdate(root_node, child_node), | 1988 MakeAXTreeUpdate(root_node, child_node), nullptr, |
| 1992 nullptr, | |
| 1993 new CountedBrowserAccessibilityFactory())); | 1989 new CountedBrowserAccessibilityFactory())); |
| 1994 | 1990 |
| 1995 BrowserAccessibility* root = manager->GetRoot(); | 1991 BrowserAccessibility* root = manager->GetRoot(); |
| 1996 BrowserAccessibility* child = root->PlatformGetChild(0); | 1992 BrowserAccessibility* child = root->PlatformGetChild(0); |
| 1997 | 1993 |
| 1998 base::win::ScopedVariant root_unique_id_variant(-root->unique_id()); | 1994 base::win::ScopedVariant root_unique_id_variant(-root->unique_id()); |
| 1999 base::win::ScopedComPtr<IDispatch> result; | 1995 base::win::ScopedComPtr<IDispatch> result; |
| 2000 EXPECT_EQ(E_INVALIDARG, ToBrowserAccessibilityWin(child)->get_accChild( | 1996 EXPECT_EQ(E_INVALIDARG, ToBrowserAccessibilityWin(child)->get_accChild( |
| 2001 root_unique_id_variant, result.Receive())); | 1997 root_unique_id_variant, result.Receive())); |
| 2002 | 1998 |
| 2003 base::win::ScopedVariant child_unique_id_variant(-child->unique_id()); | 1999 base::win::ScopedVariant child_unique_id_variant(-child->unique_id()); |
| 2004 EXPECT_EQ(S_OK, ToBrowserAccessibilityWin(root)->get_accChild( | 2000 EXPECT_EQ(S_OK, ToBrowserAccessibilityWin(root)->get_accChild( |
| 2005 child_unique_id_variant, result.Receive())); | 2001 child_unique_id_variant, result.Receive())); |
| 2006 } | 2002 } |
| 2007 | 2003 |
| 2008 } // namespace content | 2004 } // namespace content |
| OLD | NEW |