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

Side by Side Diff: content/browser/accessibility/browser_accessibility_win_unittest.cc

Issue 1762143002: Use unique IDs for accessibility nodes on Android (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix null obj deref in DCHECK Created 4 years, 9 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
OLDNEW
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 <stdint.h> 5 #include <stdint.h>
6 6
7 #include "base/macros.h" 7 #include "base/macros.h"
8 #include "base/memory/scoped_ptr.h" 8 #include "base/memory/scoped_ptr.h"
9 #include "base/strings/utf_string_conversions.h" 9 #include "base/strings/utf_string_conversions.h"
10 #include "base/win/scoped_bstr.h" 10 #include "base/win/scoped_bstr.h"
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
154 // Delete the manager and test that all 3 instances are deleted. 154 // Delete the manager and test that all 3 instances are deleted.
155 manager.reset(); 155 manager.reset();
156 ASSERT_EQ(0, CountedBrowserAccessibility::num_instances()); 156 ASSERT_EQ(0, CountedBrowserAccessibility::num_instances());
157 157
158 // Construct a manager again, and this time use the IAccessible interface 158 // 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. 159 // to get new references to two of the three nodes in the tree.
160 manager.reset(BrowserAccessibilityManager::Create( 160 manager.reset(BrowserAccessibilityManager::Create(
161 MakeAXTreeUpdate(root, button, checkbox), 161 MakeAXTreeUpdate(root, button, checkbox),
162 NULL, new CountedBrowserAccessibilityFactory())); 162 NULL, new CountedBrowserAccessibilityFactory()));
163 ASSERT_EQ(3, CountedBrowserAccessibility::num_instances()); 163 ASSERT_EQ(3, CountedBrowserAccessibility::num_instances());
164 IAccessible* root_accessible = 164 IAccessible* root_accessible = ToBrowserAccessibilityWin(manager->GetRoot());
165 manager->GetRoot()->ToBrowserAccessibilityWin();
166 IDispatch* root_iaccessible = NULL; 165 IDispatch* root_iaccessible = NULL;
167 IDispatch* child1_iaccessible = NULL; 166 IDispatch* child1_iaccessible = NULL;
168 base::win::ScopedVariant childid_self(CHILDID_SELF); 167 base::win::ScopedVariant childid_self(CHILDID_SELF);
169 HRESULT hr = root_accessible->get_accChild(childid_self, &root_iaccessible); 168 HRESULT hr = root_accessible->get_accChild(childid_self, &root_iaccessible);
170 ASSERT_EQ(S_OK, hr); 169 ASSERT_EQ(S_OK, hr);
171 base::win::ScopedVariant one(1); 170 base::win::ScopedVariant one(1);
172 hr = root_accessible->get_accChild(one, &child1_iaccessible); 171 hr = root_accessible->get_accChild(one, &child1_iaccessible);
173 ASSERT_EQ(S_OK, hr); 172 ASSERT_EQ(S_OK, hr);
174 173
175 // Now delete the manager, and only one of the three nodes in the tree 174 // Now delete the manager, and only one of the three nodes in the tree
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
208 CountedBrowserAccessibility::reset(); 207 CountedBrowserAccessibility::reset();
209 scoped_ptr<BrowserAccessibilityManager> manager( 208 scoped_ptr<BrowserAccessibilityManager> manager(
210 BrowserAccessibilityManager::Create( 209 BrowserAccessibilityManager::Create(
211 MakeAXTreeUpdate(root, text), 210 MakeAXTreeUpdate(root, text),
212 NULL, new CountedBrowserAccessibilityFactory())); 211 NULL, new CountedBrowserAccessibilityFactory()));
213 212
214 // Query for the text IAccessible and verify that it returns "old text" as its 213 // Query for the text IAccessible and verify that it returns "old text" as its
215 // value. 214 // value.
216 base::win::ScopedVariant one(1); 215 base::win::ScopedVariant one(1);
217 base::win::ScopedComPtr<IDispatch> text_dispatch; 216 base::win::ScopedComPtr<IDispatch> text_dispatch;
218 HRESULT hr = manager->GetRoot()->ToBrowserAccessibilityWin()->get_accChild( 217 HRESULT hr = ToBrowserAccessibilityWin(manager->GetRoot())->get_accChild(
219 one, text_dispatch.Receive()); 218 one, text_dispatch.Receive());
220 ASSERT_EQ(S_OK, hr); 219 ASSERT_EQ(S_OK, hr);
221 220
222 base::win::ScopedComPtr<IAccessible> text_accessible; 221 base::win::ScopedComPtr<IAccessible> text_accessible;
223 hr = text_dispatch.QueryInterface(text_accessible.Receive()); 222 hr = text_dispatch.QueryInterface(text_accessible.Receive());
224 ASSERT_EQ(S_OK, hr); 223 ASSERT_EQ(S_OK, hr);
225 224
226 base::win::ScopedVariant childid_self(CHILDID_SELF); 225 base::win::ScopedVariant childid_self(CHILDID_SELF);
227 base::win::ScopedBstr name; 226 base::win::ScopedBstr name;
228 hr = text_accessible->get_accName(childid_self, name.Receive()); 227 hr = text_accessible->get_accName(childid_self, name.Receive());
(...skipping 13 matching lines...) Expand all
242 AXEventNotificationDetails param; 241 AXEventNotificationDetails param;
243 param.event_type = ui::AX_EVENT_CHILDREN_CHANGED; 242 param.event_type = ui::AX_EVENT_CHILDREN_CHANGED;
244 param.update.nodes.push_back(text2); 243 param.update.nodes.push_back(text2);
245 param.id = text2.id; 244 param.id = text2.id;
246 std::vector<AXEventNotificationDetails> events; 245 std::vector<AXEventNotificationDetails> events;
247 events.push_back(param); 246 events.push_back(param);
248 manager->OnAccessibilityEvents(events); 247 manager->OnAccessibilityEvents(events);
249 248
250 // Query for the text IAccessible and verify that it now returns "new text" 249 // Query for the text IAccessible and verify that it now returns "new text"
251 // as its value. 250 // as its value.
252 hr = manager->GetRoot()->ToBrowserAccessibilityWin()->get_accChild( 251 hr = ToBrowserAccessibilityWin(manager->GetRoot())->get_accChild(
253 one, text_dispatch.Receive()); 252 one, text_dispatch.Receive());
254 ASSERT_EQ(S_OK, hr); 253 ASSERT_EQ(S_OK, hr);
255 254
256 hr = text_dispatch.QueryInterface(text_accessible.Receive()); 255 hr = text_dispatch.QueryInterface(text_accessible.Receive());
257 ASSERT_EQ(S_OK, hr); 256 ASSERT_EQ(S_OK, hr);
258 257
259 hr = text_accessible->get_accName(childid_self, name.Receive()); 258 hr = text_accessible->get_accName(childid_self, name.Receive());
260 ASSERT_EQ(S_OK, hr); 259 ASSERT_EQ(S_OK, hr);
261 EXPECT_EQ(L"new text", base::string16(name)); 260 EXPECT_EQ(L"new text", base::string16(name));
262 261
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
389 388
390 CountedBrowserAccessibility::reset(); 389 CountedBrowserAccessibility::reset();
391 scoped_ptr<BrowserAccessibilityManager> manager( 390 scoped_ptr<BrowserAccessibilityManager> manager(
392 BrowserAccessibilityManager::Create( 391 BrowserAccessibilityManager::Create(
393 MakeAXTreeUpdate(root, text_field, static_text1, inline_box1, 392 MakeAXTreeUpdate(root, text_field, static_text1, inline_box1,
394 line_break, static_text2, inline_box2), 393 line_break, static_text2, inline_box2),
395 nullptr, new CountedBrowserAccessibilityFactory())); 394 nullptr, new CountedBrowserAccessibilityFactory()));
396 ASSERT_EQ(7, CountedBrowserAccessibility::num_instances()); 395 ASSERT_EQ(7, CountedBrowserAccessibility::num_instances());
397 396
398 BrowserAccessibilityWin* root_obj = 397 BrowserAccessibilityWin* root_obj =
399 manager->GetRoot()->ToBrowserAccessibilityWin(); 398 ToBrowserAccessibilityWin(manager->GetRoot());
400 ASSERT_NE(nullptr, root_obj); 399 ASSERT_NE(nullptr, root_obj);
401 ASSERT_EQ(1U, root_obj->PlatformChildCount()); 400 ASSERT_EQ(1U, root_obj->PlatformChildCount());
402 401
403 BrowserAccessibilityWin* text_field_obj = 402 BrowserAccessibilityWin* text_field_obj =
404 root_obj->PlatformGetChild(0)->ToBrowserAccessibilityWin(); 403 ToBrowserAccessibilityWin(root_obj->PlatformGetChild(0));
405 ASSERT_NE(nullptr, text_field_obj); 404 ASSERT_NE(nullptr, text_field_obj);
406 405
407 long text_len; 406 long text_len;
408 EXPECT_EQ(S_OK, text_field_obj->get_nCharacters(&text_len)); 407 EXPECT_EQ(S_OK, text_field_obj->get_nCharacters(&text_len));
409 408
410 base::win::ScopedBstr text; 409 base::win::ScopedBstr text;
411 EXPECT_EQ(S_OK, text_field_obj->get_text(0, text_len, text.Receive())); 410 EXPECT_EQ(S_OK, text_field_obj->get_text(0, text_len, text.Receive()));
412 EXPECT_EQ(text_value, base::UTF16ToUTF8(base::string16(text))); 411 EXPECT_EQ(text_value, base::UTF16ToUTF8(base::string16(text)));
413 text.Reset(); 412 text.Reset();
414 413
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
509 root.child_ids.push_back(text2.id); 508 root.child_ids.push_back(text2.id);
510 509
511 CountedBrowserAccessibility::reset(); 510 CountedBrowserAccessibility::reset();
512 scoped_ptr<BrowserAccessibilityManager> manager( 511 scoped_ptr<BrowserAccessibilityManager> manager(
513 BrowserAccessibilityManager::Create( 512 BrowserAccessibilityManager::Create(
514 MakeAXTreeUpdate(root, text1, text2), nullptr, 513 MakeAXTreeUpdate(root, text1, text2), nullptr,
515 new CountedBrowserAccessibilityFactory())); 514 new CountedBrowserAccessibilityFactory()));
516 ASSERT_EQ(3, CountedBrowserAccessibility::num_instances()); 515 ASSERT_EQ(3, CountedBrowserAccessibility::num_instances());
517 516
518 BrowserAccessibilityWin* root_obj = 517 BrowserAccessibilityWin* root_obj =
519 manager->GetRoot()->ToBrowserAccessibilityWin(); 518 ToBrowserAccessibilityWin(manager->GetRoot());
520 519
521 long text_len; 520 long text_len;
522 EXPECT_EQ(S_OK, root_obj->get_nCharacters(&text_len)); 521 EXPECT_EQ(S_OK, root_obj->get_nCharacters(&text_len));
523 EXPECT_EQ(text_name_len, text_len); 522 EXPECT_EQ(text_name_len, text_len);
524 523
525 base::win::ScopedBstr text; 524 base::win::ScopedBstr text;
526 EXPECT_EQ(S_OK, root_obj->get_text(0, text_name_len, text.Receive())); 525 EXPECT_EQ(S_OK, root_obj->get_text(0, text_name_len, text.Receive()));
527 EXPECT_EQ(text1_name + text2_name, base::UTF16ToUTF8(base::string16(text))); 526 EXPECT_EQ(text1_name + text2_name, base::UTF16ToUTF8(base::string16(text)));
528 527
529 long hyperlink_count; 528 long hyperlink_count;
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
630 629
631 CountedBrowserAccessibility::reset(); 630 CountedBrowserAccessibility::reset();
632 scoped_ptr<BrowserAccessibilityManager> manager( 631 scoped_ptr<BrowserAccessibilityManager> manager(
633 BrowserAccessibilityManager::Create( 632 BrowserAccessibilityManager::Create(
634 MakeAXTreeUpdate(root, text1, combo_box, text2, check_box, button, 633 MakeAXTreeUpdate(root, text1, combo_box, text2, check_box, button,
635 button_text, link, link_text), 634 button_text, link, link_text),
636 nullptr, new CountedBrowserAccessibilityFactory())); 635 nullptr, new CountedBrowserAccessibilityFactory()));
637 ASSERT_EQ(9, CountedBrowserAccessibility::num_instances()); 636 ASSERT_EQ(9, CountedBrowserAccessibility::num_instances());
638 637
639 BrowserAccessibilityWin* root_obj = 638 BrowserAccessibilityWin* root_obj =
640 manager->GetRoot()->ToBrowserAccessibilityWin(); 639 ToBrowserAccessibilityWin(manager->GetRoot());
641 640
642 long text_len; 641 long text_len;
643 EXPECT_EQ(S_OK, root_obj->get_nCharacters(&text_len)); 642 EXPECT_EQ(S_OK, root_obj->get_nCharacters(&text_len));
644 EXPECT_EQ(root_hypertext_len, text_len); 643 EXPECT_EQ(root_hypertext_len, text_len);
645 644
646 base::win::ScopedBstr text; 645 base::win::ScopedBstr text;
647 EXPECT_EQ(S_OK, root_obj->get_text(0, root_hypertext_len, text.Receive())); 646 EXPECT_EQ(S_OK, root_obj->get_text(0, root_hypertext_len, text.Receive()));
648 EXPECT_STREQ(root_hypertext.c_str(), text); 647 EXPECT_STREQ(root_hypertext.c_str(), text);
649 text.Reset(); 648 text.Reset();
650 649
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
814 813
815 // Verify the root is as we expect by default. 814 // Verify the root is as we expect by default.
816 BrowserAccessibility* root = manager->GetRoot(); 815 BrowserAccessibility* root = manager->GetRoot();
817 EXPECT_EQ(0, root->GetId()); 816 EXPECT_EQ(0, root->GetId());
818 EXPECT_EQ(ui::AX_ROLE_ROOT_WEB_AREA, root->GetRole()); 817 EXPECT_EQ(ui::AX_ROLE_ROOT_WEB_AREA, root->GetRole());
819 EXPECT_EQ(1 << ui::AX_STATE_BUSY | 818 EXPECT_EQ(1 << ui::AX_STATE_BUSY |
820 1 << ui::AX_STATE_READ_ONLY | 819 1 << ui::AX_STATE_READ_ONLY |
821 1 << ui::AX_STATE_ENABLED, 820 1 << ui::AX_STATE_ENABLED,
822 root->GetState()); 821 root->GetState());
823 822
824 LONG unique_id_win = root->ToBrowserAccessibilityWin()->unique_id_win(); 823 int32_t unique_id = ToBrowserAccessibilityWin(root)->unique_id();
825 ASSERT_EQ(root, manager->GetFromUniqueIdWin(unique_id_win)); 824 ASSERT_EQ(root, BrowserAccessibility::GetFromUniqueID(unique_id));
826 } 825 }
827 826
828 TEST_F(BrowserAccessibilityTest, TestIA2Attributes) { 827 TEST_F(BrowserAccessibilityTest, TestIA2Attributes) {
829 ui::AXNodeData pseudo_before; 828 ui::AXNodeData pseudo_before;
830 pseudo_before.id = 2; 829 pseudo_before.id = 2;
831 pseudo_before.role = ui::AX_ROLE_DIV; 830 pseudo_before.role = ui::AX_ROLE_DIV;
832 pseudo_before.AddStringAttribute(ui::AX_ATTR_HTML_TAG, "<pseudo:before>"); 831 pseudo_before.AddStringAttribute(ui::AX_ATTR_HTML_TAG, "<pseudo:before>");
833 pseudo_before.AddStringAttribute(ui::AX_ATTR_DISPLAY, "none"); 832 pseudo_before.AddStringAttribute(ui::AX_ATTR_DISPLAY, "none");
834 833
835 ui::AXNodeData checkbox; 834 ui::AXNodeData checkbox;
(...skipping 12 matching lines...) Expand all
848 847
849 CountedBrowserAccessibility::reset(); 848 CountedBrowserAccessibility::reset();
850 scoped_ptr<BrowserAccessibilityManager> manager( 849 scoped_ptr<BrowserAccessibilityManager> manager(
851 BrowserAccessibilityManager::Create( 850 BrowserAccessibilityManager::Create(
852 MakeAXTreeUpdate(root, pseudo_before, checkbox), nullptr, 851 MakeAXTreeUpdate(root, pseudo_before, checkbox), nullptr,
853 new CountedBrowserAccessibilityFactory())); 852 new CountedBrowserAccessibilityFactory()));
854 ASSERT_EQ(3, CountedBrowserAccessibility::num_instances()); 853 ASSERT_EQ(3, CountedBrowserAccessibility::num_instances());
855 854
856 ASSERT_NE(nullptr, manager->GetRoot()); 855 ASSERT_NE(nullptr, manager->GetRoot());
857 BrowserAccessibilityWin* root_accessible = 856 BrowserAccessibilityWin* root_accessible =
858 manager->GetRoot()->ToBrowserAccessibilityWin(); 857 ToBrowserAccessibilityWin(manager->GetRoot());
859 ASSERT_NE(nullptr, root_accessible); 858 ASSERT_NE(nullptr, root_accessible);
860 ASSERT_EQ(2U, root_accessible->PlatformChildCount()); 859 ASSERT_EQ(2U, root_accessible->PlatformChildCount());
861 860
862 BrowserAccessibilityWin* pseudo_accessible = 861 BrowserAccessibilityWin* pseudo_accessible =
863 root_accessible->PlatformGetChild(0)->ToBrowserAccessibilityWin(); 862 ToBrowserAccessibilityWin(root_accessible->PlatformGetChild(0));
864 ASSERT_NE(nullptr, pseudo_accessible); 863 ASSERT_NE(nullptr, pseudo_accessible);
865 864
866 base::win::ScopedBstr attributes; 865 base::win::ScopedBstr attributes;
867 HRESULT hr = pseudo_accessible->get_attributes(attributes.Receive()); 866 HRESULT hr = pseudo_accessible->get_attributes(attributes.Receive());
868 EXPECT_EQ(S_OK, hr); 867 EXPECT_EQ(S_OK, hr);
869 EXPECT_NE(nullptr, static_cast<BSTR>(attributes)); 868 EXPECT_NE(nullptr, static_cast<BSTR>(attributes));
870 std::wstring attributes_str(attributes, attributes.Length()); 869 std::wstring attributes_str(attributes, attributes.Length());
871 EXPECT_EQ(L"display:none;tag:<pseudo\\:before>;", attributes_str); 870 EXPECT_EQ(L"display:none;tag:<pseudo\\:before>;", attributes_str);
872 871
873 BrowserAccessibilityWin* checkbox_accessible = 872 BrowserAccessibilityWin* checkbox_accessible =
874 root_accessible->PlatformGetChild(1)->ToBrowserAccessibilityWin(); 873 ToBrowserAccessibilityWin(root_accessible->PlatformGetChild(1));
875 ASSERT_NE(nullptr, checkbox_accessible); 874 ASSERT_NE(nullptr, checkbox_accessible);
876 875
877 attributes.Reset(); 876 attributes.Reset();
878 hr = checkbox_accessible->get_attributes(attributes.Receive()); 877 hr = checkbox_accessible->get_attributes(attributes.Receive());
879 EXPECT_EQ(S_OK, hr); 878 EXPECT_EQ(S_OK, hr);
880 EXPECT_NE(nullptr, static_cast<BSTR>(attributes)); 879 EXPECT_NE(nullptr, static_cast<BSTR>(attributes));
881 attributes_str = std::wstring(attributes, attributes.Length()); 880 attributes_str = std::wstring(attributes, attributes.Length());
882 EXPECT_EQ(L"checkable:true;", attributes_str); 881 EXPECT_EQ(L"checkable:true;", attributes_str);
883 882
884 manager.reset(); 883 manager.reset();
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
955 scoped_ptr<BrowserAccessibilityManager> manager( 954 scoped_ptr<BrowserAccessibilityManager> manager(
956 BrowserAccessibilityManager::Create( 955 BrowserAccessibilityManager::Create(
957 MakeAXTreeUpdate(root, combo_box, combo_box_text, search_box, 956 MakeAXTreeUpdate(root, combo_box, combo_box_text, search_box,
958 search_box_text, new_line, text_field, link, 957 search_box_text, new_line, text_field, link,
959 link_text, slider, slider_text), 958 link_text, slider, slider_text),
960 nullptr, new CountedBrowserAccessibilityFactory())); 959 nullptr, new CountedBrowserAccessibilityFactory()));
961 ASSERT_EQ(11, CountedBrowserAccessibility::num_instances()); 960 ASSERT_EQ(11, CountedBrowserAccessibility::num_instances());
962 961
963 ASSERT_NE(nullptr, manager->GetRoot()); 962 ASSERT_NE(nullptr, manager->GetRoot());
964 BrowserAccessibilityWin* root_accessible = 963 BrowserAccessibilityWin* root_accessible =
965 manager->GetRoot()->ToBrowserAccessibilityWin(); 964 ToBrowserAccessibilityWin(manager->GetRoot());
966 ASSERT_NE(nullptr, root_accessible); 965 ASSERT_NE(nullptr, root_accessible);
967 ASSERT_EQ(5U, root_accessible->PlatformChildCount()); 966 ASSERT_EQ(5U, root_accessible->PlatformChildCount());
968 967
969 BrowserAccessibilityWin* combo_box_accessible = 968 BrowserAccessibilityWin* combo_box_accessible =
970 root_accessible->PlatformGetChild(0)->ToBrowserAccessibilityWin(); 969 ToBrowserAccessibilityWin(root_accessible->PlatformGetChild(0));
971 ASSERT_NE(nullptr, combo_box_accessible); 970 ASSERT_NE(nullptr, combo_box_accessible);
972 manager->SetFocusLocallyForTesting(combo_box_accessible); 971 manager->SetFocusLocallyForTesting(combo_box_accessible);
973 ASSERT_EQ(combo_box_accessible, 972 ASSERT_EQ(combo_box_accessible,
974 manager->GetFocus()->ToBrowserAccessibilityWin()); 973 ToBrowserAccessibilityWin(manager->GetFocus()));
975 BrowserAccessibilityWin* search_box_accessible = 974 BrowserAccessibilityWin* search_box_accessible =
976 root_accessible->PlatformGetChild(1)->ToBrowserAccessibilityWin(); 975 ToBrowserAccessibilityWin(root_accessible->PlatformGetChild(1));
977 ASSERT_NE(nullptr, search_box_accessible); 976 ASSERT_NE(nullptr, search_box_accessible);
978 BrowserAccessibilityWin* text_field_accessible = 977 BrowserAccessibilityWin* text_field_accessible =
979 root_accessible->PlatformGetChild(2)->ToBrowserAccessibilityWin(); 978 ToBrowserAccessibilityWin(root_accessible->PlatformGetChild(2));
980 ASSERT_NE(nullptr, text_field_accessible); 979 ASSERT_NE(nullptr, text_field_accessible);
981 BrowserAccessibilityWin* link_accessible = 980 BrowserAccessibilityWin* link_accessible =
982 root_accessible->PlatformGetChild(3)->ToBrowserAccessibilityWin(); 981 ToBrowserAccessibilityWin(root_accessible->PlatformGetChild(3));
983 ASSERT_NE(nullptr, link_accessible); 982 ASSERT_NE(nullptr, link_accessible);
984 BrowserAccessibilityWin* slider_accessible = 983 BrowserAccessibilityWin* slider_accessible =
985 root_accessible->PlatformGetChild(4)->ToBrowserAccessibilityWin(); 984 ToBrowserAccessibilityWin(root_accessible->PlatformGetChild(4));
986 ASSERT_NE(nullptr, slider_accessible); 985 ASSERT_NE(nullptr, slider_accessible);
987 986
988 base::win::ScopedVariant childid_self(CHILDID_SELF); 987 base::win::ScopedVariant childid_self(CHILDID_SELF);
989 base::win::ScopedVariant childid_slider(5); 988 base::win::ScopedVariant childid_slider(5);
990 base::win::ScopedBstr value; 989 base::win::ScopedBstr value;
991 990
992 HRESULT hr = 991 HRESULT hr =
993 combo_box_accessible->get_accValue(childid_self, value.Receive()); 992 combo_box_accessible->get_accValue(childid_self, value.Receive());
994 EXPECT_EQ(S_OK, hr); 993 EXPECT_EQ(S_OK, hr);
995 EXPECT_STREQ(L"Combo box text", value); 994 EXPECT_STREQ(L"Combo box text", value);
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
1117 scoped_ptr<BrowserAccessibilityManager> manager( 1116 scoped_ptr<BrowserAccessibilityManager> manager(
1118 BrowserAccessibilityManager::Create( 1117 BrowserAccessibilityManager::Create(
1119 MakeAXTreeUpdate(root, textarea, textarea_div, textarea_text, 1118 MakeAXTreeUpdate(root, textarea, textarea_div, textarea_text,
1120 textarea_line1, textarea_line2, text_field, 1119 textarea_line1, textarea_line2, text_field,
1121 text_field_div, text_field_text, text_field_line), 1120 text_field_div, text_field_text, text_field_line),
1122 nullptr, new CountedBrowserAccessibilityFactory())); 1121 nullptr, new CountedBrowserAccessibilityFactory()));
1123 ASSERT_EQ(10, CountedBrowserAccessibility::num_instances()); 1122 ASSERT_EQ(10, CountedBrowserAccessibility::num_instances());
1124 1123
1125 ASSERT_NE(nullptr, manager->GetRoot()); 1124 ASSERT_NE(nullptr, manager->GetRoot());
1126 BrowserAccessibilityWin* root_accessible = 1125 BrowserAccessibilityWin* root_accessible =
1127 manager->GetRoot()->ToBrowserAccessibilityWin(); 1126 ToBrowserAccessibilityWin(manager->GetRoot());
1128 ASSERT_NE(nullptr, root_accessible); 1127 ASSERT_NE(nullptr, root_accessible);
1129 ASSERT_EQ(2U, root_accessible->PlatformChildCount()); 1128 ASSERT_EQ(2U, root_accessible->PlatformChildCount());
1130 1129
1131 BrowserAccessibilityWin* textarea_accessible = 1130 BrowserAccessibilityWin* textarea_accessible =
1132 root_accessible->PlatformGetChild(0)->ToBrowserAccessibilityWin(); 1131 ToBrowserAccessibilityWin(root_accessible->PlatformGetChild(0));
1133 ASSERT_NE(nullptr, textarea_accessible); 1132 ASSERT_NE(nullptr, textarea_accessible);
1134 BrowserAccessibilityWin* text_field_accessible = 1133 BrowserAccessibilityWin* text_field_accessible =
1135 root_accessible->PlatformGetChild(1)->ToBrowserAccessibilityWin(); 1134 ToBrowserAccessibilityWin(root_accessible->PlatformGetChild(1));
1136 ASSERT_NE(nullptr, text_field_accessible); 1135 ASSERT_NE(nullptr, text_field_accessible);
1137 1136
1138 base::win::ScopedComPtr<IAccessibleText> textarea_object; 1137 base::win::ScopedComPtr<IAccessibleText> textarea_object;
1139 EXPECT_HRESULT_SUCCEEDED(textarea_accessible->QueryInterface( 1138 EXPECT_HRESULT_SUCCEEDED(textarea_accessible->QueryInterface(
1140 IID_IAccessibleText, 1139 IID_IAccessibleText,
1141 reinterpret_cast<void**>(textarea_object.Receive()))); 1140 reinterpret_cast<void**>(textarea_object.Receive())));
1142 base::win::ScopedComPtr<IAccessibleText> text_field_object; 1141 base::win::ScopedComPtr<IAccessibleText> text_field_object;
1143 EXPECT_HRESULT_SUCCEEDED(text_field_accessible->QueryInterface( 1142 EXPECT_HRESULT_SUCCEEDED(text_field_accessible->QueryInterface(
1144 IID_IAccessibleText, 1143 IID_IAccessibleText,
1145 reinterpret_cast<void**>(text_field_object.Receive()))); 1144 reinterpret_cast<void**>(text_field_object.Receive())));
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
1216 1215
1217 CountedBrowserAccessibility::reset(); 1216 CountedBrowserAccessibility::reset();
1218 scoped_ptr<BrowserAccessibilityManager> manager( 1217 scoped_ptr<BrowserAccessibilityManager> manager(
1219 BrowserAccessibilityManager::Create( 1218 BrowserAccessibilityManager::Create(
1220 MakeAXTreeUpdate(root, combo_box, text_field), 1219 MakeAXTreeUpdate(root, combo_box, text_field),
1221 nullptr, new CountedBrowserAccessibilityFactory())); 1220 nullptr, new CountedBrowserAccessibilityFactory()));
1222 ASSERT_EQ(3, CountedBrowserAccessibility::num_instances()); 1221 ASSERT_EQ(3, CountedBrowserAccessibility::num_instances());
1223 1222
1224 ASSERT_NE(nullptr, manager->GetRoot()); 1223 ASSERT_NE(nullptr, manager->GetRoot());
1225 BrowserAccessibilityWin* root_accessible = 1224 BrowserAccessibilityWin* root_accessible =
1226 manager->GetRoot()->ToBrowserAccessibilityWin(); 1225 ToBrowserAccessibilityWin(manager->GetRoot());
1227 ASSERT_NE(nullptr, root_accessible); 1226 ASSERT_NE(nullptr, root_accessible);
1228 ASSERT_EQ(2U, root_accessible->PlatformChildCount()); 1227 ASSERT_EQ(2U, root_accessible->PlatformChildCount());
1229 1228
1230 BrowserAccessibilityWin* combo_box_accessible = 1229 BrowserAccessibilityWin* combo_box_accessible =
1231 root_accessible->PlatformGetChild(0)->ToBrowserAccessibilityWin(); 1230 ToBrowserAccessibilityWin(root_accessible->PlatformGetChild(0));
1232 ASSERT_NE(nullptr, combo_box_accessible); 1231 ASSERT_NE(nullptr, combo_box_accessible);
1233 manager->SetFocusLocallyForTesting(combo_box_accessible); 1232 manager->SetFocusLocallyForTesting(combo_box_accessible);
1234 ASSERT_EQ(combo_box_accessible, 1233 ASSERT_EQ(combo_box_accessible,
1235 manager->GetFocus()->ToBrowserAccessibilityWin()); 1234 ToBrowserAccessibilityWin(manager->GetFocus()));
1236 BrowserAccessibilityWin* text_field_accessible = 1235 BrowserAccessibilityWin* text_field_accessible =
1237 root_accessible->PlatformGetChild(1)->ToBrowserAccessibilityWin(); 1236 ToBrowserAccessibilityWin(root_accessible->PlatformGetChild(1));
1238 ASSERT_NE(nullptr, text_field_accessible); 1237 ASSERT_NE(nullptr, text_field_accessible);
1239 1238
1240 // -2 is never a valid offset. 1239 // -2 is never a valid offset.
1241 LONG caret_offset = -2; 1240 LONG caret_offset = -2;
1242 LONG n_selections = -2; 1241 LONG n_selections = -2;
1243 LONG selection_start = -2; 1242 LONG selection_start = -2;
1244 LONG selection_end = -2; 1243 LONG selection_end = -2;
1245 1244
1246 // Test get_caretOffset. 1245 // Test get_caretOffset.
1247 HRESULT hr = combo_box_accessible->get_caretOffset(&caret_offset); 1246 HRESULT hr = combo_box_accessible->get_caretOffset(&caret_offset);
1248 EXPECT_EQ(S_OK, hr); 1247 EXPECT_EQ(S_OK, hr);
1249 EXPECT_EQ(1L, caret_offset); 1248 EXPECT_EQ(1L, caret_offset);
1250 // The caret should be at the end of the selection. 1249 // The caret should be at the end of the selection.
1251 hr = text_field_accessible->get_caretOffset(&caret_offset); 1250 hr = text_field_accessible->get_caretOffset(&caret_offset);
1252 EXPECT_EQ(S_OK, hr); 1251 EXPECT_EQ(S_OK, hr);
1253 EXPECT_EQ(2L, caret_offset); 1252 EXPECT_EQ(2L, caret_offset);
1254 1253
1255 // Move the focus to the text field. 1254 // Move the focus to the text field.
1256 manager->SetFocusLocallyForTesting(text_field_accessible); 1255 manager->SetFocusLocallyForTesting(text_field_accessible);
1257 ASSERT_EQ(text_field_accessible, 1256 ASSERT_EQ(text_field_accessible,
1258 manager->GetFocus()->ToBrowserAccessibilityWin()); 1257 ToBrowserAccessibilityWin(manager->GetFocus()));
1259 1258
1260 // The caret should not have moved. 1259 // The caret should not have moved.
1261 hr = text_field_accessible->get_caretOffset(&caret_offset); 1260 hr = text_field_accessible->get_caretOffset(&caret_offset);
1262 EXPECT_EQ(S_OK, hr); 1261 EXPECT_EQ(S_OK, hr);
1263 EXPECT_EQ(2L, caret_offset); 1262 EXPECT_EQ(2L, caret_offset);
1264 1263
1265 // Test get_nSelections. 1264 // Test get_nSelections.
1266 hr = combo_box_accessible->get_nSelections(&n_selections); 1265 hr = combo_box_accessible->get_nSelections(&n_selections);
1267 EXPECT_EQ(S_OK, hr); 1266 EXPECT_EQ(S_OK, hr);
1268 EXPECT_EQ(0L, n_selections); 1267 EXPECT_EQ(0L, n_selections);
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
1336 1335
1337 CountedBrowserAccessibility::reset(); 1336 CountedBrowserAccessibility::reset();
1338 scoped_ptr<BrowserAccessibilityManager> manager( 1337 scoped_ptr<BrowserAccessibilityManager> manager(
1339 BrowserAccessibilityManager::Create( 1338 BrowserAccessibilityManager::Create(
1340 update, 1339 update,
1341 nullptr, new CountedBrowserAccessibilityFactory())); 1340 nullptr, new CountedBrowserAccessibilityFactory()));
1342 ASSERT_EQ(5, CountedBrowserAccessibility::num_instances()); 1341 ASSERT_EQ(5, CountedBrowserAccessibility::num_instances());
1343 1342
1344 ASSERT_NE(nullptr, manager->GetRoot()); 1343 ASSERT_NE(nullptr, manager->GetRoot());
1345 BrowserAccessibilityWin* root_accessible = 1344 BrowserAccessibilityWin* root_accessible =
1346 manager->GetRoot()->ToBrowserAccessibilityWin(); 1345 ToBrowserAccessibilityWin(manager->GetRoot());
1347 ASSERT_NE(nullptr, root_accessible); 1346 ASSERT_NE(nullptr, root_accessible);
1348 ASSERT_EQ(1U, root_accessible->PlatformChildCount()); 1347 ASSERT_EQ(1U, root_accessible->PlatformChildCount());
1349 1348
1350 BrowserAccessibilityWin* div_editable_accessible = 1349 BrowserAccessibilityWin* div_editable_accessible =
1351 root_accessible->PlatformGetChild(0)->ToBrowserAccessibilityWin(); 1350 ToBrowserAccessibilityWin(root_accessible->PlatformGetChild(0));
1352 ASSERT_NE(nullptr, div_editable_accessible); 1351 ASSERT_NE(nullptr, div_editable_accessible);
1353 ASSERT_EQ(2U, div_editable_accessible->PlatformChildCount()); 1352 ASSERT_EQ(2U, div_editable_accessible->PlatformChildCount());
1354 1353
1355 // -2 is never a valid offset. 1354 // -2 is never a valid offset.
1356 LONG caret_offset = -2; 1355 LONG caret_offset = -2;
1357 LONG n_selections = -2; 1356 LONG n_selections = -2;
1358 1357
1359 // No selection should be present. 1358 // No selection should be present.
1360 HRESULT hr = div_editable_accessible->get_nSelections(&n_selections); 1359 HRESULT hr = div_editable_accessible->get_nSelections(&n_selections);
1361 EXPECT_EQ(S_OK, hr); 1360 EXPECT_EQ(S_OK, hr);
1362 EXPECT_EQ(0L, n_selections); 1361 EXPECT_EQ(0L, n_selections);
1363 1362
1364 // The caret should be on the embedded object character. 1363 // The caret should be on the embedded object character.
1365 hr = div_editable_accessible->get_caretOffset(&caret_offset); 1364 hr = div_editable_accessible->get_caretOffset(&caret_offset);
1366 EXPECT_EQ(S_OK, hr); 1365 EXPECT_EQ(S_OK, hr);
1367 EXPECT_EQ(6L, caret_offset); 1366 EXPECT_EQ(6L, caret_offset);
1368 1367
1369 // Move the focus to the content editable. 1368 // Move the focus to the content editable.
1370 manager->SetFocusLocallyForTesting(div_editable_accessible); 1369 manager->SetFocusLocallyForTesting(div_editable_accessible);
1371 ASSERT_EQ(div_editable_accessible, 1370 ASSERT_EQ(div_editable_accessible,
1372 manager->GetFocus()->ToBrowserAccessibilityWin()); 1371 ToBrowserAccessibilityWin(manager->GetFocus()));
1373 1372
1374 BrowserAccessibilityWin* text_accessible = 1373 BrowserAccessibilityWin* text_accessible =
1375 div_editable_accessible->PlatformGetChild(0)->ToBrowserAccessibilityWin(); 1374 ToBrowserAccessibilityWin(div_editable_accessible->PlatformGetChild(0));
1376 ASSERT_NE(nullptr, text_accessible); 1375 ASSERT_NE(nullptr, text_accessible);
1377 BrowserAccessibilityWin* link_accessible = 1376 BrowserAccessibilityWin* link_accessible =
1378 div_editable_accessible->PlatformGetChild(1)->ToBrowserAccessibilityWin(); 1377 ToBrowserAccessibilityWin(div_editable_accessible->PlatformGetChild(1));
1379 ASSERT_NE(nullptr, link_accessible); 1378 ASSERT_NE(nullptr, link_accessible);
1380 ASSERT_EQ(1U, link_accessible->PlatformChildCount()); 1379 ASSERT_EQ(1U, link_accessible->PlatformChildCount());
1381 1380
1382 BrowserAccessibilityWin* link_text_accessible = 1381 BrowserAccessibilityWin* link_text_accessible =
1383 link_accessible->PlatformGetChild(0)->ToBrowserAccessibilityWin(); 1382 ToBrowserAccessibilityWin(link_accessible->PlatformGetChild(0));
1384 ASSERT_NE(nullptr, link_text_accessible); 1383 ASSERT_NE(nullptr, link_text_accessible);
1385 1384
1386 // The caret should not have moved. 1385 // The caret should not have moved.
1387 hr = div_editable_accessible->get_nSelections(&n_selections); 1386 hr = div_editable_accessible->get_nSelections(&n_selections);
1388 EXPECT_EQ(S_OK, hr); 1387 EXPECT_EQ(S_OK, hr);
1389 EXPECT_EQ(0L, n_selections); 1388 EXPECT_EQ(0L, n_selections);
1390 hr = div_editable_accessible->get_caretOffset(&caret_offset); 1389 hr = div_editable_accessible->get_caretOffset(&caret_offset);
1391 EXPECT_EQ(S_OK, hr); 1390 EXPECT_EQ(S_OK, hr);
1392 EXPECT_EQ(6L, caret_offset); 1391 EXPECT_EQ(6L, caret_offset);
1393 1392
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
1454 1453
1455 CountedBrowserAccessibility::reset(); 1454 CountedBrowserAccessibility::reset();
1456 scoped_ptr<BrowserAccessibilityManager> manager( 1455 scoped_ptr<BrowserAccessibilityManager> manager(
1457 BrowserAccessibilityManager::Create( 1456 BrowserAccessibilityManager::Create(
1458 update, 1457 update,
1459 nullptr, new CountedBrowserAccessibilityFactory())); 1458 nullptr, new CountedBrowserAccessibilityFactory()));
1460 ASSERT_EQ(5, CountedBrowserAccessibility::num_instances()); 1459 ASSERT_EQ(5, CountedBrowserAccessibility::num_instances());
1461 1460
1462 ASSERT_NE(nullptr, manager->GetRoot()); 1461 ASSERT_NE(nullptr, manager->GetRoot());
1463 BrowserAccessibilityWin* root_accessible = 1462 BrowserAccessibilityWin* root_accessible =
1464 manager->GetRoot()->ToBrowserAccessibilityWin(); 1463 ToBrowserAccessibilityWin(manager->GetRoot());
1465 ASSERT_NE(nullptr, root_accessible); 1464 ASSERT_NE(nullptr, root_accessible);
1466 ASSERT_EQ(1U, root_accessible->PlatformChildCount()); 1465 ASSERT_EQ(1U, root_accessible->PlatformChildCount());
1467 1466
1468 BrowserAccessibilityWin* div_editable_accessible = 1467 BrowserAccessibilityWin* div_editable_accessible =
1469 root_accessible->PlatformGetChild(0)->ToBrowserAccessibilityWin(); 1468 ToBrowserAccessibilityWin(root_accessible->PlatformGetChild(0));
1470 ASSERT_NE(nullptr, div_editable_accessible); 1469 ASSERT_NE(nullptr, div_editable_accessible);
1471 ASSERT_EQ(2U, div_editable_accessible->PlatformChildCount()); 1470 ASSERT_EQ(2U, div_editable_accessible->PlatformChildCount());
1472 1471
1473 // -2 is never a valid offset. 1472 // -2 is never a valid offset.
1474 LONG caret_offset = -2; 1473 LONG caret_offset = -2;
1475 LONG n_selections = -2; 1474 LONG n_selections = -2;
1476 LONG selection_start = -2; 1475 LONG selection_start = -2;
1477 LONG selection_end = -2; 1476 LONG selection_end = -2;
1478 1477
1479 BrowserAccessibilityWin* text_accessible = 1478 BrowserAccessibilityWin* text_accessible =
1480 div_editable_accessible->PlatformGetChild(0)->ToBrowserAccessibilityWin(); 1479 ToBrowserAccessibilityWin(div_editable_accessible->PlatformGetChild(0));
1481 ASSERT_NE(nullptr, text_accessible); 1480 ASSERT_NE(nullptr, text_accessible);
1482 BrowserAccessibilityWin* link_accessible = 1481 BrowserAccessibilityWin* link_accessible =
1483 div_editable_accessible->PlatformGetChild(1)->ToBrowserAccessibilityWin(); 1482 ToBrowserAccessibilityWin(div_editable_accessible->PlatformGetChild(1));
1484 ASSERT_NE(nullptr, link_accessible); 1483 ASSERT_NE(nullptr, link_accessible);
1485 ASSERT_EQ(1U, link_accessible->PlatformChildCount()); 1484 ASSERT_EQ(1U, link_accessible->PlatformChildCount());
1486 1485
1487 BrowserAccessibilityWin* link_text_accessible = 1486 BrowserAccessibilityWin* link_text_accessible =
1488 link_accessible->PlatformGetChild(0)->ToBrowserAccessibilityWin(); 1487 ToBrowserAccessibilityWin(link_accessible->PlatformGetChild(0));
1489 ASSERT_NE(nullptr, link_text_accessible); 1488 ASSERT_NE(nullptr, link_text_accessible);
1490 1489
1491 // get_nSelections should work on all objects. 1490 // get_nSelections should work on all objects.
1492 HRESULT hr = div_editable_accessible->get_nSelections(&n_selections); 1491 HRESULT hr = div_editable_accessible->get_nSelections(&n_selections);
1493 EXPECT_EQ(S_OK, hr); 1492 EXPECT_EQ(S_OK, hr);
1494 EXPECT_EQ(1L, n_selections); 1493 EXPECT_EQ(1L, n_selections);
1495 hr = text_accessible->get_nSelections(&n_selections); 1494 hr = text_accessible->get_nSelections(&n_selections);
1496 EXPECT_EQ(S_OK, hr); 1495 EXPECT_EQ(S_OK, hr);
1497 EXPECT_EQ(1L, n_selections); 1496 EXPECT_EQ(1L, n_selections);
1498 hr = link_accessible->get_nSelections(&n_selections); 1497 hr = link_accessible->get_nSelections(&n_selections);
(...skipping 29 matching lines...) Expand all
1528 EXPECT_EQ(4L, selection_end); 1527 EXPECT_EQ(4L, selection_end);
1529 1528
1530 // The caret should be at the focus (the end) of the selection. 1529 // The caret should be at the focus (the end) of the selection.
1531 hr = div_editable_accessible->get_caretOffset(&caret_offset); 1530 hr = div_editable_accessible->get_caretOffset(&caret_offset);
1532 EXPECT_EQ(S_OK, hr); 1531 EXPECT_EQ(S_OK, hr);
1533 EXPECT_EQ(7L, caret_offset); 1532 EXPECT_EQ(7L, caret_offset);
1534 1533
1535 // Move the focus to the content editable. 1534 // Move the focus to the content editable.
1536 manager->SetFocusLocallyForTesting(div_editable_accessible); 1535 manager->SetFocusLocallyForTesting(div_editable_accessible);
1537 ASSERT_EQ(div_editable_accessible, 1536 ASSERT_EQ(div_editable_accessible,
1538 manager->GetFocus()->ToBrowserAccessibilityWin()); 1537 ToBrowserAccessibilityWin(manager->GetFocus()));
1539 1538
1540 // The caret should not have moved. 1539 // The caret should not have moved.
1541 hr = div_editable_accessible->get_caretOffset(&caret_offset); 1540 hr = div_editable_accessible->get_caretOffset(&caret_offset);
1542 EXPECT_EQ(S_OK, hr); 1541 EXPECT_EQ(S_OK, hr);
1543 EXPECT_EQ(7L, caret_offset); 1542 EXPECT_EQ(7L, caret_offset);
1544 1543
1545 // The caret offset should reflect the position of the selection's focus in 1544 // The caret offset should reflect the position of the selection's focus in
1546 // any given object. 1545 // any given object.
1547 hr = link_accessible->get_caretOffset(&caret_offset); 1546 hr = link_accessible->get_caretOffset(&caret_offset);
1548 EXPECT_EQ(S_OK, hr); 1547 EXPECT_EQ(S_OK, hr);
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
1590 1589
1591 CountedBrowserAccessibility::reset(); 1590 CountedBrowserAccessibility::reset();
1592 scoped_ptr<BrowserAccessibilityManager> manager( 1591 scoped_ptr<BrowserAccessibilityManager> manager(
1593 BrowserAccessibilityManager::Create( 1592 BrowserAccessibilityManager::Create(
1594 MakeAXTreeUpdate(root, div, link, text), nullptr, 1593 MakeAXTreeUpdate(root, div, link, text), nullptr,
1595 new CountedBrowserAccessibilityFactory())); 1594 new CountedBrowserAccessibilityFactory()));
1596 ASSERT_EQ(4, CountedBrowserAccessibility::num_instances()); 1595 ASSERT_EQ(4, CountedBrowserAccessibility::num_instances());
1597 1596
1598 ASSERT_NE(nullptr, manager->GetRoot()); 1597 ASSERT_NE(nullptr, manager->GetRoot());
1599 BrowserAccessibilityWin* root_accessible = 1598 BrowserAccessibilityWin* root_accessible =
1600 manager->GetRoot()->ToBrowserAccessibilityWin(); 1599 ToBrowserAccessibilityWin(manager->GetRoot());
1601 ASSERT_NE(nullptr, root_accessible); 1600 ASSERT_NE(nullptr, root_accessible);
1602 ASSERT_EQ(1U, root_accessible->PlatformChildCount()); 1601 ASSERT_EQ(1U, root_accessible->PlatformChildCount());
1603 1602
1604 BrowserAccessibilityWin* div_accessible = 1603 BrowserAccessibilityWin* div_accessible =
1605 root_accessible->PlatformGetChild(0)->ToBrowserAccessibilityWin(); 1604 ToBrowserAccessibilityWin(root_accessible->PlatformGetChild(0));
1606 ASSERT_NE(nullptr, div_accessible); 1605 ASSERT_NE(nullptr, div_accessible);
1607 ASSERT_EQ(2U, div_accessible->PlatformChildCount()); 1606 ASSERT_EQ(2U, div_accessible->PlatformChildCount());
1608 1607
1609 BrowserAccessibilityWin* text_accessible = 1608 BrowserAccessibilityWin* text_accessible =
1610 div_accessible->PlatformGetChild(0)->ToBrowserAccessibilityWin(); 1609 ToBrowserAccessibilityWin(div_accessible->PlatformGetChild(0));
1611 ASSERT_NE(nullptr, text_accessible); 1610 ASSERT_NE(nullptr, text_accessible);
1612 BrowserAccessibilityWin* link_accessible = 1611 BrowserAccessibilityWin* link_accessible =
1613 div_accessible->PlatformGetChild(1)->ToBrowserAccessibilityWin(); 1612 ToBrowserAccessibilityWin(div_accessible->PlatformGetChild(1));
1614 ASSERT_NE(nullptr, link_accessible); 1613 ASSERT_NE(nullptr, link_accessible);
1615 1614
1616 // -1 is never a valid value. 1615 // -1 is never a valid value.
1617 LONG n_actions = -1; 1616 LONG n_actions = -1;
1618 LONG start_index = -1; 1617 LONG start_index = -1;
1619 LONG end_index = -1; 1618 LONG end_index = -1;
1620 1619
1621 base::win::ScopedComPtr<IAccessibleHyperlink> hyperlink; 1620 base::win::ScopedComPtr<IAccessibleHyperlink> hyperlink;
1622 base::win::ScopedVariant anchor; 1621 base::win::ScopedVariant anchor;
1623 base::win::ScopedVariant anchor_target; 1622 base::win::ScopedVariant anchor_target;
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
1810 child_node.id = 2; 1809 child_node.id = 2;
1811 root_node.child_ids.push_back(2); 1810 root_node.child_ids.push_back(2);
1812 1811
1813 scoped_ptr<BrowserAccessibilityManagerWin> manager( 1812 scoped_ptr<BrowserAccessibilityManagerWin> manager(
1814 new BrowserAccessibilityManagerWin( 1813 new BrowserAccessibilityManagerWin(
1815 MakeAXTreeUpdate(root_node, child_node), 1814 MakeAXTreeUpdate(root_node, child_node),
1816 nullptr, 1815 nullptr,
1817 new CountedBrowserAccessibilityFactory())); 1816 new CountedBrowserAccessibilityFactory()));
1818 1817
1819 BrowserAccessibility* root = manager->GetRoot(); 1818 BrowserAccessibility* root = manager->GetRoot();
1820 LONG root_unique_id = root->ToBrowserAccessibilityWin()->unique_id_win(); 1819 int32_t root_unique_id = root->unique_id();
1821 BrowserAccessibility* child = root->PlatformGetChild(0); 1820 BrowserAccessibility* child = root->PlatformGetChild(0);
1822 LONG child_unique_id = child->ToBrowserAccessibilityWin()->unique_id_win(); 1821 int32_t child_unique_id = child->unique_id();
1823 1822
1824 // Now destroy that original tree and create a new tree. 1823 // Now destroy that original tree and create a new tree.
1825 manager.reset( 1824 manager.reset(
1826 new BrowserAccessibilityManagerWin( 1825 new BrowserAccessibilityManagerWin(
1827 MakeAXTreeUpdate(root_node, child_node), 1826 MakeAXTreeUpdate(root_node, child_node),
1828 nullptr, 1827 nullptr,
1829 new CountedBrowserAccessibilityFactory())); 1828 new CountedBrowserAccessibilityFactory()));
1830 root = manager->GetRoot(); 1829 root = manager->GetRoot();
1831 LONG root_unique_id_2 = root->ToBrowserAccessibilityWin()->unique_id_win(); 1830 int32_t root_unique_id_2 = root->unique_id();
1832 child = root->PlatformGetChild(0); 1831 child = root->PlatformGetChild(0);
1833 LONG child_unique_id_2 = child->ToBrowserAccessibilityWin()->unique_id_win(); 1832 int32_t child_unique_id_2 = child->unique_id();
1834 1833
1835 // The nodes in the new tree should not have the same ids. 1834 // The nodes in the new tree should not have the same ids.
1836 EXPECT_NE(root_unique_id, root_unique_id_2); 1835 EXPECT_NE(root_unique_id, root_unique_id_2);
1837 EXPECT_NE(child_unique_id, child_unique_id_2); 1836 EXPECT_NE(child_unique_id, child_unique_id_2);
1838 1837
1839 // Trying to access the unique IDs of the old, deleted objects should fail. 1838 // Trying to access the unique IDs of the old, deleted objects should fail.
1840 base::win::ScopedVariant old_root_variant(root_unique_id); 1839 base::win::ScopedVariant old_root_variant(-root_unique_id);
1841 base::win::ScopedComPtr<IDispatch> old_root_dispatch; 1840 base::win::ScopedComPtr<IDispatch> old_root_dispatch;
1842 HRESULT hr = root->ToBrowserAccessibilityWin()->get_accChild( 1841 HRESULT hr = ToBrowserAccessibilityWin(root)->get_accChild(
1843 old_root_variant, old_root_dispatch.Receive()); 1842 old_root_variant, old_root_dispatch.Receive());
1844 EXPECT_EQ(E_INVALIDARG, hr); 1843 EXPECT_EQ(E_INVALIDARG, hr);
1845 1844
1846 base::win::ScopedVariant old_child_variant(child_unique_id); 1845 base::win::ScopedVariant old_child_variant(-child_unique_id);
1847 base::win::ScopedComPtr<IDispatch> old_child_dispatch; 1846 base::win::ScopedComPtr<IDispatch> old_child_dispatch;
1848 hr = root->ToBrowserAccessibilityWin()->get_accChild( 1847 hr = ToBrowserAccessibilityWin(root)->get_accChild(
1849 old_child_variant, old_child_dispatch.Receive()); 1848 old_child_variant, old_child_dispatch.Receive());
1850 EXPECT_EQ(E_INVALIDARG, hr); 1849 EXPECT_EQ(E_INVALIDARG, hr);
1851 1850
1852 // Trying to access the unique IDs of the new objects should succeed. 1851 // Trying to access the unique IDs of the new objects should succeed.
1853 base::win::ScopedVariant new_root_variant(root_unique_id_2); 1852 base::win::ScopedVariant new_root_variant(-root_unique_id_2);
1854 base::win::ScopedComPtr<IDispatch> new_root_dispatch; 1853 base::win::ScopedComPtr<IDispatch> new_root_dispatch;
1855 hr = root->ToBrowserAccessibilityWin()->get_accChild( 1854 hr = ToBrowserAccessibilityWin(root)->get_accChild(
1856 new_root_variant, new_root_dispatch.Receive()); 1855 new_root_variant, new_root_dispatch.Receive());
1857 EXPECT_EQ(S_OK, hr); 1856 EXPECT_EQ(S_OK, hr);
1858 1857
1859 base::win::ScopedVariant new_child_variant(child_unique_id_2); 1858 base::win::ScopedVariant new_child_variant(-child_unique_id_2);
1860 base::win::ScopedComPtr<IDispatch> new_child_dispatch; 1859 base::win::ScopedComPtr<IDispatch> new_child_dispatch;
1861 hr = root->ToBrowserAccessibilityWin()->get_accChild( 1860 hr = ToBrowserAccessibilityWin(root)->get_accChild(
1862 new_child_variant, new_child_dispatch.Receive()); 1861 new_child_variant, new_child_dispatch.Receive());
1863 EXPECT_EQ(S_OK, hr); 1862 EXPECT_EQ(S_OK, hr);
1864 } 1863 }
1865 1864
1866 } // namespace content 1865 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698