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 |