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

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

Issue 1231603009: Re-land: Reimplement automation API on top of C++-backed AXTree. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix nested event sending in AutomationManagerAura Created 5 years, 5 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 "base/strings/string16.h" 5 #include "base/strings/string16.h"
6 #include "base/strings/utf_string_conversions.h" 6 #include "base/strings/utf_string_conversions.h"
7 #include "content/browser/accessibility/browser_accessibility.h" 7 #include "content/browser/accessibility/browser_accessibility.h"
8 #include "content/browser/accessibility/browser_accessibility_manager.h" 8 #include "content/browser/accessibility/browser_accessibility_manager.h"
9 #if defined(OS_WIN) 9 #if defined(OS_WIN)
10 #include "content/browser/accessibility/browser_accessibility_win.h" 10 #include "content/browser/accessibility/browser_accessibility_win.h"
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
83 const gfx::Rect& bounds) const override { 83 const gfx::Rect& bounds) const override {
84 return gfx::Point(); 84 return gfx::Point();
85 } 85 }
86 void AccessibilityHitTest(const gfx::Point& point) override {} 86 void AccessibilityHitTest(const gfx::Point& point) override {}
87 void AccessibilitySetAccessibilityFocus(int acc_obj_id) override {} 87 void AccessibilitySetAccessibilityFocus(int acc_obj_id) override {}
88 void AccessibilityFatalError() override { got_fatal_error_ = true; } 88 void AccessibilityFatalError() override { got_fatal_error_ = true; }
89 gfx::AcceleratedWidget AccessibilityGetAcceleratedWidget() override { 89 gfx::AcceleratedWidget AccessibilityGetAcceleratedWidget() override {
90 return gfx::kNullAcceleratedWidget; 90 return gfx::kNullAcceleratedWidget;
91 } 91 }
92 gfx::NativeViewAccessible AccessibilityGetNativeViewAccessible() override { 92 gfx::NativeViewAccessible AccessibilityGetNativeViewAccessible() override {
93 return NULL; 93 return nullptr;
94 } 94 }
95 BrowserAccessibilityManager* AccessibilityGetChildFrame( 95 BrowserAccessibilityManager* AccessibilityGetChildFrame(
96 int accessibility_node_id) override { 96 int accessibility_node_id) override {
97 return NULL; 97 return nullptr;
98 } 98 }
99 BrowserAccessibility* AccessibilityGetParentFrame() override { return NULL; } 99 BrowserAccessibility* AccessibilityGetParentFrame() override {
100 return nullptr;
101 }
100 void AccessibilityGetAllChildFrames( 102 void AccessibilityGetAllChildFrames(
101 std::vector<BrowserAccessibilityManager*>* child_frames) override {} 103 std::vector<BrowserAccessibilityManager*>* child_frames) override {}
102 104
103 bool got_fatal_error() const { return got_fatal_error_; } 105 bool got_fatal_error() const { return got_fatal_error_; }
104 void reset_got_fatal_error() { got_fatal_error_ = false; } 106 void reset_got_fatal_error() { got_fatal_error_ = false; }
105 107
106 private: 108 private:
107 bool got_fatal_error_; 109 bool got_fatal_error_;
108 }; 110 };
109 111
(...skipping 24 matching lines...) Expand all
134 root.child_ids.push_back(3); 136 root.child_ids.push_back(3);
135 137
136 // Construct a BrowserAccessibilityManager with this 138 // Construct a BrowserAccessibilityManager with this
137 // ui::AXNodeData tree and a factory for an instance-counting 139 // ui::AXNodeData tree and a factory for an instance-counting
138 // BrowserAccessibility, and ensure that exactly 3 instances were 140 // BrowserAccessibility, and ensure that exactly 3 instances were
139 // created. Note that the manager takes ownership of the factory. 141 // created. Note that the manager takes ownership of the factory.
140 CountedBrowserAccessibility::global_obj_count_ = 0; 142 CountedBrowserAccessibility::global_obj_count_ = 0;
141 BrowserAccessibilityManager* manager = 143 BrowserAccessibilityManager* manager =
142 BrowserAccessibilityManager::Create( 144 BrowserAccessibilityManager::Create(
143 MakeAXTreeUpdate(root, button, checkbox), 145 MakeAXTreeUpdate(root, button, checkbox),
144 NULL, 146 nullptr,
145 new CountedBrowserAccessibilityFactory()); 147 new CountedBrowserAccessibilityFactory());
146 148
147 ASSERT_EQ(3, CountedBrowserAccessibility::global_obj_count_); 149 ASSERT_EQ(3, CountedBrowserAccessibility::global_obj_count_);
148 150
149 // Delete the manager and test that all 3 instances are deleted. 151 // Delete the manager and test that all 3 instances are deleted.
150 delete manager; 152 delete manager;
151 ASSERT_EQ(0, CountedBrowserAccessibility::global_obj_count_); 153 ASSERT_EQ(0, CountedBrowserAccessibility::global_obj_count_);
152 154
153 // Construct a manager again, and this time save references to two of 155 // Construct a manager again, and this time save references to two of
154 // the three nodes in the tree. 156 // the three nodes in the tree.
155 manager = 157 manager =
156 BrowserAccessibilityManager::Create( 158 BrowserAccessibilityManager::Create(
157 MakeAXTreeUpdate(root, button, checkbox), 159 MakeAXTreeUpdate(root, button, checkbox),
158 NULL, 160 nullptr,
159 new CountedBrowserAccessibilityFactory()); 161 new CountedBrowserAccessibilityFactory());
160 ASSERT_EQ(3, CountedBrowserAccessibility::global_obj_count_); 162 ASSERT_EQ(3, CountedBrowserAccessibility::global_obj_count_);
161 163
162 CountedBrowserAccessibility* root_accessible = 164 CountedBrowserAccessibility* root_accessible =
163 static_cast<CountedBrowserAccessibility*>(manager->GetRoot()); 165 static_cast<CountedBrowserAccessibility*>(manager->GetRoot());
164 root_accessible->NativeAddReference(); 166 root_accessible->NativeAddReference();
165 CountedBrowserAccessibility* child1_accessible = 167 CountedBrowserAccessibility* child1_accessible =
166 static_cast<CountedBrowserAccessibility*>( 168 static_cast<CountedBrowserAccessibility*>(
167 root_accessible->PlatformGetChild(1)); 169 root_accessible->PlatformGetChild(1));
168 child1_accessible->NativeAddReference(); 170 child1_accessible->NativeAddReference();
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
239 tree2_root.child_ids.push_back(5); 241 tree2_root.child_ids.push_back(5);
240 tree2_root.child_ids.push_back(2); 242 tree2_root.child_ids.push_back(2);
241 tree2_root.child_ids.push_back(3); 243 tree2_root.child_ids.push_back(3);
242 244
243 // Construct a BrowserAccessibilityManager with tree1. 245 // Construct a BrowserAccessibilityManager with tree1.
244 CountedBrowserAccessibility::global_obj_count_ = 0; 246 CountedBrowserAccessibility::global_obj_count_ = 0;
245 BrowserAccessibilityManager* manager = 247 BrowserAccessibilityManager* manager =
246 BrowserAccessibilityManager::Create( 248 BrowserAccessibilityManager::Create(
247 MakeAXTreeUpdate(tree1_root, 249 MakeAXTreeUpdate(tree1_root,
248 tree1_child1, tree1_child2, tree1_child3), 250 tree1_child1, tree1_child2, tree1_child3),
249 NULL, 251 nullptr,
250 new CountedBrowserAccessibilityFactory()); 252 new CountedBrowserAccessibilityFactory());
251 ASSERT_EQ(4, CountedBrowserAccessibility::global_obj_count_); 253 ASSERT_EQ(4, CountedBrowserAccessibility::global_obj_count_);
252 254
253 // Save references to all of the objects. 255 // Save references to all of the objects.
254 CountedBrowserAccessibility* root_accessible = 256 CountedBrowserAccessibility* root_accessible =
255 static_cast<CountedBrowserAccessibility*>(manager->GetRoot()); 257 static_cast<CountedBrowserAccessibility*>(manager->GetRoot());
256 root_accessible->NativeAddReference(); 258 root_accessible->NativeAddReference();
257 CountedBrowserAccessibility* child1_accessible = 259 CountedBrowserAccessibility* child1_accessible =
258 static_cast<CountedBrowserAccessibility*>( 260 static_cast<CountedBrowserAccessibility*>(
259 root_accessible->PlatformGetChild(0)); 261 root_accessible->PlatformGetChild(0));
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
415 tree2_container.child_ids.push_back(5); 417 tree2_container.child_ids.push_back(5);
416 418
417 // Construct a BrowserAccessibilityManager with tree1. 419 // Construct a BrowserAccessibilityManager with tree1.
418 CountedBrowserAccessibility::global_obj_count_ = 0; 420 CountedBrowserAccessibility::global_obj_count_ = 0;
419 BrowserAccessibilityManager* manager = 421 BrowserAccessibilityManager* manager =
420 BrowserAccessibilityManager::Create( 422 BrowserAccessibilityManager::Create(
421 MakeAXTreeUpdate(tree1_root, tree1_container, 423 MakeAXTreeUpdate(tree1_root, tree1_container,
422 tree1_child1, tree1_grandchild1, 424 tree1_child1, tree1_grandchild1,
423 tree1_child2, tree1_grandchild2, 425 tree1_child2, tree1_grandchild2,
424 tree1_child3, tree1_grandchild3), 426 tree1_child3, tree1_grandchild3),
425 NULL, 427 nullptr,
426 new CountedBrowserAccessibilityFactory()); 428 new CountedBrowserAccessibilityFactory());
427 ASSERT_EQ(8, CountedBrowserAccessibility::global_obj_count_); 429 ASSERT_EQ(8, CountedBrowserAccessibility::global_obj_count_);
428 430
429 // Save references to some objects. 431 // Save references to some objects.
430 CountedBrowserAccessibility* root_accessible = 432 CountedBrowserAccessibility* root_accessible =
431 static_cast<CountedBrowserAccessibility*>(manager->GetRoot()); 433 static_cast<CountedBrowserAccessibility*>(manager->GetRoot());
432 root_accessible->NativeAddReference(); 434 root_accessible->NativeAddReference();
433 CountedBrowserAccessibility* container_accessible = 435 CountedBrowserAccessibility* container_accessible =
434 static_cast<CountedBrowserAccessibility*>( 436 static_cast<CountedBrowserAccessibility*>(
435 root_accessible->PlatformGetChild(0)); 437 root_accessible->PlatformGetChild(0));
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
543 tree2_1.id = 1; 545 tree2_1.id = 1;
544 tree2_1.state = 0; 546 tree2_1.state = 0;
545 tree2_1.child_ids.push_back(4); 547 tree2_1.child_ids.push_back(4);
546 tree2_1.child_ids.push_back(5); 548 tree2_1.child_ids.push_back(5);
547 549
548 // Construct a BrowserAccessibilityManager with tree1. 550 // Construct a BrowserAccessibilityManager with tree1.
549 CountedBrowserAccessibility::global_obj_count_ = 0; 551 CountedBrowserAccessibility::global_obj_count_ = 0;
550 BrowserAccessibilityManager* manager = 552 BrowserAccessibilityManager* manager =
551 BrowserAccessibilityManager::Create( 553 BrowserAccessibilityManager::Create(
552 MakeAXTreeUpdate(tree1_1, tree1_2, tree1_3, tree1_4), 554 MakeAXTreeUpdate(tree1_1, tree1_2, tree1_3, tree1_4),
553 NULL, 555 nullptr,
554 new CountedBrowserAccessibilityFactory()); 556 new CountedBrowserAccessibilityFactory());
555 ASSERT_EQ(4, CountedBrowserAccessibility::global_obj_count_); 557 ASSERT_EQ(4, CountedBrowserAccessibility::global_obj_count_);
556 558
557 // Process a notification containing the changed subtree. 559 // Process a notification containing the changed subtree.
558 std::vector<AccessibilityHostMsg_EventParams> params; 560 std::vector<AccessibilityHostMsg_EventParams> params;
559 params.push_back(AccessibilityHostMsg_EventParams()); 561 params.push_back(AccessibilityHostMsg_EventParams());
560 AccessibilityHostMsg_EventParams* msg = &params[0]; 562 AccessibilityHostMsg_EventParams* msg = &params[0];
561 msg->event_type = ui::AX_EVENT_CHILDREN_CHANGED; 563 msg->event_type = ui::AX_EVENT_CHILDREN_CHANGED;
562 msg->update.nodes.push_back(tree2_1); 564 msg->update.nodes.push_back(tree2_1);
563 msg->update.nodes.push_back(tree2_4); 565 msg->update.nodes.push_back(tree2_4);
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
677 character_offsets2.push_back(20); 679 character_offsets2.push_back(20);
678 character_offsets2.push_back(25); 680 character_offsets2.push_back(25);
679 character_offsets2.push_back(28); 681 character_offsets2.push_back(28);
680 inline_text2.AddIntListAttribute( 682 inline_text2.AddIntListAttribute(
681 ui::AX_ATTR_CHARACTER_OFFSETS, character_offsets2); 683 ui::AX_ATTR_CHARACTER_OFFSETS, character_offsets2);
682 static_text.child_ids.push_back(4); 684 static_text.child_ids.push_back(4);
683 685
684 scoped_ptr<BrowserAccessibilityManager> manager( 686 scoped_ptr<BrowserAccessibilityManager> manager(
685 BrowserAccessibilityManager::Create( 687 BrowserAccessibilityManager::Create(
686 MakeAXTreeUpdate(root, static_text, inline_text1, inline_text2), 688 MakeAXTreeUpdate(root, static_text, inline_text1, inline_text2),
687 NULL, 689 nullptr,
688 new CountedBrowserAccessibilityFactory())); 690 new CountedBrowserAccessibilityFactory()));
689 691
690 BrowserAccessibility* root_accessible = manager->GetRoot(); 692 BrowserAccessibility* root_accessible = manager->GetRoot();
691 BrowserAccessibility* static_text_accessible = 693 BrowserAccessibility* static_text_accessible =
692 root_accessible->PlatformGetChild(0); 694 root_accessible->PlatformGetChild(0);
693 695
694 EXPECT_EQ(gfx::Rect(100, 100, 6, 9).ToString(), 696 EXPECT_EQ(gfx::Rect(100, 100, 6, 9).ToString(),
695 static_text_accessible->GetLocalBoundsForRange(0, 1).ToString()); 697 static_text_accessible->GetLocalBoundsForRange(0, 1).ToString());
696 698
697 EXPECT_EQ(gfx::Rect(100, 100, 26, 9).ToString(), 699 EXPECT_EQ(gfx::Rect(100, 100, 26, 9).ToString(),
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
765 character_offsets2.push_back(10); 767 character_offsets2.push_back(10);
766 character_offsets2.push_back(20); 768 character_offsets2.push_back(20);
767 character_offsets2.push_back(30); 769 character_offsets2.push_back(30);
768 inline_text2.AddIntListAttribute( 770 inline_text2.AddIntListAttribute(
769 ui::AX_ATTR_CHARACTER_OFFSETS, character_offsets2); 771 ui::AX_ATTR_CHARACTER_OFFSETS, character_offsets2);
770 static_text.child_ids.push_back(4); 772 static_text.child_ids.push_back(4);
771 773
772 scoped_ptr<BrowserAccessibilityManager> manager( 774 scoped_ptr<BrowserAccessibilityManager> manager(
773 BrowserAccessibilityManager::Create( 775 BrowserAccessibilityManager::Create(
774 MakeAXTreeUpdate(root, static_text, inline_text1, inline_text2), 776 MakeAXTreeUpdate(root, static_text, inline_text1, inline_text2),
775 NULL, 777 nullptr,
776 new CountedBrowserAccessibilityFactory())); 778 new CountedBrowserAccessibilityFactory()));
777 779
778 BrowserAccessibility* root_accessible = manager->GetRoot(); 780 BrowserAccessibility* root_accessible = manager->GetRoot();
779 BrowserAccessibility* static_text_accessible = 781 BrowserAccessibility* static_text_accessible =
780 root_accessible->PlatformGetChild(0); 782 root_accessible->PlatformGetChild(0);
781 783
782 EXPECT_EQ(gfx::Rect(100, 100, 60, 20).ToString(), 784 EXPECT_EQ(gfx::Rect(100, 100, 60, 20).ToString(),
783 static_text_accessible->GetLocalBoundsForRange(0, 6).ToString()); 785 static_text_accessible->GetLocalBoundsForRange(0, 6).ToString());
784 786
785 EXPECT_EQ(gfx::Rect(100, 100, 10, 20).ToString(), 787 EXPECT_EQ(gfx::Rect(100, 100, 10, 20).ToString(),
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
825 character_offsets1.push_back(6); // 0 827 character_offsets1.push_back(6); // 0
826 character_offsets1.push_back(11); // 1 828 character_offsets1.push_back(11); // 1
827 character_offsets1.push_back(16); // 2 829 character_offsets1.push_back(16); // 2
828 inline_text.AddIntListAttribute( 830 inline_text.AddIntListAttribute(
829 ui::AX_ATTR_CHARACTER_OFFSETS, character_offsets1); 831 ui::AX_ATTR_CHARACTER_OFFSETS, character_offsets1);
830 static_text.child_ids.push_back(3); 832 static_text.child_ids.push_back(3);
831 833
832 scoped_ptr<BrowserAccessibilityManager> manager( 834 scoped_ptr<BrowserAccessibilityManager> manager(
833 BrowserAccessibilityManager::Create( 835 BrowserAccessibilityManager::Create(
834 MakeAXTreeUpdate(root, static_text, inline_text), 836 MakeAXTreeUpdate(root, static_text, inline_text),
835 NULL, 837 nullptr,
836 new CountedBrowserAccessibilityFactory())); 838 new CountedBrowserAccessibilityFactory()));
837 839
838 BrowserAccessibility* root_accessible = manager->GetRoot(); 840 BrowserAccessibility* root_accessible = manager->GetRoot();
839 BrowserAccessibility* static_text_accessible = 841 BrowserAccessibility* static_text_accessible =
840 root_accessible->PlatformGetChild(0); 842 root_accessible->PlatformGetChild(0);
841 843
842 if (manager->UseRootScrollOffsetsWhenComputingBounds()) { 844 if (manager->UseRootScrollOffsetsWhenComputingBounds()) {
843 EXPECT_EQ(gfx::Rect(75, 50, 16, 9).ToString(), 845 EXPECT_EQ(gfx::Rect(75, 50, 16, 9).ToString(),
844 static_text_accessible->GetLocalBoundsForRange(0, 3).ToString()); 846 static_text_accessible->GetLocalBoundsForRange(0, 3).ToString());
845 } else { 847 } else {
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
911 character_offsets2.push_back(20); // 0 913 character_offsets2.push_back(20); // 0
912 character_offsets2.push_back(40); // 1 914 character_offsets2.push_back(40); // 1
913 inline_text2.AddIntListAttribute( 915 inline_text2.AddIntListAttribute(
914 ui::AX_ATTR_CHARACTER_OFFSETS, character_offsets2); 916 ui::AX_ATTR_CHARACTER_OFFSETS, character_offsets2);
915 917
916 scoped_ptr<BrowserAccessibilityManager> manager( 918 scoped_ptr<BrowserAccessibilityManager> manager(
917 BrowserAccessibilityManager::Create( 919 BrowserAccessibilityManager::Create(
918 MakeAXTreeUpdate( 920 MakeAXTreeUpdate(
919 root, div, static_text1, img, 921 root, div, static_text1, img,
920 static_text2, inline_text1, inline_text2), 922 static_text2, inline_text1, inline_text2),
921 NULL, 923 nullptr,
922 new CountedBrowserAccessibilityFactory())); 924 new CountedBrowserAccessibilityFactory()));
923 BrowserAccessibility* root_accessible = manager->GetRoot(); 925 BrowserAccessibility* root_accessible = manager->GetRoot();
924 926
925 EXPECT_EQ(gfx::Rect(100, 100, 20, 20).ToString(), 927 EXPECT_EQ(gfx::Rect(100, 100, 20, 20).ToString(),
926 root_accessible->GetLocalBoundsForRange(0, 1).ToString()); 928 root_accessible->GetLocalBoundsForRange(0, 1).ToString());
927 929
928 EXPECT_EQ(gfx::Rect(100, 100, 40, 20).ToString(), 930 EXPECT_EQ(gfx::Rect(100, 100, 40, 20).ToString(),
929 root_accessible->GetLocalBoundsForRange(0, 2).ToString()); 931 root_accessible->GetLocalBoundsForRange(0, 2).ToString());
930 932
931 EXPECT_EQ(gfx::Rect(100, 100, 80, 20).ToString(), 933 EXPECT_EQ(gfx::Rect(100, 100, 80, 20).ToString(),
(...skipping 26 matching lines...) Expand all
958 node4.id = 4; 960 node4.id = 4;
959 node3.child_ids.push_back(4); 961 node3.child_ids.push_back(4);
960 962
961 ui::AXNodeData node5; 963 ui::AXNodeData node5;
962 node5.id = 5; 964 node5.id = 5;
963 root.child_ids.push_back(5); 965 root.child_ids.push_back(5);
964 966
965 scoped_ptr<BrowserAccessibilityManager> manager( 967 scoped_ptr<BrowserAccessibilityManager> manager(
966 BrowserAccessibilityManager::Create( 968 BrowserAccessibilityManager::Create(
967 MakeAXTreeUpdate(root, node2, node3, node4, node5), 969 MakeAXTreeUpdate(root, node2, node3, node4, node5),
968 NULL, 970 nullptr,
969 new CountedBrowserAccessibilityFactory())); 971 new CountedBrowserAccessibilityFactory()));
970 972
971 BrowserAccessibility* root_accessible = manager->GetRoot(); 973 BrowserAccessibility* root_accessible = manager->GetRoot();
972 BrowserAccessibility* node2_accessible = root_accessible->PlatformGetChild(0); 974 BrowserAccessibility* node2_accessible = root_accessible->PlatformGetChild(0);
973 BrowserAccessibility* node3_accessible = root_accessible->PlatformGetChild(1); 975 BrowserAccessibility* node3_accessible = root_accessible->PlatformGetChild(1);
974 BrowserAccessibility* node4_accessible = 976 BrowserAccessibility* node4_accessible =
975 node3_accessible->PlatformGetChild(0); 977 node3_accessible->PlatformGetChild(0);
976 BrowserAccessibility* node5_accessible = root_accessible->PlatformGetChild(2); 978 BrowserAccessibility* node5_accessible = root_accessible->PlatformGetChild(2);
977 979
978 ASSERT_EQ(NULL, manager->NextInTreeOrder(NULL)); 980 ASSERT_EQ(nullptr, manager->NextInTreeOrder(nullptr));
979 ASSERT_EQ(node2_accessible, manager->NextInTreeOrder(root_accessible)); 981 ASSERT_EQ(node2_accessible, manager->NextInTreeOrder(root_accessible));
980 ASSERT_EQ(node3_accessible, manager->NextInTreeOrder(node2_accessible)); 982 ASSERT_EQ(node3_accessible, manager->NextInTreeOrder(node2_accessible));
981 ASSERT_EQ(node4_accessible, manager->NextInTreeOrder(node3_accessible)); 983 ASSERT_EQ(node4_accessible, manager->NextInTreeOrder(node3_accessible));
982 ASSERT_EQ(node5_accessible, manager->NextInTreeOrder(node4_accessible)); 984 ASSERT_EQ(node5_accessible, manager->NextInTreeOrder(node4_accessible));
983 ASSERT_EQ(NULL, manager->NextInTreeOrder(node5_accessible)); 985 ASSERT_EQ(nullptr, manager->NextInTreeOrder(node5_accessible));
984 986
985 ASSERT_EQ(NULL, manager->PreviousInTreeOrder(NULL)); 987 ASSERT_EQ(nullptr, manager->PreviousInTreeOrder(nullptr));
986 ASSERT_EQ(node4_accessible, manager->PreviousInTreeOrder(node5_accessible)); 988 ASSERT_EQ(node4_accessible, manager->PreviousInTreeOrder(node5_accessible));
987 ASSERT_EQ(node3_accessible, manager->PreviousInTreeOrder(node4_accessible)); 989 ASSERT_EQ(node3_accessible, manager->PreviousInTreeOrder(node4_accessible));
988 ASSERT_EQ(node2_accessible, manager->PreviousInTreeOrder(node3_accessible)); 990 ASSERT_EQ(node2_accessible, manager->PreviousInTreeOrder(node3_accessible));
989 ASSERT_EQ(root_accessible, manager->PreviousInTreeOrder(node2_accessible)); 991 ASSERT_EQ(root_accessible, manager->PreviousInTreeOrder(node2_accessible));
990 } 992 }
991 993
994 TEST(BrowserAccessibilityManagerTest, DeletingFocusedNodeDoesNotCrash) {
995 // Create a really simple tree with one root node and one focused child.
996 ui::AXNodeData root;
997 root.id = 1;
998 root.role = ui::AX_ROLE_ROOT_WEB_AREA;
999 root.state = 0;
1000 root.child_ids.push_back(2);
1001
1002 ui::AXNodeData node2;
1003 node2.id = 2;
1004 node2.state = 1 << ui::AX_STATE_FOCUSED;
1005
1006 scoped_ptr<BrowserAccessibilityManager> manager(
1007 BrowserAccessibilityManager::Create(
1008 MakeAXTreeUpdate(root, node2),
1009 nullptr,
1010 new CountedBrowserAccessibilityFactory()));
1011
1012 ASSERT_EQ(1, manager->GetRoot()->GetId());
1013 ASSERT_EQ(1, manager->GetFocus(manager->GetRoot())->GetId());
1014
1015 // Send the focus event for node 2.
1016 std::vector<AccessibilityHostMsg_EventParams> events;
1017 events.push_back(AccessibilityHostMsg_EventParams());
1018 events[0].update = MakeAXTreeUpdate(node2);
1019 events[0].id = 2;
1020 events[0].event_type = ui::AX_EVENT_FOCUS;
1021 manager->OnAccessibilityEvents(events);
1022
1023 ASSERT_EQ(1, manager->GetRoot()->GetId());
1024 ASSERT_EQ(2, manager->GetFocus(manager->GetRoot())->GetId());
1025
1026 // Now replace the tree with a new tree consisting of a single root.
1027 ui::AXNodeData root2;
1028 root2.id = 3;
1029 root2.role = ui::AX_ROLE_ROOT_WEB_AREA;
1030 root2.state = 0;
1031
1032 std::vector<AccessibilityHostMsg_EventParams> events2;
1033 events2.push_back(AccessibilityHostMsg_EventParams());
1034 events2[0].update = MakeAXTreeUpdate(root2);
1035 events2[0].id = -1;
1036 events2[0].event_type = ui::AX_EVENT_NONE;
1037 manager->OnAccessibilityEvents(events2);
1038
1039 // Make sure that the focused node was updated to the new root and
1040 // that this doesn't crash.
1041 ASSERT_EQ(3, manager->GetRoot()->GetId());
1042 ASSERT_EQ(3, manager->GetFocus(manager->GetRoot())->GetId());
1043 }
1044
992 } // namespace content 1045 } // namespace content
OLDNEW
« no previous file with comments | « chrome/test/data/extensions/api_test/automation/tests/unit/unit.html ('k') | extensions/renderer/logging_native_handler.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698