OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/memory/scoped_ptr.h" | 5 #include "base/memory/scoped_ptr.h" |
6 #include "base/strings/utf_string_conversions.h" | 6 #include "base/strings/utf_string_conversions.h" |
7 #include "base/win/scoped_bstr.h" | 7 #include "base/win/scoped_bstr.h" |
8 #include "base/win/scoped_comptr.h" | 8 #include "base/win/scoped_comptr.h" |
9 #include "base/win/scoped_variant.h" | 9 #include "base/win/scoped_variant.h" |
10 #include "content/browser/accessibility/browser_accessibility_manager.h" | 10 #include "content/browser/accessibility/browser_accessibility_manager.h" |
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
135 root.child_ids.push_back(3); | 135 root.child_ids.push_back(3); |
136 | 136 |
137 // Construct a BrowserAccessibilityManager with this | 137 // Construct a BrowserAccessibilityManager with this |
138 // ui::AXNodeData tree and a factory for an instance-counting | 138 // ui::AXNodeData tree and a factory for an instance-counting |
139 // BrowserAccessibility, and ensure that exactly 3 instances were | 139 // BrowserAccessibility, and ensure that exactly 3 instances were |
140 // created. Note that the manager takes ownership of the factory. | 140 // created. Note that the manager takes ownership of the factory. |
141 CountedBrowserAccessibility::reset(); | 141 CountedBrowserAccessibility::reset(); |
142 scoped_ptr<BrowserAccessibilityManager> manager( | 142 scoped_ptr<BrowserAccessibilityManager> manager( |
143 BrowserAccessibilityManager::Create( | 143 BrowserAccessibilityManager::Create( |
144 MakeAXTreeUpdate(root, button, checkbox), | 144 MakeAXTreeUpdate(root, button, checkbox), |
145 NULL, new CountedBrowserAccessibilityFactory())); | 145 nullptr, new CountedBrowserAccessibilityFactory())); |
146 ASSERT_EQ(3, CountedBrowserAccessibility::num_instances()); | 146 ASSERT_EQ(3, CountedBrowserAccessibility::num_instances()); |
147 | 147 |
148 // Delete the manager and test that all 3 instances are deleted. | 148 // Delete the manager and test that all 3 instances are deleted. |
149 manager.reset(); | 149 manager.reset(); |
150 ASSERT_EQ(0, CountedBrowserAccessibility::num_instances()); | 150 ASSERT_EQ(0, CountedBrowserAccessibility::num_instances()); |
151 | 151 |
152 // Construct a manager again, and this time use the IAccessible interface | 152 // Construct a manager again, and this time use the IAccessible interface |
153 // to get new references to two of the three nodes in the tree. | 153 // to get new references to two of the three nodes in the tree. |
154 manager.reset(BrowserAccessibilityManager::Create( | 154 manager.reset(BrowserAccessibilityManager::Create( |
155 MakeAXTreeUpdate(root, button, checkbox), | 155 MakeAXTreeUpdate(root, button, checkbox), |
156 NULL, new CountedBrowserAccessibilityFactory())); | 156 nullptr, new CountedBrowserAccessibilityFactory())); |
157 ASSERT_EQ(3, CountedBrowserAccessibility::num_instances()); | 157 ASSERT_EQ(3, CountedBrowserAccessibility::num_instances()); |
158 IAccessible* root_accessible = | 158 IAccessible* root_accessible = |
159 manager->GetRoot()->ToBrowserAccessibilityWin(); | 159 manager->GetRoot()->ToBrowserAccessibilityWin(); |
160 IDispatch* root_iaccessible = NULL; | 160 IDispatch* root_iaccessible = nullptr; |
161 IDispatch* child1_iaccessible = NULL; | 161 IDispatch* child1_iaccessible = nullptr; |
162 base::win::ScopedVariant childid_self(CHILDID_SELF); | 162 base::win::ScopedVariant childid_self(CHILDID_SELF); |
163 HRESULT hr = root_accessible->get_accChild(childid_self, &root_iaccessible); | 163 HRESULT hr = root_accessible->get_accChild(childid_self, &root_iaccessible); |
164 ASSERT_EQ(S_OK, hr); | 164 ASSERT_EQ(S_OK, hr); |
165 base::win::ScopedVariant one(1); | 165 base::win::ScopedVariant one(1); |
166 hr = root_accessible->get_accChild(one, &child1_iaccessible); | 166 hr = root_accessible->get_accChild(one, &child1_iaccessible); |
167 ASSERT_EQ(S_OK, hr); | 167 ASSERT_EQ(S_OK, hr); |
168 | 168 |
169 // Now delete the manager, and only one of the three nodes in the tree | 169 // Now delete the manager, and only one of the three nodes in the tree |
170 // should be released. | 170 // should be released. |
171 manager.reset(); | 171 manager.reset(); |
(...skipping 24 matching lines...) Expand all Loading... |
196 root.state = 0; | 196 root.state = 0; |
197 root.child_ids.push_back(2); | 197 root.child_ids.push_back(2); |
198 | 198 |
199 // Construct a BrowserAccessibilityManager with this | 199 // Construct a BrowserAccessibilityManager with this |
200 // ui::AXNodeData tree and a factory for an instance-counting | 200 // ui::AXNodeData tree and a factory for an instance-counting |
201 // BrowserAccessibility. | 201 // BrowserAccessibility. |
202 CountedBrowserAccessibility::reset(); | 202 CountedBrowserAccessibility::reset(); |
203 scoped_ptr<BrowserAccessibilityManager> manager( | 203 scoped_ptr<BrowserAccessibilityManager> manager( |
204 BrowserAccessibilityManager::Create( | 204 BrowserAccessibilityManager::Create( |
205 MakeAXTreeUpdate(root, text), | 205 MakeAXTreeUpdate(root, text), |
206 NULL, new CountedBrowserAccessibilityFactory())); | 206 nullptr, new CountedBrowserAccessibilityFactory())); |
207 | 207 |
208 // Query for the text IAccessible and verify that it returns "old text" as its | 208 // Query for the text IAccessible and verify that it returns "old text" as its |
209 // value. | 209 // value. |
210 base::win::ScopedVariant one(1); | 210 base::win::ScopedVariant one(1); |
211 base::win::ScopedComPtr<IDispatch> text_dispatch; | 211 base::win::ScopedComPtr<IDispatch> text_dispatch; |
212 HRESULT hr = manager->GetRoot()->ToBrowserAccessibilityWin()->get_accChild( | 212 HRESULT hr = manager->GetRoot()->ToBrowserAccessibilityWin()->get_accChild( |
213 one, text_dispatch.Receive()); | 213 one, text_dispatch.Receive()); |
214 ASSERT_EQ(S_OK, hr); | 214 ASSERT_EQ(S_OK, hr); |
215 | 215 |
216 base::win::ScopedComPtr<IAccessible> text_accessible; | 216 base::win::ScopedComPtr<IAccessible> text_accessible; |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
292 root.child_ids.push_back(2); | 292 root.child_ids.push_back(2); |
293 | 293 |
294 // Construct a BrowserAccessibilityManager with this | 294 // Construct a BrowserAccessibilityManager with this |
295 // ui::AXNodeData tree and a factory for an instance-counting | 295 // ui::AXNodeData tree and a factory for an instance-counting |
296 // BrowserAccessibility and ensure that exactly 4 instances were | 296 // BrowserAccessibility and ensure that exactly 4 instances were |
297 // created. Note that the manager takes ownership of the factory. | 297 // created. Note that the manager takes ownership of the factory. |
298 CountedBrowserAccessibility::reset(); | 298 CountedBrowserAccessibility::reset(); |
299 scoped_ptr<BrowserAccessibilityManager> manager( | 299 scoped_ptr<BrowserAccessibilityManager> manager( |
300 BrowserAccessibilityManager::Create( | 300 BrowserAccessibilityManager::Create( |
301 MakeAXTreeUpdate(root, div, text3, text4), | 301 MakeAXTreeUpdate(root, div, text3, text4), |
302 NULL, new CountedBrowserAccessibilityFactory())); | 302 nullptr, new CountedBrowserAccessibilityFactory())); |
303 ASSERT_EQ(4, CountedBrowserAccessibility::num_instances()); | 303 ASSERT_EQ(4, CountedBrowserAccessibility::num_instances()); |
304 | 304 |
305 // Notify the BrowserAccessibilityManager that the div node and its children | 305 // Notify the BrowserAccessibilityManager that the div node and its children |
306 // were removed and ensure that only one BrowserAccessibility instance exists. | 306 // were removed and ensure that only one BrowserAccessibility instance exists. |
307 root.child_ids.clear(); | 307 root.child_ids.clear(); |
308 AccessibilityHostMsg_EventParams param; | 308 AccessibilityHostMsg_EventParams param; |
309 param.event_type = ui::AX_EVENT_CHILDREN_CHANGED; | 309 param.event_type = ui::AX_EVENT_CHILDREN_CHANGED; |
310 param.update.nodes.push_back(root); | 310 param.update.nodes.push_back(root); |
311 param.id = root.id; | 311 param.id = root.id; |
312 std::vector<AccessibilityHostMsg_EventParams> events; | 312 std::vector<AccessibilityHostMsg_EventParams> events; |
(...skipping 23 matching lines...) Expand all Loading... |
336 ui::AXNodeData root; | 336 ui::AXNodeData root; |
337 root.id = 1; | 337 root.id = 1; |
338 root.role = ui::AX_ROLE_ROOT_WEB_AREA; | 338 root.role = ui::AX_ROLE_ROOT_WEB_AREA; |
339 root.state = 0; | 339 root.state = 0; |
340 root.child_ids.push_back(11); | 340 root.child_ids.push_back(11); |
341 | 341 |
342 CountedBrowserAccessibility::reset(); | 342 CountedBrowserAccessibility::reset(); |
343 scoped_ptr<BrowserAccessibilityManager> manager( | 343 scoped_ptr<BrowserAccessibilityManager> manager( |
344 BrowserAccessibilityManager::Create( | 344 BrowserAccessibilityManager::Create( |
345 MakeAXTreeUpdate(root, text1), | 345 MakeAXTreeUpdate(root, text1), |
346 NULL, new CountedBrowserAccessibilityFactory())); | 346 nullptr, new CountedBrowserAccessibilityFactory())); |
347 ASSERT_EQ(2, CountedBrowserAccessibility::num_instances()); | 347 ASSERT_EQ(2, CountedBrowserAccessibility::num_instances()); |
348 | 348 |
349 BrowserAccessibilityWin* root_obj = | 349 BrowserAccessibilityWin* root_obj = |
350 manager->GetRoot()->ToBrowserAccessibilityWin(); | 350 manager->GetRoot()->ToBrowserAccessibilityWin(); |
351 BrowserAccessibilityWin* text1_obj = | 351 BrowserAccessibilityWin* text1_obj = |
352 root_obj->PlatformGetChild(0)->ToBrowserAccessibilityWin(); | 352 root_obj->PlatformGetChild(0)->ToBrowserAccessibilityWin(); |
353 | 353 |
354 long text1_len; | 354 long text1_len; |
355 ASSERT_EQ(S_OK, text1_obj->get_nCharacters(&text1_len)); | 355 ASSERT_EQ(S_OK, text1_obj->get_nCharacters(&text1_len)); |
356 | 356 |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
436 root.id = 1; | 436 root.id = 1; |
437 root.role = ui::AX_ROLE_ROOT_WEB_AREA; | 437 root.role = ui::AX_ROLE_ROOT_WEB_AREA; |
438 root.state = 1 << ui::AX_STATE_READ_ONLY; | 438 root.state = 1 << ui::AX_STATE_READ_ONLY; |
439 root.child_ids.push_back(11); | 439 root.child_ids.push_back(11); |
440 root.child_ids.push_back(12); | 440 root.child_ids.push_back(12); |
441 | 441 |
442 CountedBrowserAccessibility::reset(); | 442 CountedBrowserAccessibility::reset(); |
443 scoped_ptr<BrowserAccessibilityManager> manager( | 443 scoped_ptr<BrowserAccessibilityManager> manager( |
444 BrowserAccessibilityManager::Create( | 444 BrowserAccessibilityManager::Create( |
445 MakeAXTreeUpdate(root, root, text1, text2), | 445 MakeAXTreeUpdate(root, root, text1, text2), |
446 NULL, new CountedBrowserAccessibilityFactory())); | 446 nullptr, new CountedBrowserAccessibilityFactory())); |
447 ASSERT_EQ(3, CountedBrowserAccessibility::num_instances()); | 447 ASSERT_EQ(3, CountedBrowserAccessibility::num_instances()); |
448 | 448 |
449 BrowserAccessibilityWin* root_obj = | 449 BrowserAccessibilityWin* root_obj = |
450 manager->GetRoot()->ToBrowserAccessibilityWin(); | 450 manager->GetRoot()->ToBrowserAccessibilityWin(); |
451 | 451 |
452 long text_len; | 452 long text_len; |
453 ASSERT_EQ(S_OK, root_obj->get_nCharacters(&text_len)); | 453 ASSERT_EQ(S_OK, root_obj->get_nCharacters(&text_len)); |
454 | 454 |
455 base::win::ScopedBstr text; | 455 base::win::ScopedBstr text; |
456 ASSERT_EQ(S_OK, root_obj->get_text(0, text_len, text.Receive())); | 456 ASSERT_EQ(S_OK, root_obj->get_text(0, text_len, text.Receive())); |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
528 root.child_ids.push_back(13); | 528 root.child_ids.push_back(13); |
529 root.child_ids.push_back(12); | 529 root.child_ids.push_back(12); |
530 root.child_ids.push_back(14); | 530 root.child_ids.push_back(14); |
531 | 531 |
532 CountedBrowserAccessibility::reset(); | 532 CountedBrowserAccessibility::reset(); |
533 scoped_ptr<BrowserAccessibilityManager> manager( | 533 scoped_ptr<BrowserAccessibilityManager> manager( |
534 BrowserAccessibilityManager::Create( | 534 BrowserAccessibilityManager::Create( |
535 MakeAXTreeUpdate(root, | 535 MakeAXTreeUpdate(root, |
536 text1, button1, button1_text, | 536 text1, button1, button1_text, |
537 text2, link1, link1_text), | 537 text2, link1, link1_text), |
538 NULL, new CountedBrowserAccessibilityFactory())); | 538 nullptr, new CountedBrowserAccessibilityFactory())); |
539 ASSERT_EQ(7, CountedBrowserAccessibility::num_instances()); | 539 ASSERT_EQ(7, CountedBrowserAccessibility::num_instances()); |
540 | 540 |
541 BrowserAccessibilityWin* root_obj = | 541 BrowserAccessibilityWin* root_obj = |
542 manager->GetRoot()->ToBrowserAccessibilityWin(); | 542 manager->GetRoot()->ToBrowserAccessibilityWin(); |
543 | 543 |
544 long text_len; | 544 long text_len; |
545 ASSERT_EQ(S_OK, root_obj->get_nCharacters(&text_len)); | 545 ASSERT_EQ(S_OK, root_obj->get_nCharacters(&text_len)); |
546 | 546 |
547 base::win::ScopedBstr text; | 547 base::win::ScopedBstr text; |
548 ASSERT_EQ(S_OK, root_obj->get_text(0, text_len, text.Receive())); | 548 ASSERT_EQ(S_OK, root_obj->get_text(0, text_len, text.Receive())); |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
601 TEST_F(BrowserAccessibilityTest, TestCreateEmptyDocument) { | 601 TEST_F(BrowserAccessibilityTest, TestCreateEmptyDocument) { |
602 // Try creating an empty document with busy state. Readonly is | 602 // Try creating an empty document with busy state. Readonly is |
603 // set automatically. | 603 // set automatically. |
604 CountedBrowserAccessibility::reset(); | 604 CountedBrowserAccessibility::reset(); |
605 const int32 busy_state = 1 << ui::AX_STATE_BUSY; | 605 const int32 busy_state = 1 << ui::AX_STATE_BUSY; |
606 const int32 readonly_state = 1 << ui::AX_STATE_READ_ONLY; | 606 const int32 readonly_state = 1 << ui::AX_STATE_READ_ONLY; |
607 const int32 enabled_state = 1 << ui::AX_STATE_ENABLED; | 607 const int32 enabled_state = 1 << ui::AX_STATE_ENABLED; |
608 scoped_ptr<BrowserAccessibilityManager> manager( | 608 scoped_ptr<BrowserAccessibilityManager> manager( |
609 new BrowserAccessibilityManagerWin( | 609 new BrowserAccessibilityManagerWin( |
610 BrowserAccessibilityManagerWin::GetEmptyDocument(), | 610 BrowserAccessibilityManagerWin::GetEmptyDocument(), |
611 NULL, | 611 nullptr, |
612 new CountedBrowserAccessibilityFactory())); | 612 new CountedBrowserAccessibilityFactory())); |
613 | 613 |
614 // Verify the root is as we expect by default. | 614 // Verify the root is as we expect by default. |
615 BrowserAccessibility* root = manager->GetRoot(); | 615 BrowserAccessibility* root = manager->GetRoot(); |
616 EXPECT_EQ(0, root->GetId()); | 616 EXPECT_EQ(0, root->GetId()); |
617 EXPECT_EQ(ui::AX_ROLE_ROOT_WEB_AREA, root->GetRole()); | 617 EXPECT_EQ(ui::AX_ROLE_ROOT_WEB_AREA, root->GetRole()); |
618 EXPECT_EQ(busy_state | readonly_state | enabled_state, root->GetState()); | 618 EXPECT_EQ(busy_state | readonly_state | enabled_state, root->GetState()); |
619 | 619 |
620 // Tree with a child textfield. | 620 // Tree with a child textfield. |
621 ui::AXNodeData tree1_1; | 621 ui::AXNodeData tree1_1; |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
681 | 681 |
682 // This is a regression test for a bug where the initial empty document | 682 // This is a regression test for a bug where the initial empty document |
683 // loaded by a BrowserAccessibilityManagerWin couldn't be looked up by | 683 // loaded by a BrowserAccessibilityManagerWin couldn't be looked up by |
684 // its UniqueIDWin, because the AX Tree was loaded in | 684 // its UniqueIDWin, because the AX Tree was loaded in |
685 // BrowserAccessibilityManager code before BrowserAccessibilityManagerWin | 685 // BrowserAccessibilityManager code before BrowserAccessibilityManagerWin |
686 // was initialized. | 686 // was initialized. |
687 TEST_F(BrowserAccessibilityTest, EmptyDocHasUniqueIdWin) { | 687 TEST_F(BrowserAccessibilityTest, EmptyDocHasUniqueIdWin) { |
688 scoped_ptr<BrowserAccessibilityManagerWin> manager( | 688 scoped_ptr<BrowserAccessibilityManagerWin> manager( |
689 new BrowserAccessibilityManagerWin( | 689 new BrowserAccessibilityManagerWin( |
690 BrowserAccessibilityManagerWin::GetEmptyDocument(), | 690 BrowserAccessibilityManagerWin::GetEmptyDocument(), |
691 NULL, | 691 nullptr, |
692 new CountedBrowserAccessibilityFactory())); | 692 new CountedBrowserAccessibilityFactory())); |
693 | 693 |
694 // Verify the root is as we expect by default. | 694 // Verify the root is as we expect by default. |
695 BrowserAccessibility* root = manager->GetRoot(); | 695 BrowserAccessibility* root = manager->GetRoot(); |
696 EXPECT_EQ(0, root->GetId()); | 696 EXPECT_EQ(0, root->GetId()); |
697 EXPECT_EQ(ui::AX_ROLE_ROOT_WEB_AREA, root->GetRole()); | 697 EXPECT_EQ(ui::AX_ROLE_ROOT_WEB_AREA, root->GetRole()); |
698 EXPECT_EQ(1 << ui::AX_STATE_BUSY | | 698 EXPECT_EQ(1 << ui::AX_STATE_BUSY | |
699 1 << ui::AX_STATE_READ_ONLY | | 699 1 << ui::AX_STATE_READ_ONLY | |
700 1 << ui::AX_STATE_ENABLED, | 700 1 << ui::AX_STATE_ENABLED, |
701 root->GetState()); | 701 root->GetState()); |
702 | 702 |
703 LONG unique_id_win = root->ToBrowserAccessibilityWin()->unique_id_win(); | 703 LONG unique_id_win = root->ToBrowserAccessibilityWin()->unique_id_win(); |
704 ASSERT_EQ(root, manager->GetFromUniqueIdWin(unique_id_win)); | 704 ASSERT_EQ(root, manager->GetFromUniqueIdWin(unique_id_win)); |
705 } | 705 } |
706 | 706 |
707 } // namespace content | 707 } // namespace content |
OLD | NEW |