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

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

Issue 1251723003: Revert of Re-land: Reimplement automation API on top of C++-backed AXTree. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: 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 nullptr; 93 return NULL;
94 } 94 }
95 BrowserAccessibilityManager* AccessibilityGetChildFrame( 95 BrowserAccessibilityManager* AccessibilityGetChildFrame(
96 int accessibility_node_id) override { 96 int accessibility_node_id) override {
97 return nullptr; 97 return NULL;
98 } 98 }
99 BrowserAccessibility* AccessibilityGetParentFrame() override { 99 BrowserAccessibility* AccessibilityGetParentFrame() override { return NULL; }
100 return nullptr;
101 }
102 void AccessibilityGetAllChildFrames( 100 void AccessibilityGetAllChildFrames(
103 std::vector<BrowserAccessibilityManager*>* child_frames) override {} 101 std::vector<BrowserAccessibilityManager*>* child_frames) override {}
104 102
105 bool got_fatal_error() const { return got_fatal_error_; } 103 bool got_fatal_error() const { return got_fatal_error_; }
106 void reset_got_fatal_error() { got_fatal_error_ = false; } 104 void reset_got_fatal_error() { got_fatal_error_ = false; }
107 105
108 private: 106 private:
109 bool got_fatal_error_; 107 bool got_fatal_error_;
110 }; 108 };
111 109
(...skipping 24 matching lines...) Expand all
136 root.child_ids.push_back(3); 134 root.child_ids.push_back(3);
137 135
138 // Construct a BrowserAccessibilityManager with this 136 // Construct a BrowserAccessibilityManager with this
139 // ui::AXNodeData tree and a factory for an instance-counting 137 // ui::AXNodeData tree and a factory for an instance-counting
140 // BrowserAccessibility, and ensure that exactly 3 instances were 138 // BrowserAccessibility, and ensure that exactly 3 instances were
141 // created. Note that the manager takes ownership of the factory. 139 // created. Note that the manager takes ownership of the factory.
142 CountedBrowserAccessibility::global_obj_count_ = 0; 140 CountedBrowserAccessibility::global_obj_count_ = 0;
143 BrowserAccessibilityManager* manager = 141 BrowserAccessibilityManager* manager =
144 BrowserAccessibilityManager::Create( 142 BrowserAccessibilityManager::Create(
145 MakeAXTreeUpdate(root, button, checkbox), 143 MakeAXTreeUpdate(root, button, checkbox),
146 nullptr, 144 NULL,
147 new CountedBrowserAccessibilityFactory()); 145 new CountedBrowserAccessibilityFactory());
148 146
149 ASSERT_EQ(3, CountedBrowserAccessibility::global_obj_count_); 147 ASSERT_EQ(3, CountedBrowserAccessibility::global_obj_count_);
150 148
151 // Delete the manager and test that all 3 instances are deleted. 149 // Delete the manager and test that all 3 instances are deleted.
152 delete manager; 150 delete manager;
153 ASSERT_EQ(0, CountedBrowserAccessibility::global_obj_count_); 151 ASSERT_EQ(0, CountedBrowserAccessibility::global_obj_count_);
154 152
155 // Construct a manager again, and this time save references to two of 153 // Construct a manager again, and this time save references to two of
156 // the three nodes in the tree. 154 // the three nodes in the tree.
157 manager = 155 manager =
158 BrowserAccessibilityManager::Create( 156 BrowserAccessibilityManager::Create(
159 MakeAXTreeUpdate(root, button, checkbox), 157 MakeAXTreeUpdate(root, button, checkbox),
160 nullptr, 158 NULL,
161 new CountedBrowserAccessibilityFactory()); 159 new CountedBrowserAccessibilityFactory());
162 ASSERT_EQ(3, CountedBrowserAccessibility::global_obj_count_); 160 ASSERT_EQ(3, CountedBrowserAccessibility::global_obj_count_);
163 161
164 CountedBrowserAccessibility* root_accessible = 162 CountedBrowserAccessibility* root_accessible =
165 static_cast<CountedBrowserAccessibility*>(manager->GetRoot()); 163 static_cast<CountedBrowserAccessibility*>(manager->GetRoot());
166 root_accessible->NativeAddReference(); 164 root_accessible->NativeAddReference();
167 CountedBrowserAccessibility* child1_accessible = 165 CountedBrowserAccessibility* child1_accessible =
168 static_cast<CountedBrowserAccessibility*>( 166 static_cast<CountedBrowserAccessibility*>(
169 root_accessible->PlatformGetChild(1)); 167 root_accessible->PlatformGetChild(1));
170 child1_accessible->NativeAddReference(); 168 child1_accessible->NativeAddReference();
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
241 tree2_root.child_ids.push_back(5); 239 tree2_root.child_ids.push_back(5);
242 tree2_root.child_ids.push_back(2); 240 tree2_root.child_ids.push_back(2);
243 tree2_root.child_ids.push_back(3); 241 tree2_root.child_ids.push_back(3);
244 242
245 // Construct a BrowserAccessibilityManager with tree1. 243 // Construct a BrowserAccessibilityManager with tree1.
246 CountedBrowserAccessibility::global_obj_count_ = 0; 244 CountedBrowserAccessibility::global_obj_count_ = 0;
247 BrowserAccessibilityManager* manager = 245 BrowserAccessibilityManager* manager =
248 BrowserAccessibilityManager::Create( 246 BrowserAccessibilityManager::Create(
249 MakeAXTreeUpdate(tree1_root, 247 MakeAXTreeUpdate(tree1_root,
250 tree1_child1, tree1_child2, tree1_child3), 248 tree1_child1, tree1_child2, tree1_child3),
251 nullptr, 249 NULL,
252 new CountedBrowserAccessibilityFactory()); 250 new CountedBrowserAccessibilityFactory());
253 ASSERT_EQ(4, CountedBrowserAccessibility::global_obj_count_); 251 ASSERT_EQ(4, CountedBrowserAccessibility::global_obj_count_);
254 252
255 // Save references to all of the objects. 253 // Save references to all of the objects.
256 CountedBrowserAccessibility* root_accessible = 254 CountedBrowserAccessibility* root_accessible =
257 static_cast<CountedBrowserAccessibility*>(manager->GetRoot()); 255 static_cast<CountedBrowserAccessibility*>(manager->GetRoot());
258 root_accessible->NativeAddReference(); 256 root_accessible->NativeAddReference();
259 CountedBrowserAccessibility* child1_accessible = 257 CountedBrowserAccessibility* child1_accessible =
260 static_cast<CountedBrowserAccessibility*>( 258 static_cast<CountedBrowserAccessibility*>(
261 root_accessible->PlatformGetChild(0)); 259 root_accessible->PlatformGetChild(0));
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
417 tree2_container.child_ids.push_back(5); 415 tree2_container.child_ids.push_back(5);
418 416
419 // Construct a BrowserAccessibilityManager with tree1. 417 // Construct a BrowserAccessibilityManager with tree1.
420 CountedBrowserAccessibility::global_obj_count_ = 0; 418 CountedBrowserAccessibility::global_obj_count_ = 0;
421 BrowserAccessibilityManager* manager = 419 BrowserAccessibilityManager* manager =
422 BrowserAccessibilityManager::Create( 420 BrowserAccessibilityManager::Create(
423 MakeAXTreeUpdate(tree1_root, tree1_container, 421 MakeAXTreeUpdate(tree1_root, tree1_container,
424 tree1_child1, tree1_grandchild1, 422 tree1_child1, tree1_grandchild1,
425 tree1_child2, tree1_grandchild2, 423 tree1_child2, tree1_grandchild2,
426 tree1_child3, tree1_grandchild3), 424 tree1_child3, tree1_grandchild3),
427 nullptr, 425 NULL,
428 new CountedBrowserAccessibilityFactory()); 426 new CountedBrowserAccessibilityFactory());
429 ASSERT_EQ(8, CountedBrowserAccessibility::global_obj_count_); 427 ASSERT_EQ(8, CountedBrowserAccessibility::global_obj_count_);
430 428
431 // Save references to some objects. 429 // Save references to some objects.
432 CountedBrowserAccessibility* root_accessible = 430 CountedBrowserAccessibility* root_accessible =
433 static_cast<CountedBrowserAccessibility*>(manager->GetRoot()); 431 static_cast<CountedBrowserAccessibility*>(manager->GetRoot());
434 root_accessible->NativeAddReference(); 432 root_accessible->NativeAddReference();
435 CountedBrowserAccessibility* container_accessible = 433 CountedBrowserAccessibility* container_accessible =
436 static_cast<CountedBrowserAccessibility*>( 434 static_cast<CountedBrowserAccessibility*>(
437 root_accessible->PlatformGetChild(0)); 435 root_accessible->PlatformGetChild(0));
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
545 tree2_1.id = 1; 543 tree2_1.id = 1;
546 tree2_1.state = 0; 544 tree2_1.state = 0;
547 tree2_1.child_ids.push_back(4); 545 tree2_1.child_ids.push_back(4);
548 tree2_1.child_ids.push_back(5); 546 tree2_1.child_ids.push_back(5);
549 547
550 // Construct a BrowserAccessibilityManager with tree1. 548 // Construct a BrowserAccessibilityManager with tree1.
551 CountedBrowserAccessibility::global_obj_count_ = 0; 549 CountedBrowserAccessibility::global_obj_count_ = 0;
552 BrowserAccessibilityManager* manager = 550 BrowserAccessibilityManager* manager =
553 BrowserAccessibilityManager::Create( 551 BrowserAccessibilityManager::Create(
554 MakeAXTreeUpdate(tree1_1, tree1_2, tree1_3, tree1_4), 552 MakeAXTreeUpdate(tree1_1, tree1_2, tree1_3, tree1_4),
555 nullptr, 553 NULL,
556 new CountedBrowserAccessibilityFactory()); 554 new CountedBrowserAccessibilityFactory());
557 ASSERT_EQ(4, CountedBrowserAccessibility::global_obj_count_); 555 ASSERT_EQ(4, CountedBrowserAccessibility::global_obj_count_);
558 556
559 // Process a notification containing the changed subtree. 557 // Process a notification containing the changed subtree.
560 std::vector<AccessibilityHostMsg_EventParams> params; 558 std::vector<AccessibilityHostMsg_EventParams> params;
561 params.push_back(AccessibilityHostMsg_EventParams()); 559 params.push_back(AccessibilityHostMsg_EventParams());
562 AccessibilityHostMsg_EventParams* msg = &params[0]; 560 AccessibilityHostMsg_EventParams* msg = &params[0];
563 msg->event_type = ui::AX_EVENT_CHILDREN_CHANGED; 561 msg->event_type = ui::AX_EVENT_CHILDREN_CHANGED;
564 msg->update.nodes.push_back(tree2_1); 562 msg->update.nodes.push_back(tree2_1);
565 msg->update.nodes.push_back(tree2_4); 563 msg->update.nodes.push_back(tree2_4);
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
679 character_offsets2.push_back(20); 677 character_offsets2.push_back(20);
680 character_offsets2.push_back(25); 678 character_offsets2.push_back(25);
681 character_offsets2.push_back(28); 679 character_offsets2.push_back(28);
682 inline_text2.AddIntListAttribute( 680 inline_text2.AddIntListAttribute(
683 ui::AX_ATTR_CHARACTER_OFFSETS, character_offsets2); 681 ui::AX_ATTR_CHARACTER_OFFSETS, character_offsets2);
684 static_text.child_ids.push_back(4); 682 static_text.child_ids.push_back(4);
685 683
686 scoped_ptr<BrowserAccessibilityManager> manager( 684 scoped_ptr<BrowserAccessibilityManager> manager(
687 BrowserAccessibilityManager::Create( 685 BrowserAccessibilityManager::Create(
688 MakeAXTreeUpdate(root, static_text, inline_text1, inline_text2), 686 MakeAXTreeUpdate(root, static_text, inline_text1, inline_text2),
689 nullptr, 687 NULL,
690 new CountedBrowserAccessibilityFactory())); 688 new CountedBrowserAccessibilityFactory()));
691 689
692 BrowserAccessibility* root_accessible = manager->GetRoot(); 690 BrowserAccessibility* root_accessible = manager->GetRoot();
693 BrowserAccessibility* static_text_accessible = 691 BrowserAccessibility* static_text_accessible =
694 root_accessible->PlatformGetChild(0); 692 root_accessible->PlatformGetChild(0);
695 693
696 EXPECT_EQ(gfx::Rect(100, 100, 6, 9).ToString(), 694 EXPECT_EQ(gfx::Rect(100, 100, 6, 9).ToString(),
697 static_text_accessible->GetLocalBoundsForRange(0, 1).ToString()); 695 static_text_accessible->GetLocalBoundsForRange(0, 1).ToString());
698 696
699 EXPECT_EQ(gfx::Rect(100, 100, 26, 9).ToString(), 697 EXPECT_EQ(gfx::Rect(100, 100, 26, 9).ToString(),
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
767 character_offsets2.push_back(10); 765 character_offsets2.push_back(10);
768 character_offsets2.push_back(20); 766 character_offsets2.push_back(20);
769 character_offsets2.push_back(30); 767 character_offsets2.push_back(30);
770 inline_text2.AddIntListAttribute( 768 inline_text2.AddIntListAttribute(
771 ui::AX_ATTR_CHARACTER_OFFSETS, character_offsets2); 769 ui::AX_ATTR_CHARACTER_OFFSETS, character_offsets2);
772 static_text.child_ids.push_back(4); 770 static_text.child_ids.push_back(4);
773 771
774 scoped_ptr<BrowserAccessibilityManager> manager( 772 scoped_ptr<BrowserAccessibilityManager> manager(
775 BrowserAccessibilityManager::Create( 773 BrowserAccessibilityManager::Create(
776 MakeAXTreeUpdate(root, static_text, inline_text1, inline_text2), 774 MakeAXTreeUpdate(root, static_text, inline_text1, inline_text2),
777 nullptr, 775 NULL,
778 new CountedBrowserAccessibilityFactory())); 776 new CountedBrowserAccessibilityFactory()));
779 777
780 BrowserAccessibility* root_accessible = manager->GetRoot(); 778 BrowserAccessibility* root_accessible = manager->GetRoot();
781 BrowserAccessibility* static_text_accessible = 779 BrowserAccessibility* static_text_accessible =
782 root_accessible->PlatformGetChild(0); 780 root_accessible->PlatformGetChild(0);
783 781
784 EXPECT_EQ(gfx::Rect(100, 100, 60, 20).ToString(), 782 EXPECT_EQ(gfx::Rect(100, 100, 60, 20).ToString(),
785 static_text_accessible->GetLocalBoundsForRange(0, 6).ToString()); 783 static_text_accessible->GetLocalBoundsForRange(0, 6).ToString());
786 784
787 EXPECT_EQ(gfx::Rect(100, 100, 10, 20).ToString(), 785 EXPECT_EQ(gfx::Rect(100, 100, 10, 20).ToString(),
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
827 character_offsets1.push_back(6); // 0 825 character_offsets1.push_back(6); // 0
828 character_offsets1.push_back(11); // 1 826 character_offsets1.push_back(11); // 1
829 character_offsets1.push_back(16); // 2 827 character_offsets1.push_back(16); // 2
830 inline_text.AddIntListAttribute( 828 inline_text.AddIntListAttribute(
831 ui::AX_ATTR_CHARACTER_OFFSETS, character_offsets1); 829 ui::AX_ATTR_CHARACTER_OFFSETS, character_offsets1);
832 static_text.child_ids.push_back(3); 830 static_text.child_ids.push_back(3);
833 831
834 scoped_ptr<BrowserAccessibilityManager> manager( 832 scoped_ptr<BrowserAccessibilityManager> manager(
835 BrowserAccessibilityManager::Create( 833 BrowserAccessibilityManager::Create(
836 MakeAXTreeUpdate(root, static_text, inline_text), 834 MakeAXTreeUpdate(root, static_text, inline_text),
837 nullptr, 835 NULL,
838 new CountedBrowserAccessibilityFactory())); 836 new CountedBrowserAccessibilityFactory()));
839 837
840 BrowserAccessibility* root_accessible = manager->GetRoot(); 838 BrowserAccessibility* root_accessible = manager->GetRoot();
841 BrowserAccessibility* static_text_accessible = 839 BrowserAccessibility* static_text_accessible =
842 root_accessible->PlatformGetChild(0); 840 root_accessible->PlatformGetChild(0);
843 841
844 if (manager->UseRootScrollOffsetsWhenComputingBounds()) { 842 if (manager->UseRootScrollOffsetsWhenComputingBounds()) {
845 EXPECT_EQ(gfx::Rect(75, 50, 16, 9).ToString(), 843 EXPECT_EQ(gfx::Rect(75, 50, 16, 9).ToString(),
846 static_text_accessible->GetLocalBoundsForRange(0, 3).ToString()); 844 static_text_accessible->GetLocalBoundsForRange(0, 3).ToString());
847 } else { 845 } else {
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
913 character_offsets2.push_back(20); // 0 911 character_offsets2.push_back(20); // 0
914 character_offsets2.push_back(40); // 1 912 character_offsets2.push_back(40); // 1
915 inline_text2.AddIntListAttribute( 913 inline_text2.AddIntListAttribute(
916 ui::AX_ATTR_CHARACTER_OFFSETS, character_offsets2); 914 ui::AX_ATTR_CHARACTER_OFFSETS, character_offsets2);
917 915
918 scoped_ptr<BrowserAccessibilityManager> manager( 916 scoped_ptr<BrowserAccessibilityManager> manager(
919 BrowserAccessibilityManager::Create( 917 BrowserAccessibilityManager::Create(
920 MakeAXTreeUpdate( 918 MakeAXTreeUpdate(
921 root, div, static_text1, img, 919 root, div, static_text1, img,
922 static_text2, inline_text1, inline_text2), 920 static_text2, inline_text1, inline_text2),
923 nullptr, 921 NULL,
924 new CountedBrowserAccessibilityFactory())); 922 new CountedBrowserAccessibilityFactory()));
925 BrowserAccessibility* root_accessible = manager->GetRoot(); 923 BrowserAccessibility* root_accessible = manager->GetRoot();
926 924
927 EXPECT_EQ(gfx::Rect(100, 100, 20, 20).ToString(), 925 EXPECT_EQ(gfx::Rect(100, 100, 20, 20).ToString(),
928 root_accessible->GetLocalBoundsForRange(0, 1).ToString()); 926 root_accessible->GetLocalBoundsForRange(0, 1).ToString());
929 927
930 EXPECT_EQ(gfx::Rect(100, 100, 40, 20).ToString(), 928 EXPECT_EQ(gfx::Rect(100, 100, 40, 20).ToString(),
931 root_accessible->GetLocalBoundsForRange(0, 2).ToString()); 929 root_accessible->GetLocalBoundsForRange(0, 2).ToString());
932 930
933 EXPECT_EQ(gfx::Rect(100, 100, 80, 20).ToString(), 931 EXPECT_EQ(gfx::Rect(100, 100, 80, 20).ToString(),
(...skipping 26 matching lines...) Expand all
960 node4.id = 4; 958 node4.id = 4;
961 node3.child_ids.push_back(4); 959 node3.child_ids.push_back(4);
962 960
963 ui::AXNodeData node5; 961 ui::AXNodeData node5;
964 node5.id = 5; 962 node5.id = 5;
965 root.child_ids.push_back(5); 963 root.child_ids.push_back(5);
966 964
967 scoped_ptr<BrowserAccessibilityManager> manager( 965 scoped_ptr<BrowserAccessibilityManager> manager(
968 BrowserAccessibilityManager::Create( 966 BrowserAccessibilityManager::Create(
969 MakeAXTreeUpdate(root, node2, node3, node4, node5), 967 MakeAXTreeUpdate(root, node2, node3, node4, node5),
970 nullptr, 968 NULL,
971 new CountedBrowserAccessibilityFactory())); 969 new CountedBrowserAccessibilityFactory()));
972 970
973 BrowserAccessibility* root_accessible = manager->GetRoot(); 971 BrowserAccessibility* root_accessible = manager->GetRoot();
974 BrowserAccessibility* node2_accessible = root_accessible->PlatformGetChild(0); 972 BrowserAccessibility* node2_accessible = root_accessible->PlatformGetChild(0);
975 BrowserAccessibility* node3_accessible = root_accessible->PlatformGetChild(1); 973 BrowserAccessibility* node3_accessible = root_accessible->PlatformGetChild(1);
976 BrowserAccessibility* node4_accessible = 974 BrowserAccessibility* node4_accessible =
977 node3_accessible->PlatformGetChild(0); 975 node3_accessible->PlatformGetChild(0);
978 BrowserAccessibility* node5_accessible = root_accessible->PlatformGetChild(2); 976 BrowserAccessibility* node5_accessible = root_accessible->PlatformGetChild(2);
979 977
980 ASSERT_EQ(nullptr, manager->NextInTreeOrder(nullptr)); 978 ASSERT_EQ(NULL, manager->NextInTreeOrder(NULL));
981 ASSERT_EQ(node2_accessible, manager->NextInTreeOrder(root_accessible)); 979 ASSERT_EQ(node2_accessible, manager->NextInTreeOrder(root_accessible));
982 ASSERT_EQ(node3_accessible, manager->NextInTreeOrder(node2_accessible)); 980 ASSERT_EQ(node3_accessible, manager->NextInTreeOrder(node2_accessible));
983 ASSERT_EQ(node4_accessible, manager->NextInTreeOrder(node3_accessible)); 981 ASSERT_EQ(node4_accessible, manager->NextInTreeOrder(node3_accessible));
984 ASSERT_EQ(node5_accessible, manager->NextInTreeOrder(node4_accessible)); 982 ASSERT_EQ(node5_accessible, manager->NextInTreeOrder(node4_accessible));
985 ASSERT_EQ(nullptr, manager->NextInTreeOrder(node5_accessible)); 983 ASSERT_EQ(NULL, manager->NextInTreeOrder(node5_accessible));
986 984
987 ASSERT_EQ(nullptr, manager->PreviousInTreeOrder(nullptr)); 985 ASSERT_EQ(NULL, manager->PreviousInTreeOrder(NULL));
988 ASSERT_EQ(node4_accessible, manager->PreviousInTreeOrder(node5_accessible)); 986 ASSERT_EQ(node4_accessible, manager->PreviousInTreeOrder(node5_accessible));
989 ASSERT_EQ(node3_accessible, manager->PreviousInTreeOrder(node4_accessible)); 987 ASSERT_EQ(node3_accessible, manager->PreviousInTreeOrder(node4_accessible));
990 ASSERT_EQ(node2_accessible, manager->PreviousInTreeOrder(node3_accessible)); 988 ASSERT_EQ(node2_accessible, manager->PreviousInTreeOrder(node3_accessible));
991 ASSERT_EQ(root_accessible, manager->PreviousInTreeOrder(node2_accessible)); 989 ASSERT_EQ(root_accessible, manager->PreviousInTreeOrder(node2_accessible));
992 } 990 }
993 991
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
1045 } // namespace content 992 } // 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