| 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 "content/browser/accessibility/browser_accessibility_win.h" | 5 #include "content/browser/accessibility/browser_accessibility_win.h" |
| 6 | 6 |
| 7 #include <stdint.h> | 7 #include <stdint.h> |
| 8 | 8 |
| 9 #include <memory> | 9 #include <memory> |
| 10 | 10 |
| (...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 333 std::string text_value = line1 + '\n' + line2; | 333 std::string text_value = line1 + '\n' + line2; |
| 334 | 334 |
| 335 ui::AXNodeData root; | 335 ui::AXNodeData root; |
| 336 root.id = 1; | 336 root.id = 1; |
| 337 root.role = ui::AX_ROLE_ROOT_WEB_AREA; | 337 root.role = ui::AX_ROLE_ROOT_WEB_AREA; |
| 338 root.child_ids.push_back(2); | 338 root.child_ids.push_back(2); |
| 339 | 339 |
| 340 ui::AXNodeData text_field; | 340 ui::AXNodeData text_field; |
| 341 text_field.id = 2; | 341 text_field.id = 2; |
| 342 text_field.role = ui::AX_ROLE_TEXT_FIELD; | 342 text_field.role = ui::AX_ROLE_TEXT_FIELD; |
| 343 text_field.state = ui::AX_STATE_EDITABLE; |
| 343 text_field.AddStringAttribute(ui::AX_ATTR_VALUE, text_value); | 344 text_field.AddStringAttribute(ui::AX_ATTR_VALUE, text_value); |
| 344 std::vector<int32_t> line_start_offsets; | 345 std::vector<int32_t> line_start_offsets; |
| 345 line_start_offsets.push_back(15); | 346 line_start_offsets.push_back(15); |
| 346 text_field.AddIntListAttribute( | 347 text_field.AddIntListAttribute( |
| 347 ui::AX_ATTR_LINE_BREAKS, line_start_offsets); | 348 ui::AX_ATTR_LINE_BREAKS, line_start_offsets); |
| 348 text_field.child_ids.push_back(3); | 349 text_field.child_ids.push_back(3); |
| 349 text_field.child_ids.push_back(5); | 350 text_field.child_ids.push_back(5); |
| 350 text_field.child_ids.push_back(6); | 351 text_field.child_ids.push_back(6); |
| 351 | 352 |
| 352 ui::AXNodeData static_text1; | 353 ui::AXNodeData static_text1; |
| 353 static_text1.id = 3; | 354 static_text1.id = 3; |
| 354 static_text1.role = ui::AX_ROLE_STATIC_TEXT; | 355 static_text1.role = ui::AX_ROLE_STATIC_TEXT; |
| 356 static_text1.state = ui::AX_STATE_EDITABLE; |
| 355 static_text1.AddStringAttribute(ui::AX_ATTR_NAME, line1); | 357 static_text1.AddStringAttribute(ui::AX_ATTR_NAME, line1); |
| 356 static_text1.child_ids.push_back(4); | 358 static_text1.child_ids.push_back(4); |
| 357 | 359 |
| 358 ui::AXNodeData inline_box1; | 360 ui::AXNodeData inline_box1; |
| 359 inline_box1.id = 4; | 361 inline_box1.id = 4; |
| 360 inline_box1.role = ui::AX_ROLE_INLINE_TEXT_BOX; | 362 inline_box1.role = ui::AX_ROLE_INLINE_TEXT_BOX; |
| 363 inline_box1.state = ui::AX_STATE_EDITABLE; |
| 361 inline_box1.AddStringAttribute(ui::AX_ATTR_NAME, line1); | 364 inline_box1.AddStringAttribute(ui::AX_ATTR_NAME, line1); |
| 362 std::vector<int32_t> word_start_offsets1; | 365 std::vector<int32_t> word_start_offsets1; |
| 363 word_start_offsets1.push_back(0); | 366 word_start_offsets1.push_back(0); |
| 364 word_start_offsets1.push_back(4); | 367 word_start_offsets1.push_back(4); |
| 365 word_start_offsets1.push_back(8); | 368 word_start_offsets1.push_back(8); |
| 366 inline_box1.AddIntListAttribute( | 369 inline_box1.AddIntListAttribute( |
| 367 ui::AX_ATTR_WORD_STARTS, word_start_offsets1); | 370 ui::AX_ATTR_WORD_STARTS, word_start_offsets1); |
| 368 | 371 |
| 369 ui::AXNodeData line_break; | 372 ui::AXNodeData line_break; |
| 370 line_break.id = 5; | 373 line_break.id = 5; |
| 371 line_break.role = ui::AX_ROLE_LINE_BREAK; | 374 line_break.role = ui::AX_ROLE_LINE_BREAK; |
| 375 line_break.state = ui::AX_STATE_EDITABLE; |
| 372 line_break.AddStringAttribute(ui::AX_ATTR_NAME, "\n"); | 376 line_break.AddStringAttribute(ui::AX_ATTR_NAME, "\n"); |
| 373 | 377 |
| 374 ui::AXNodeData static_text2; | 378 ui::AXNodeData static_text2; |
| 375 static_text2.id = 6; | 379 static_text2.id = 6; |
| 376 static_text2.role = ui::AX_ROLE_STATIC_TEXT; | 380 static_text2.role = ui::AX_ROLE_STATIC_TEXT; |
| 381 static_text2.state = ui::AX_STATE_EDITABLE; |
| 377 static_text2.AddStringAttribute(ui::AX_ATTR_NAME, line2); | 382 static_text2.AddStringAttribute(ui::AX_ATTR_NAME, line2); |
| 378 static_text2.child_ids.push_back(7); | 383 static_text2.child_ids.push_back(7); |
| 379 | 384 |
| 380 ui::AXNodeData inline_box2; | 385 ui::AXNodeData inline_box2; |
| 381 inline_box2.id = 7; | 386 inline_box2.id = 7; |
| 382 inline_box2.role = ui::AX_ROLE_INLINE_TEXT_BOX; | 387 inline_box2.role = ui::AX_ROLE_INLINE_TEXT_BOX; |
| 388 inline_box2.state = ui::AX_STATE_EDITABLE; |
| 383 inline_box2.AddStringAttribute(ui::AX_ATTR_NAME, line2); | 389 inline_box2.AddStringAttribute(ui::AX_ATTR_NAME, line2); |
| 384 std::vector<int32_t> word_start_offsets2; | 390 std::vector<int32_t> word_start_offsets2; |
| 385 word_start_offsets2.push_back(0); | 391 word_start_offsets2.push_back(0); |
| 386 word_start_offsets2.push_back(5); | 392 word_start_offsets2.push_back(5); |
| 387 word_start_offsets2.push_back(10); | 393 word_start_offsets2.push_back(10); |
| 388 inline_box2.AddIntListAttribute( | 394 inline_box2.AddIntListAttribute( |
| 389 ui::AX_ATTR_WORD_STARTS, word_start_offsets2); | 395 ui::AX_ATTR_WORD_STARTS, word_start_offsets2); |
| 390 | 396 |
| 391 CountedBrowserAccessibility::reset(); | 397 CountedBrowserAccessibility::reset(); |
| 392 std::unique_ptr<BrowserAccessibilityManager> manager( | 398 std::unique_ptr<BrowserAccessibilityManager> manager( |
| 393 BrowserAccessibilityManager::Create( | 399 BrowserAccessibilityManager::Create( |
| 394 MakeAXTreeUpdate(root, text_field, static_text1, inline_box1, | 400 MakeAXTreeUpdate(root, text_field, static_text1, inline_box1, |
| 395 line_break, static_text2, inline_box2), | 401 line_break, static_text2, inline_box2), |
| 396 nullptr, new CountedBrowserAccessibilityFactory())); | 402 nullptr, new CountedBrowserAccessibilityFactory())); |
| 397 ASSERT_EQ(7, CountedBrowserAccessibility::num_instances()); | 403 ASSERT_EQ(7, CountedBrowserAccessibility::num_instances()); |
| 398 | 404 |
| 399 BrowserAccessibilityWin* root_obj = | 405 BrowserAccessibilityWin* root_obj = |
| 400 ToBrowserAccessibilityWin(manager->GetRoot()); | 406 ToBrowserAccessibilityWin(manager->GetRoot()); |
| 401 ASSERT_NE(nullptr, root_obj); | 407 ASSERT_NE(nullptr, root_obj); |
| 402 ASSERT_EQ(1U, root_obj->PlatformChildCount()); | 408 ASSERT_EQ(1U, root_obj->PlatformChildCount()); |
| 403 | 409 |
| 404 BrowserAccessibilityWin* text_field_obj = | 410 BrowserAccessibilityWin* text_field_obj = |
| 405 ToBrowserAccessibilityWin(root_obj->PlatformGetChild(0)); | 411 ToBrowserAccessibilityWin(root_obj->PlatformGetChild(0)); |
| 406 ASSERT_NE(nullptr, text_field_obj); | 412 ASSERT_NE(nullptr, text_field_obj); |
| 413 ASSERT_EQ(0U, text_field_obj->PlatformChildCount()); |
| 407 | 414 |
| 408 long text_len; | 415 long text_len; |
| 409 EXPECT_EQ(S_OK, text_field_obj->get_nCharacters(&text_len)); | 416 EXPECT_EQ(S_OK, text_field_obj->get_nCharacters(&text_len)); |
| 410 | 417 |
| 411 base::win::ScopedBstr text; | 418 base::win::ScopedBstr text; |
| 412 EXPECT_EQ(S_OK, text_field_obj->get_text(0, text_len, text.Receive())); | 419 EXPECT_EQ(S_OK, text_field_obj->get_text(0, text_len, text.Receive())); |
| 413 EXPECT_EQ(text_value, base::UTF16ToUTF8(base::string16(text))); | 420 EXPECT_EQ(text_value, base::UTF16ToUTF8(base::string16(text))); |
| 414 text.Reset(); | 421 text.Reset(); |
| 415 | 422 |
| 416 EXPECT_EQ(S_OK, text_field_obj->get_text(0, 4, text.Receive())); | 423 EXPECT_EQ(S_OK, text_field_obj->get_text(0, 4, text.Receive())); |
| (...skipping 1578 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1995 base::win::ScopedComPtr<IDispatch> result; | 2002 base::win::ScopedComPtr<IDispatch> result; |
| 1996 EXPECT_EQ(E_INVALIDARG, ToBrowserAccessibilityWin(child)->get_accChild( | 2003 EXPECT_EQ(E_INVALIDARG, ToBrowserAccessibilityWin(child)->get_accChild( |
| 1997 root_unique_id_variant, result.Receive())); | 2004 root_unique_id_variant, result.Receive())); |
| 1998 | 2005 |
| 1999 base::win::ScopedVariant child_unique_id_variant(-child->unique_id()); | 2006 base::win::ScopedVariant child_unique_id_variant(-child->unique_id()); |
| 2000 EXPECT_EQ(S_OK, ToBrowserAccessibilityWin(root)->get_accChild( | 2007 EXPECT_EQ(S_OK, ToBrowserAccessibilityWin(root)->get_accChild( |
| 2001 child_unique_id_variant, result.Receive())); | 2008 child_unique_id_variant, result.Receive())); |
| 2002 } | 2009 } |
| 2003 | 2010 |
| 2004 } // namespace content | 2011 } // namespace content |
| OLD | NEW |