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 |