| 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/win/scoped_comptr.h" | 6 #include "base/win/scoped_comptr.h" |
| 7 #include "content/browser/accessibility/browser_accessibility_manager.h" | 7 #include "content/browser/accessibility/browser_accessibility_manager.h" |
| 8 #include "content/browser/accessibility/browser_accessibility_win.h" | 8 #include "content/browser/accessibility/browser_accessibility_win.h" |
| 9 #include "content/common/accessibility_messages.h" | 9 #include "content/common/accessibility_messages.h" |
| 10 #include "testing/gtest/include/gtest/gtest.h" | 10 #include "testing/gtest/include/gtest/gtest.h" |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 108 // Construct a manager again, and this time use the IAccessible interface | 108 // Construct a manager again, and this time use the IAccessible interface |
| 109 // to get new references to two of the three nodes in the tree. | 109 // to get new references to two of the three nodes in the tree. |
| 110 manager = | 110 manager = |
| 111 BrowserAccessibilityManager::Create( | 111 BrowserAccessibilityManager::Create( |
| 112 GetDesktopWindow(), | 112 GetDesktopWindow(), |
| 113 root, | 113 root, |
| 114 NULL, | 114 NULL, |
| 115 new CountedBrowserAccessibilityFactory()); | 115 new CountedBrowserAccessibilityFactory()); |
| 116 ASSERT_EQ(3, CountedBrowserAccessibility::global_obj_count_); | 116 ASSERT_EQ(3, CountedBrowserAccessibility::global_obj_count_); |
| 117 IAccessible* root_accessible = | 117 IAccessible* root_accessible = |
| 118 manager->GetRoot()->toBrowserAccessibilityWin(); | 118 manager->GetRoot()->ToBrowserAccessibilityWin(); |
| 119 IDispatch* root_iaccessible = NULL; | 119 IDispatch* root_iaccessible = NULL; |
| 120 IDispatch* child1_iaccessible = NULL; | 120 IDispatch* child1_iaccessible = NULL; |
| 121 VARIANT var_child; | 121 VARIANT var_child; |
| 122 var_child.vt = VT_I4; | 122 var_child.vt = VT_I4; |
| 123 var_child.lVal = CHILDID_SELF; | 123 var_child.lVal = CHILDID_SELF; |
| 124 HRESULT hr = root_accessible->get_accChild(var_child, &root_iaccessible); | 124 HRESULT hr = root_accessible->get_accChild(var_child, &root_iaccessible); |
| 125 ASSERT_EQ(S_OK, hr); | 125 ASSERT_EQ(S_OK, hr); |
| 126 var_child.lVal = 1; | 126 var_child.lVal = 1; |
| 127 hr = root_accessible->get_accChild(var_child, &child1_iaccessible); | 127 hr = root_accessible->get_accChild(var_child, &child1_iaccessible); |
| 128 ASSERT_EQ(S_OK, hr); | 128 ASSERT_EQ(S_OK, hr); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 163 BrowserAccessibilityManager* manager = | 163 BrowserAccessibilityManager* manager = |
| 164 BrowserAccessibilityManager::Create( | 164 BrowserAccessibilityManager::Create( |
| 165 GetDesktopWindow(), | 165 GetDesktopWindow(), |
| 166 root, | 166 root, |
| 167 NULL, | 167 NULL, |
| 168 new CountedBrowserAccessibilityFactory()); | 168 new CountedBrowserAccessibilityFactory()); |
| 169 | 169 |
| 170 // Query for the text IAccessible and verify that it returns "old text" as its | 170 // Query for the text IAccessible and verify that it returns "old text" as its |
| 171 // value. | 171 // value. |
| 172 base::win::ScopedComPtr<IDispatch> text_dispatch; | 172 base::win::ScopedComPtr<IDispatch> text_dispatch; |
| 173 HRESULT hr = manager->GetRoot()->toBrowserAccessibilityWin()->get_accChild( | 173 HRESULT hr = manager->GetRoot()->ToBrowserAccessibilityWin()->get_accChild( |
| 174 CreateI4Variant(1), text_dispatch.Receive()); | 174 CreateI4Variant(1), text_dispatch.Receive()); |
| 175 ASSERT_EQ(S_OK, hr); | 175 ASSERT_EQ(S_OK, hr); |
| 176 | 176 |
| 177 base::win::ScopedComPtr<IAccessible> text_accessible; | 177 base::win::ScopedComPtr<IAccessible> text_accessible; |
| 178 hr = text_dispatch.QueryInterface(text_accessible.Receive()); | 178 hr = text_dispatch.QueryInterface(text_accessible.Receive()); |
| 179 ASSERT_EQ(S_OK, hr); | 179 ASSERT_EQ(S_OK, hr); |
| 180 | 180 |
| 181 CComBSTR name; | 181 CComBSTR name; |
| 182 hr = text_accessible->get_accName(CreateI4Variant(CHILDID_SELF), &name); | 182 hr = text_accessible->get_accName(CreateI4Variant(CHILDID_SELF), &name); |
| 183 ASSERT_EQ(S_OK, hr); | 183 ASSERT_EQ(S_OK, hr); |
| 184 EXPECT_STREQ(L"old text", name.m_str); | 184 EXPECT_STREQ(L"old text", name.m_str); |
| 185 | 185 |
| 186 text_dispatch.Release(); | 186 text_dispatch.Release(); |
| 187 text_accessible.Release(); | 187 text_accessible.Release(); |
| 188 | 188 |
| 189 // Notify the BrowserAccessibilityManager that the text child has changed. | 189 // Notify the BrowserAccessibilityManager that the text child has changed. |
| 190 text.name = L"new text"; | 190 text.name = L"new text"; |
| 191 AccessibilityHostMsg_NotificationParams param; | 191 AccessibilityHostMsg_NotificationParams param; |
| 192 param.notification_type = AccessibilityNotificationChildrenChanged; | 192 param.notification_type = AccessibilityNotificationChildrenChanged; |
| 193 param.acc_tree = text; | 193 param.acc_tree = text; |
| 194 param.includes_children = true; | 194 param.includes_children = true; |
| 195 param.id = text.id; | 195 param.id = text.id; |
| 196 std::vector<AccessibilityHostMsg_NotificationParams> notifications; | 196 std::vector<AccessibilityHostMsg_NotificationParams> notifications; |
| 197 notifications.push_back(param); | 197 notifications.push_back(param); |
| 198 manager->OnAccessibilityNotifications(notifications); | 198 manager->OnAccessibilityNotifications(notifications); |
| 199 | 199 |
| 200 // Query for the text IAccessible and verify that it now returns "new text" | 200 // Query for the text IAccessible and verify that it now returns "new text" |
| 201 // as its value. | 201 // as its value. |
| 202 hr = manager->GetRoot()->toBrowserAccessibilityWin()->get_accChild( | 202 hr = manager->GetRoot()->ToBrowserAccessibilityWin()->get_accChild( |
| 203 CreateI4Variant(1), | 203 CreateI4Variant(1), |
| 204 text_dispatch.Receive()); | 204 text_dispatch.Receive()); |
| 205 ASSERT_EQ(S_OK, hr); | 205 ASSERT_EQ(S_OK, hr); |
| 206 | 206 |
| 207 hr = text_dispatch.QueryInterface(text_accessible.Receive()); | 207 hr = text_dispatch.QueryInterface(text_accessible.Receive()); |
| 208 ASSERT_EQ(S_OK, hr); | 208 ASSERT_EQ(S_OK, hr); |
| 209 | 209 |
| 210 hr = text_accessible->get_accName(CreateI4Variant(CHILDID_SELF), &name); | 210 hr = text_accessible->get_accName(CreateI4Variant(CHILDID_SELF), &name); |
| 211 ASSERT_EQ(S_OK, hr); | 211 ASSERT_EQ(S_OK, hr); |
| 212 EXPECT_STREQ(L"new text", name.m_str); | 212 EXPECT_STREQ(L"new text", name.m_str); |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 290 root.state = 0; | 290 root.state = 0; |
| 291 root.children.push_back(text1); | 291 root.children.push_back(text1); |
| 292 | 292 |
| 293 CountedBrowserAccessibility::global_obj_count_ = 0; | 293 CountedBrowserAccessibility::global_obj_count_ = 0; |
| 294 BrowserAccessibilityManager* manager = BrowserAccessibilityManager::Create( | 294 BrowserAccessibilityManager* manager = BrowserAccessibilityManager::Create( |
| 295 GetDesktopWindow(), root, NULL, | 295 GetDesktopWindow(), root, NULL, |
| 296 new CountedBrowserAccessibilityFactory()); | 296 new CountedBrowserAccessibilityFactory()); |
| 297 ASSERT_EQ(2, CountedBrowserAccessibility::global_obj_count_); | 297 ASSERT_EQ(2, CountedBrowserAccessibility::global_obj_count_); |
| 298 | 298 |
| 299 BrowserAccessibilityWin* root_obj = | 299 BrowserAccessibilityWin* root_obj = |
| 300 manager->GetRoot()->toBrowserAccessibilityWin(); | 300 manager->GetRoot()->ToBrowserAccessibilityWin(); |
| 301 BrowserAccessibilityWin* text1_obj = | 301 BrowserAccessibilityWin* text1_obj = |
| 302 root_obj->GetChild(0)->toBrowserAccessibilityWin(); | 302 root_obj->GetChild(0)->ToBrowserAccessibilityWin(); |
| 303 | 303 |
| 304 BSTR text; | 304 BSTR text; |
| 305 long start; | 305 long start; |
| 306 long end; | 306 long end; |
| 307 | 307 |
| 308 long text1_len; | 308 long text1_len; |
| 309 ASSERT_EQ(S_OK, text1_obj->get_nCharacters(&text1_len)); | 309 ASSERT_EQ(S_OK, text1_obj->get_nCharacters(&text1_len)); |
| 310 | 310 |
| 311 ASSERT_EQ(S_OK, text1_obj->get_text(0, text1_len, &text)); | 311 ASSERT_EQ(S_OK, text1_obj->get_text(0, text1_len, &text)); |
| 312 ASSERT_EQ(text, text1.value); | 312 ASSERT_EQ(text, text1.value); |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 386 root.children.push_back(text1); | 386 root.children.push_back(text1); |
| 387 root.children.push_back(text2); | 387 root.children.push_back(text2); |
| 388 | 388 |
| 389 CountedBrowserAccessibility::global_obj_count_ = 0; | 389 CountedBrowserAccessibility::global_obj_count_ = 0; |
| 390 BrowserAccessibilityManager* manager = BrowserAccessibilityManager::Create( | 390 BrowserAccessibilityManager* manager = BrowserAccessibilityManager::Create( |
| 391 GetDesktopWindow(), root, NULL, | 391 GetDesktopWindow(), root, NULL, |
| 392 new CountedBrowserAccessibilityFactory()); | 392 new CountedBrowserAccessibilityFactory()); |
| 393 ASSERT_EQ(3, CountedBrowserAccessibility::global_obj_count_); | 393 ASSERT_EQ(3, CountedBrowserAccessibility::global_obj_count_); |
| 394 | 394 |
| 395 BrowserAccessibilityWin* root_obj = | 395 BrowserAccessibilityWin* root_obj = |
| 396 manager->GetRoot()->toBrowserAccessibilityWin(); | 396 manager->GetRoot()->ToBrowserAccessibilityWin(); |
| 397 | 397 |
| 398 BSTR text; | 398 BSTR text; |
| 399 | 399 |
| 400 long text_len; | 400 long text_len; |
| 401 ASSERT_EQ(S_OK, root_obj->get_nCharacters(&text_len)); | 401 ASSERT_EQ(S_OK, root_obj->get_nCharacters(&text_len)); |
| 402 | 402 |
| 403 ASSERT_EQ(S_OK, root_obj->get_text(0, text_len, &text)); | 403 ASSERT_EQ(S_OK, root_obj->get_text(0, text_len, &text)); |
| 404 EXPECT_EQ(text, text1.name + text2.name); | 404 EXPECT_EQ(text, text1.name + text2.name); |
| 405 SysFreeString(text); | 405 SysFreeString(text); |
| 406 | 406 |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 470 root.children.push_back(text2); | 470 root.children.push_back(text2); |
| 471 root.children.push_back(link1); | 471 root.children.push_back(link1); |
| 472 | 472 |
| 473 CountedBrowserAccessibility::global_obj_count_ = 0; | 473 CountedBrowserAccessibility::global_obj_count_ = 0; |
| 474 BrowserAccessibilityManager* manager = BrowserAccessibilityManager::Create( | 474 BrowserAccessibilityManager* manager = BrowserAccessibilityManager::Create( |
| 475 GetDesktopWindow(), root, NULL, | 475 GetDesktopWindow(), root, NULL, |
| 476 new CountedBrowserAccessibilityFactory()); | 476 new CountedBrowserAccessibilityFactory()); |
| 477 ASSERT_EQ(7, CountedBrowserAccessibility::global_obj_count_); | 477 ASSERT_EQ(7, CountedBrowserAccessibility::global_obj_count_); |
| 478 | 478 |
| 479 BrowserAccessibilityWin* root_obj = | 479 BrowserAccessibilityWin* root_obj = |
| 480 manager->GetRoot()->toBrowserAccessibilityWin(); | 480 manager->GetRoot()->ToBrowserAccessibilityWin(); |
| 481 | 481 |
| 482 BSTR text; | 482 BSTR text; |
| 483 | 483 |
| 484 long text_len; | 484 long text_len; |
| 485 ASSERT_EQ(S_OK, root_obj->get_nCharacters(&text_len)); | 485 ASSERT_EQ(S_OK, root_obj->get_nCharacters(&text_len)); |
| 486 | 486 |
| 487 ASSERT_EQ(S_OK, root_obj->get_text(0, text_len, &text)); | 487 ASSERT_EQ(S_OK, root_obj->get_text(0, text_len, &text)); |
| 488 const string16 embed = BrowserAccessibilityWin::kEmbeddedCharacter; | 488 const string16 embed = BrowserAccessibilityWin::kEmbeddedCharacter; |
| 489 EXPECT_EQ(text, text1.name + embed + text2.name + embed); | 489 EXPECT_EQ(text, text1.name + embed + text2.name + embed); |
| 490 SysFreeString(text); | 490 SysFreeString(text); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 525 EXPECT_EQ(S_OK, root_obj->get_hyperlinkIndex(14, &hyperlink_index)); | 525 EXPECT_EQ(S_OK, root_obj->get_hyperlinkIndex(14, &hyperlink_index)); |
| 526 EXPECT_EQ(0, hyperlink_index); | 526 EXPECT_EQ(0, hyperlink_index); |
| 527 EXPECT_EQ(S_OK, root_obj->get_hyperlinkIndex(30, &hyperlink_index)); | 527 EXPECT_EQ(S_OK, root_obj->get_hyperlinkIndex(30, &hyperlink_index)); |
| 528 EXPECT_EQ(1, hyperlink_index); | 528 EXPECT_EQ(1, hyperlink_index); |
| 529 | 529 |
| 530 // Delete the manager and test that all BrowserAccessibility instances are | 530 // Delete the manager and test that all BrowserAccessibility instances are |
| 531 // deleted. | 531 // deleted. |
| 532 delete manager; | 532 delete manager; |
| 533 ASSERT_EQ(0, CountedBrowserAccessibility::global_obj_count_); | 533 ASSERT_EQ(0, CountedBrowserAccessibility::global_obj_count_); |
| 534 } | 534 } |
| OLD | NEW |