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

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

Issue 2120523002: The children of non-editable combo boxes, search boxes and text fields should not be hidden (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed Windows browser test. Created 4 years, 5 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.state = 1 << ui::AX_STATE_EDITABLE;
344 text_field.AddStringAttribute(ui::AX_ATTR_VALUE, text_value); 344 text_field.SetValue(text_value);
345 std::vector<int32_t> line_start_offsets; 345 std::vector<int32_t> line_start_offsets;
346 line_start_offsets.push_back(15); 346 line_start_offsets.push_back(15);
347 text_field.AddIntListAttribute( 347 text_field.AddIntListAttribute(
348 ui::AX_ATTR_LINE_BREAKS, line_start_offsets); 348 ui::AX_ATTR_LINE_BREAKS, line_start_offsets);
349 text_field.child_ids.push_back(3); 349 text_field.child_ids.push_back(3);
350 text_field.child_ids.push_back(5); 350 text_field.child_ids.push_back(5);
351 text_field.child_ids.push_back(6); 351 text_field.child_ids.push_back(6);
352 352
353 ui::AXNodeData static_text1; 353 ui::AXNodeData static_text1;
354 static_text1.id = 3; 354 static_text1.id = 3;
355 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; 356 static_text1.state = 1 << ui::AX_STATE_EDITABLE;
357 static_text1.AddStringAttribute(ui::AX_ATTR_NAME, line1); 357 static_text1.SetName(line1);
358 static_text1.child_ids.push_back(4); 358 static_text1.child_ids.push_back(4);
359 359
360 ui::AXNodeData inline_box1; 360 ui::AXNodeData inline_box1;
361 inline_box1.id = 4; 361 inline_box1.id = 4;
362 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; 363 inline_box1.state = 1 << ui::AX_STATE_EDITABLE;
364 inline_box1.AddStringAttribute(ui::AX_ATTR_NAME, line1); 364 inline_box1.SetName(line1);
365 std::vector<int32_t> word_start_offsets1; 365 std::vector<int32_t> word_start_offsets1;
366 word_start_offsets1.push_back(0); 366 word_start_offsets1.push_back(0);
367 word_start_offsets1.push_back(4); 367 word_start_offsets1.push_back(4);
368 word_start_offsets1.push_back(8); 368 word_start_offsets1.push_back(8);
369 inline_box1.AddIntListAttribute( 369 inline_box1.AddIntListAttribute(
370 ui::AX_ATTR_WORD_STARTS, word_start_offsets1); 370 ui::AX_ATTR_WORD_STARTS, word_start_offsets1);
371 371
372 ui::AXNodeData line_break; 372 ui::AXNodeData line_break;
373 line_break.id = 5; 373 line_break.id = 5;
374 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; 375 line_break.state = 1 << ui::AX_STATE_EDITABLE;
376 line_break.AddStringAttribute(ui::AX_ATTR_NAME, "\n"); 376 line_break.SetName("\n");
377 377
378 ui::AXNodeData static_text2; 378 ui::AXNodeData static_text2;
379 static_text2.id = 6; 379 static_text2.id = 6;
380 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; 381 static_text2.state = 1 << ui::AX_STATE_EDITABLE;
382 static_text2.AddStringAttribute(ui::AX_ATTR_NAME, line2); 382 static_text2.SetName(line2);
383 static_text2.child_ids.push_back(7); 383 static_text2.child_ids.push_back(7);
384 384
385 ui::AXNodeData inline_box2; 385 ui::AXNodeData inline_box2;
386 inline_box2.id = 7; 386 inline_box2.id = 7;
387 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; 388 inline_box2.state = 1 << ui::AX_STATE_EDITABLE;
389 inline_box2.AddStringAttribute(ui::AX_ATTR_NAME, line2); 389 inline_box2.SetName(line2);
390 std::vector<int32_t> word_start_offsets2; 390 std::vector<int32_t> word_start_offsets2;
391 word_start_offsets2.push_back(0); 391 word_start_offsets2.push_back(0);
392 word_start_offsets2.push_back(5); 392 word_start_offsets2.push_back(5);
393 word_start_offsets2.push_back(10); 393 word_start_offsets2.push_back(10);
394 inline_box2.AddIntListAttribute( 394 inline_box2.AddIntListAttribute(
395 ui::AX_ATTR_WORD_STARTS, word_start_offsets2); 395 ui::AX_ATTR_WORD_STARTS, word_start_offsets2);
396 396
397 CountedBrowserAccessibility::reset(); 397 CountedBrowserAccessibility::reset();
398 std::unique_ptr<BrowserAccessibilityManager> manager( 398 std::unique_ptr<BrowserAccessibilityManager> manager(
399 BrowserAccessibilityManager::Create( 399 BrowserAccessibilityManager::Create(
400 MakeAXTreeUpdate(root, text_field, static_text1, inline_box1, 400 MakeAXTreeUpdate(root, text_field, static_text1, inline_box1,
401 line_break, static_text2, inline_box2), 401 line_break, static_text2, inline_box2),
402 nullptr, new CountedBrowserAccessibilityFactory())); 402 nullptr, new CountedBrowserAccessibilityFactory()));
403 ASSERT_EQ(7, CountedBrowserAccessibility::num_instances()); 403 ASSERT_EQ(7, CountedBrowserAccessibility::num_instances());
404 404
405 BrowserAccessibilityWin* root_obj = 405 BrowserAccessibilityWin* root_obj =
406 ToBrowserAccessibilityWin(manager->GetRoot()); 406 ToBrowserAccessibilityWin(manager->GetRoot());
407 ASSERT_NE(nullptr, root_obj); 407 ASSERT_NE(nullptr, root_obj);
408 ASSERT_EQ(1U, root_obj->PlatformChildCount()); 408 ASSERT_EQ(1U, root_obj->PlatformChildCount());
409 409
410 BrowserAccessibilityWin* text_field_obj = 410 BrowserAccessibilityWin* text_field_obj =
411 ToBrowserAccessibilityWin(root_obj->PlatformGetChild(0)); 411 ToBrowserAccessibilityWin(root_obj->PlatformGetChild(0));
412 ASSERT_NE(nullptr, text_field_obj); 412 ASSERT_NE(nullptr, text_field_obj);
413 ASSERT_EQ(0U, text_field_obj->PlatformChildCount());
414 413
415 long text_len; 414 long text_len;
416 EXPECT_EQ(S_OK, text_field_obj->get_nCharacters(&text_len)); 415 EXPECT_EQ(S_OK, text_field_obj->get_nCharacters(&text_len));
417 416
418 base::win::ScopedBstr text; 417 base::win::ScopedBstr text;
419 EXPECT_EQ(S_OK, text_field_obj->get_text(0, text_len, text.Receive())); 418 EXPECT_EQ(S_OK, text_field_obj->get_text(0, text_len, text.Receive()));
420 EXPECT_EQ(text_value, base::UTF16ToUTF8(base::string16(text))); 419 EXPECT_EQ(text_value, base::UTF16ToUTF8(base::string16(text)));
421 text.Reset(); 420 text.Reset();
422 421
423 EXPECT_EQ(S_OK, text_field_obj->get_text(0, 4, text.Receive())); 422 EXPECT_EQ(S_OK, text_field_obj->get_text(0, 4, text.Receive()));
(...skipping 1573 matching lines...) Expand 10 before | Expand all | Expand 10 after
1997 1996
1998 ASSERT_NE(nullptr, manager->GetRoot()); 1997 ASSERT_NE(nullptr, manager->GetRoot());
1999 BrowserAccessibilityWin* ax_root = 1998 BrowserAccessibilityWin* ax_root =
2000 ToBrowserAccessibilityWin(manager->GetRoot()); 1999 ToBrowserAccessibilityWin(manager->GetRoot());
2001 ASSERT_NE(nullptr, ax_root); 2000 ASSERT_NE(nullptr, ax_root);
2002 ASSERT_EQ(1U, ax_root->PlatformChildCount()); 2001 ASSERT_EQ(1U, ax_root->PlatformChildCount());
2003 2002
2004 BrowserAccessibilityWin* ax_combo_box = 2003 BrowserAccessibilityWin* ax_combo_box =
2005 ToBrowserAccessibilityWin(ax_root->PlatformGetChild(0)); 2004 ToBrowserAccessibilityWin(ax_root->PlatformGetChild(0));
2006 ASSERT_NE(nullptr, ax_combo_box); 2005 ASSERT_NE(nullptr, ax_combo_box);
2007 ASSERT_EQ(0U, ax_combo_box->PlatformChildCount()); 2006 ASSERT_EQ(1U, ax_combo_box->PlatformChildCount());
2008 2007
2009 HRESULT hr; 2008 HRESULT hr;
2010 LONG start_offset, end_offset; 2009 LONG start_offset, end_offset;
2011 base::win::ScopedBstr text_attributes; 2010 base::win::ScopedBstr text_attributes;
2012 2011
2013 // Ensure that the first part of the value is not marked misspelled. 2012 // Ensure that the first part of the value is not marked misspelled.
2014 for (LONG offset = 0; offset < value1_length; ++offset) { 2013 for (LONG offset = 0; offset < value1_length; ++offset) {
2015 hr = ax_combo_box->get_attributes(offset, &start_offset, &end_offset, 2014 hr = ax_combo_box->get_attributes(offset, &start_offset, &end_offset,
2016 text_attributes.Receive()); 2015 text_attributes.Receive());
2017 EXPECT_EQ(S_OK, hr); 2016 EXPECT_EQ(S_OK, hr);
(...skipping 448 matching lines...) Expand 10 before | Expand all | Expand 10 after
2466 std::vector<AXEventNotificationDetails> events = {event}; 2465 std::vector<AXEventNotificationDetails> events = {event};
2467 manager->OnAccessibilityEvents(events); 2466 manager->OnAccessibilityEvents(events);
2468 2467
2469 EXPECT_HRESULT_SUCCEEDED(ax_child1->get_nRelations(&n_relations)); 2468 EXPECT_HRESULT_SUCCEEDED(ax_child1->get_nRelations(&n_relations));
2470 EXPECT_EQ(2, n_relations); 2469 EXPECT_EQ(2, n_relations);
2471 EXPECT_HRESULT_SUCCEEDED(ax_child2->get_nRelations(&n_relations)); 2470 EXPECT_HRESULT_SUCCEEDED(ax_child2->get_nRelations(&n_relations));
2472 EXPECT_EQ(2, n_relations); 2471 EXPECT_EQ(2, n_relations);
2473 } 2472 }
2474 2473
2475 } // namespace content 2474 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698