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

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

Issue 1905263002: Correctly finds line boundaries in objects with rich text on Windows. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed standard text fields in unit test. Created 4 years, 7 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 "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
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
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
OLDNEW
« no previous file with comments | « content/browser/accessibility/browser_accessibility_win.cc ('k') | content/renderer/accessibility/blink_ax_tree_source.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698