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

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

Issue 116293005: Refactor content/ to use ui::AXNodeData instead of blink. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Update content/DEPS instead of subdirs Created 6 years, 11 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 | Annotate | Revision Log
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 <UIAutomationClient.h> 7 #include <UIAutomationClient.h>
8 #include <UIAutomationCoreApi.h> 8 #include <UIAutomationCoreApi.h>
9 9
10 #include "base/strings/string_number_conversions.h" 10 #include "base/strings/string_number_conversions.h"
(...skipping 362 matching lines...) Expand 10 before | Expand all | Expand 10 after
373 return E_FAIL; 373 return E_FAIL;
374 374
375 if (!def_action) 375 if (!def_action)
376 return E_INVALIDARG; 376 return E_INVALIDARG;
377 377
378 BrowserAccessibilityWin* target = GetTargetFromChildID(var_id); 378 BrowserAccessibilityWin* target = GetTargetFromChildID(var_id);
379 if (!target) 379 if (!target)
380 return E_INVALIDARG; 380 return E_INVALIDARG;
381 381
382 return target->GetStringAttributeAsBstr( 382 return target->GetStringAttributeAsBstr(
383 AccessibilityNodeData::ATTR_SHORTCUT, def_action); 383 ui::AX_ATTR_SHORTCUT, def_action);
384 } 384 }
385 385
386 STDMETHODIMP BrowserAccessibilityWin::get_accDescription(VARIANT var_id, 386 STDMETHODIMP BrowserAccessibilityWin::get_accDescription(VARIANT var_id,
387 BSTR* desc) { 387 BSTR* desc) {
388 if (!instance_active()) 388 if (!instance_active())
389 return E_FAIL; 389 return E_FAIL;
390 390
391 if (!desc) 391 if (!desc)
392 return E_INVALIDARG; 392 return E_INVALIDARG;
393 393
394 BrowserAccessibilityWin* target = GetTargetFromChildID(var_id); 394 BrowserAccessibilityWin* target = GetTargetFromChildID(var_id);
395 if (!target) 395 if (!target)
396 return E_INVALIDARG; 396 return E_INVALIDARG;
397 397
398 return target->GetStringAttributeAsBstr( 398 return target->GetStringAttributeAsBstr(
399 AccessibilityNodeData::ATTR_DESCRIPTION, desc); 399 ui::AX_ATTR_DESCRIPTION, desc);
400 } 400 }
401 401
402 STDMETHODIMP BrowserAccessibilityWin::get_accFocus(VARIANT* focus_child) { 402 STDMETHODIMP BrowserAccessibilityWin::get_accFocus(VARIANT* focus_child) {
403 if (!instance_active()) 403 if (!instance_active())
404 return E_FAIL; 404 return E_FAIL;
405 405
406 if (!focus_child) 406 if (!focus_child)
407 return E_INVALIDARG; 407 return E_INVALIDARG;
408 408
409 BrowserAccessibilityWin* focus = static_cast<BrowserAccessibilityWin*>( 409 BrowserAccessibilityWin* focus = static_cast<BrowserAccessibilityWin*>(
(...skipping 16 matching lines...) Expand all
426 return E_FAIL; 426 return E_FAIL;
427 427
428 if (!help) 428 if (!help)
429 return E_INVALIDARG; 429 return E_INVALIDARG;
430 430
431 BrowserAccessibilityWin* target = GetTargetFromChildID(var_id); 431 BrowserAccessibilityWin* target = GetTargetFromChildID(var_id);
432 if (!target) 432 if (!target)
433 return E_INVALIDARG; 433 return E_INVALIDARG;
434 434
435 return target->GetStringAttributeAsBstr( 435 return target->GetStringAttributeAsBstr(
436 AccessibilityNodeData::ATTR_HELP, help); 436 ui::AX_ATTR_HELP, help);
437 } 437 }
438 438
439 STDMETHODIMP BrowserAccessibilityWin::get_accKeyboardShortcut(VARIANT var_id, 439 STDMETHODIMP BrowserAccessibilityWin::get_accKeyboardShortcut(VARIANT var_id,
440 BSTR* acc_key) { 440 BSTR* acc_key) {
441 if (!instance_active()) 441 if (!instance_active())
442 return E_FAIL; 442 return E_FAIL;
443 443
444 if (!acc_key) 444 if (!acc_key)
445 return E_INVALIDARG; 445 return E_INVALIDARG;
446 446
447 BrowserAccessibilityWin* target = GetTargetFromChildID(var_id); 447 BrowserAccessibilityWin* target = GetTargetFromChildID(var_id);
448 if (!target) 448 if (!target)
449 return E_INVALIDARG; 449 return E_INVALIDARG;
450 450
451 return target->GetStringAttributeAsBstr( 451 return target->GetStringAttributeAsBstr(
452 AccessibilityNodeData::ATTR_SHORTCUT, acc_key); 452 ui::AX_ATTR_SHORTCUT, acc_key);
453 } 453 }
454 454
455 STDMETHODIMP BrowserAccessibilityWin::get_accName(VARIANT var_id, BSTR* name) { 455 STDMETHODIMP BrowserAccessibilityWin::get_accName(VARIANT var_id, BSTR* name) {
456 if (!instance_active()) 456 if (!instance_active())
457 return E_FAIL; 457 return E_FAIL;
458 458
459 if (!name) 459 if (!name)
460 return E_INVALIDARG; 460 return E_INVALIDARG;
461 461
462 BrowserAccessibilityWin* target = GetTargetFromChildID(var_id); 462 BrowserAccessibilityWin* target = GetTargetFromChildID(var_id);
463 if (!target) 463 if (!target)
464 return E_INVALIDARG; 464 return E_INVALIDARG;
465 465
466 std::string name_str = target->name(); 466 std::string name_str = target->name();
467 467
468 // If the name is empty, see if it's labeled by another element. 468 // If the name is empty, see if it's labeled by another element.
469 if (name_str.empty()) { 469 if (name_str.empty()) {
470 int title_elem_id; 470 int title_elem_id;
471 if (target->GetIntAttribute(AccessibilityNodeData::ATTR_TITLE_UI_ELEMENT, 471 if (target->GetIntAttribute(ui::AX_ATTR_TITLE_UI_ELEMENT,
472 &title_elem_id)) { 472 &title_elem_id)) {
473 BrowserAccessibility* title_elem = 473 BrowserAccessibility* title_elem =
474 manager()->GetFromRendererID(title_elem_id); 474 manager()->GetFromRendererID(title_elem_id);
475 if (title_elem) 475 if (title_elem)
476 name_str = title_elem->GetTextRecursive(); 476 name_str = title_elem->GetTextRecursive();
477 } 477 }
478 } 478 }
479 479
480 if (name_str.empty()) 480 if (name_str.empty())
481 return S_FALSE; 481 return S_FALSE;
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
570 target->ia_role() == ROLE_SYSTEM_SLIDER) { 570 target->ia_role() == ROLE_SYSTEM_SLIDER) {
571 base::string16 value_text = target->GetValueText(); 571 base::string16 value_text = target->GetValueText();
572 *value = SysAllocString(value_text.c_str()); 572 *value = SysAllocString(value_text.c_str());
573 DCHECK(*value); 573 DCHECK(*value);
574 return S_OK; 574 return S_OK;
575 } 575 }
576 576
577 // Expose color well value. 577 // Expose color well value.
578 if (target->ia2_role() == IA2_ROLE_COLOR_CHOOSER) { 578 if (target->ia2_role() == IA2_ROLE_COLOR_CHOOSER) {
579 int r = target->GetIntAttribute( 579 int r = target->GetIntAttribute(
580 AccessibilityNodeData::ATTR_COLOR_VALUE_RED); 580 ui::AX_ATTR_COLOR_VALUE_RED);
581 int g = target->GetIntAttribute( 581 int g = target->GetIntAttribute(
582 AccessibilityNodeData::ATTR_COLOR_VALUE_GREEN); 582 ui::AX_ATTR_COLOR_VALUE_GREEN);
583 int b = target->GetIntAttribute( 583 int b = target->GetIntAttribute(
584 AccessibilityNodeData::ATTR_COLOR_VALUE_BLUE); 584 ui::AX_ATTR_COLOR_VALUE_BLUE);
585 base::string16 value_text; 585 base::string16 value_text;
586 value_text = base::IntToString16((r * 100) / 255) + L"% red " + 586 value_text = base::IntToString16((r * 100) / 255) + L"% red " +
587 base::IntToString16((g * 100) / 255) + L"% green " + 587 base::IntToString16((g * 100) / 255) + L"% green " +
588 base::IntToString16((b * 100) / 255) + L"% blue"; 588 base::IntToString16((b * 100) / 255) + L"% blue";
589 *value = SysAllocString(value_text.c_str()); 589 *value = SysAllocString(value_text.c_str());
590 DCHECK(*value); 590 DCHECK(*value);
591 return S_OK; 591 return S_OK;
592 } 592 }
593 593
594 *value = SysAllocString(base::UTF8ToUTF16(target->value()).c_str()); 594 *value = SysAllocString(base::UTF8ToUTF16(target->value()).c_str());
595 DCHECK(*value); 595 DCHECK(*value);
596 return S_OK; 596 return S_OK;
597 } 597 }
598 598
599 STDMETHODIMP BrowserAccessibilityWin::get_accHelpTopic(BSTR* help_file, 599 STDMETHODIMP BrowserAccessibilityWin::get_accHelpTopic(BSTR* help_file,
600 VARIANT var_id, 600 VARIANT var_id,
601 LONG* topic_id) { 601 LONG* topic_id) {
602 return E_NOTIMPL; 602 return E_NOTIMPL;
603 } 603 }
604 604
605 STDMETHODIMP BrowserAccessibilityWin::get_accSelection(VARIANT* selected) { 605 STDMETHODIMP BrowserAccessibilityWin::get_accSelection(VARIANT* selected) {
606 if (!instance_active()) 606 if (!instance_active())
607 return E_FAIL; 607 return E_FAIL;
608 608
609 if (blink_role() != blink::WebAXRoleListBox) 609 if (blink_role() != ui::AX_ROLE_LIST_BOX)
610 return E_NOTIMPL; 610 return E_NOTIMPL;
611 611
612 unsigned long selected_count = 0; 612 unsigned long selected_count = 0;
613 for (size_t i = 0; i < children().size(); ++i) { 613 for (size_t i = 0; i < children().size(); ++i) {
614 if (children()[i]->HasState(blink::WebAXStateSelected)) 614 if (children()[i]->HasState(ui::AX_STATE_SELECTED))
615 ++selected_count; 615 ++selected_count;
616 } 616 }
617 617
618 if (selected_count == 0) { 618 if (selected_count == 0) {
619 selected->vt = VT_EMPTY; 619 selected->vt = VT_EMPTY;
620 return S_OK; 620 return S_OK;
621 } 621 }
622 622
623 if (selected_count == 1) { 623 if (selected_count == 1) {
624 for (size_t i = 0; i < children().size(); ++i) { 624 for (size_t i = 0; i < children().size(); ++i) {
625 if (children()[i]->HasState(blink::WebAXStateSelected)) { 625 if (children()[i]->HasState(ui::AX_STATE_SELECTED)) {
626 selected->vt = VT_DISPATCH; 626 selected->vt = VT_DISPATCH;
627 selected->pdispVal = 627 selected->pdispVal =
628 children()[i]->ToBrowserAccessibilityWin()->NewReference(); 628 children()[i]->ToBrowserAccessibilityWin()->NewReference();
629 return S_OK; 629 return S_OK;
630 } 630 }
631 } 631 }
632 } 632 }
633 633
634 // Multiple items are selected. 634 // Multiple items are selected.
635 base::win::EnumVariant* enum_variant = 635 base::win::EnumVariant* enum_variant =
636 new base::win::EnumVariant(selected_count); 636 new base::win::EnumVariant(selected_count);
637 enum_variant->AddRef(); 637 enum_variant->AddRef();
638 unsigned long index = 0; 638 unsigned long index = 0;
639 for (size_t i = 0; i < children().size(); ++i) { 639 for (size_t i = 0; i < children().size(); ++i) {
640 if (children()[i]->HasState(blink::WebAXStateSelected)) { 640 if (children()[i]->HasState(ui::AX_STATE_SELECTED)) {
641 enum_variant->ItemAt(index)->vt = VT_DISPATCH; 641 enum_variant->ItemAt(index)->vt = VT_DISPATCH;
642 enum_variant->ItemAt(index)->pdispVal = 642 enum_variant->ItemAt(index)->pdispVal =
643 children()[i]->ToBrowserAccessibilityWin()->NewReference(); 643 children()[i]->ToBrowserAccessibilityWin()->NewReference();
644 ++index; 644 ++index;
645 } 645 }
646 } 646 }
647 selected->vt = VT_UNKNOWN; 647 selected->vt = VT_UNKNOWN;
648 selected->punkVal = static_cast<IUnknown*>( 648 selected->punkVal = static_cast<IUnknown*>(
649 static_cast<base::win::IUnknownImpl*>(enum_variant)); 649 static_cast<base::win::IUnknownImpl*>(enum_variant));
650 return S_OK; 650 return S_OK;
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after
868 STDMETHODIMP BrowserAccessibilityWin::get_groupPosition( 868 STDMETHODIMP BrowserAccessibilityWin::get_groupPosition(
869 LONG* group_level, 869 LONG* group_level,
870 LONG* similar_items_in_group, 870 LONG* similar_items_in_group,
871 LONG* position_in_group) { 871 LONG* position_in_group) {
872 if (!instance_active()) 872 if (!instance_active())
873 return E_FAIL; 873 return E_FAIL;
874 874
875 if (!group_level || !similar_items_in_group || !position_in_group) 875 if (!group_level || !similar_items_in_group || !position_in_group)
876 return E_INVALIDARG; 876 return E_INVALIDARG;
877 877
878 if (blink_role() == blink::WebAXRoleListBoxOption && 878 if (blink_role() == ui::AX_ROLE_LIST_BOX_OPTION &&
879 parent() && 879 parent() &&
880 parent()->role() == blink::WebAXRoleListBox) { 880 parent()->role() == ui::AX_ROLE_LIST_BOX) {
881 *group_level = 0; 881 *group_level = 0;
882 *similar_items_in_group = parent()->PlatformChildCount(); 882 *similar_items_in_group = parent()->PlatformChildCount();
883 *position_in_group = index_in_parent() + 1; 883 *position_in_group = index_in_parent() + 1;
884 return S_OK; 884 return S_OK;
885 } 885 }
886 886
887 return E_NOTIMPL; 887 return E_NOTIMPL;
888 } 888 }
889 889
890 // 890 //
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
964 // 964 //
965 965
966 STDMETHODIMP BrowserAccessibilityWin::get_description(BSTR* desc) { 966 STDMETHODIMP BrowserAccessibilityWin::get_description(BSTR* desc) {
967 if (!instance_active()) 967 if (!instance_active())
968 return E_FAIL; 968 return E_FAIL;
969 969
970 if (!desc) 970 if (!desc)
971 return E_INVALIDARG; 971 return E_INVALIDARG;
972 972
973 return GetStringAttributeAsBstr( 973 return GetStringAttributeAsBstr(
974 AccessibilityNodeData::ATTR_DESCRIPTION, desc); 974 ui::AX_ATTR_DESCRIPTION, desc);
975 } 975 }
976 976
977 STDMETHODIMP BrowserAccessibilityWin::get_imagePosition( 977 STDMETHODIMP BrowserAccessibilityWin::get_imagePosition(
978 enum IA2CoordinateType coordinate_type, 978 enum IA2CoordinateType coordinate_type,
979 LONG* x, 979 LONG* x,
980 LONG* y) { 980 LONG* y) {
981 if (!instance_active()) 981 if (!instance_active())
982 return E_FAIL; 982 return E_FAIL;
983 983
984 if (!x || !y) 984 if (!x || !y)
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
1027 IUnknown** accessible) { 1027 IUnknown** accessible) {
1028 if (!instance_active()) 1028 if (!instance_active())
1029 return E_FAIL; 1029 return E_FAIL;
1030 1030
1031 if (!accessible) 1031 if (!accessible)
1032 return E_INVALIDARG; 1032 return E_INVALIDARG;
1033 1033
1034 int columns; 1034 int columns;
1035 int rows; 1035 int rows;
1036 if (!GetIntAttribute( 1036 if (!GetIntAttribute(
1037 AccessibilityNodeData::ATTR_TABLE_COLUMN_COUNT, &columns) || 1037 ui::AX_ATTR_TABLE_COLUMN_COUNT, &columns) ||
1038 !GetIntAttribute( 1038 !GetIntAttribute(
1039 AccessibilityNodeData::ATTR_TABLE_ROW_COUNT, &rows) || 1039 ui::AX_ATTR_TABLE_ROW_COUNT, &rows) ||
1040 columns <= 0 || 1040 columns <= 0 ||
1041 rows <= 0) { 1041 rows <= 0) {
1042 return S_FALSE; 1042 return S_FALSE;
1043 } 1043 }
1044 1044
1045 if (row < 0 || row >= rows || column < 0 || column >= columns) 1045 if (row < 0 || row >= rows || column < 0 || column >= columns)
1046 return E_INVALIDARG; 1046 return E_INVALIDARG;
1047 1047
1048 const std::vector<int32>& cell_ids = GetIntListAttribute( 1048 const std::vector<int32>& cell_ids = GetIntListAttribute(
1049 AccessibilityNodeData::ATTR_CELL_IDS); 1049 ui::AX_ATTR_CELL_IDS);
1050 DCHECK_EQ(columns * rows, static_cast<int>(cell_ids.size())); 1050 DCHECK_EQ(columns * rows, static_cast<int>(cell_ids.size()));
1051 1051
1052 int cell_id = cell_ids[row * columns + column]; 1052 int cell_id = cell_ids[row * columns + column];
1053 BrowserAccessibilityWin* cell = GetFromRendererID(cell_id); 1053 BrowserAccessibilityWin* cell = GetFromRendererID(cell_id);
1054 if (cell) { 1054 if (cell) {
1055 *accessible = static_cast<IAccessible*>(cell->NewReference()); 1055 *accessible = static_cast<IAccessible*>(cell->NewReference());
1056 return S_OK; 1056 return S_OK;
1057 } 1057 }
1058 1058
1059 *accessible = NULL; 1059 *accessible = NULL;
(...skipping 16 matching lines...) Expand all
1076 long* cell_index) { 1076 long* cell_index) {
1077 if (!instance_active()) 1077 if (!instance_active())
1078 return E_FAIL; 1078 return E_FAIL;
1079 1079
1080 if (!cell_index) 1080 if (!cell_index)
1081 return E_INVALIDARG; 1081 return E_INVALIDARG;
1082 1082
1083 int columns; 1083 int columns;
1084 int rows; 1084 int rows;
1085 if (!GetIntAttribute( 1085 if (!GetIntAttribute(
1086 AccessibilityNodeData::ATTR_TABLE_COLUMN_COUNT, &columns) || 1086 ui::AX_ATTR_TABLE_COLUMN_COUNT, &columns) ||
1087 !GetIntAttribute( 1087 !GetIntAttribute(
1088 AccessibilityNodeData::ATTR_TABLE_ROW_COUNT, &rows) || 1088 ui::AX_ATTR_TABLE_ROW_COUNT, &rows) ||
1089 columns <= 0 || 1089 columns <= 0 ||
1090 rows <= 0) { 1090 rows <= 0) {
1091 return S_FALSE; 1091 return S_FALSE;
1092 } 1092 }
1093 1093
1094 if (row < 0 || row >= rows || column < 0 || column >= columns) 1094 if (row < 0 || row >= rows || column < 0 || column >= columns)
1095 return E_INVALIDARG; 1095 return E_INVALIDARG;
1096 1096
1097 const std::vector<int32>& cell_ids = GetIntListAttribute( 1097 const std::vector<int32>& cell_ids = GetIntListAttribute(
1098 AccessibilityNodeData::ATTR_CELL_IDS); 1098 ui::AX_ATTR_CELL_IDS);
1099 const std::vector<int32>& unique_cell_ids = GetIntListAttribute( 1099 const std::vector<int32>& unique_cell_ids = GetIntListAttribute(
1100 AccessibilityNodeData::ATTR_UNIQUE_CELL_IDS); 1100 ui::AX_ATTR_UNIQUE_CELL_IDS);
1101 DCHECK_EQ(columns * rows, static_cast<int>(cell_ids.size())); 1101 DCHECK_EQ(columns * rows, static_cast<int>(cell_ids.size()));
1102 int cell_id = cell_ids[row * columns + column]; 1102 int cell_id = cell_ids[row * columns + column];
1103 for (size_t i = 0; i < unique_cell_ids.size(); ++i) { 1103 for (size_t i = 0; i < unique_cell_ids.size(); ++i) {
1104 if (unique_cell_ids[i] == cell_id) { 1104 if (unique_cell_ids[i] == cell_id) {
1105 *cell_index = (long)i; 1105 *cell_index = (long)i;
1106 return S_OK; 1106 return S_OK;
1107 } 1107 }
1108 } 1108 }
1109 1109
1110 return S_FALSE; 1110 return S_FALSE;
1111 } 1111 }
1112 1112
1113 STDMETHODIMP BrowserAccessibilityWin::get_columnDescription(long column, 1113 STDMETHODIMP BrowserAccessibilityWin::get_columnDescription(long column,
1114 BSTR* description) { 1114 BSTR* description) {
1115 if (!instance_active()) 1115 if (!instance_active())
1116 return E_FAIL; 1116 return E_FAIL;
1117 1117
1118 if (!description) 1118 if (!description)
1119 return E_INVALIDARG; 1119 return E_INVALIDARG;
1120 1120
1121 int columns; 1121 int columns;
1122 int rows; 1122 int rows;
1123 if (!GetIntAttribute( 1123 if (!GetIntAttribute(
1124 AccessibilityNodeData::ATTR_TABLE_COLUMN_COUNT, &columns) || 1124 ui::AX_ATTR_TABLE_COLUMN_COUNT, &columns) ||
1125 !GetIntAttribute(AccessibilityNodeData::ATTR_TABLE_ROW_COUNT, &rows) || 1125 !GetIntAttribute(ui::AX_ATTR_TABLE_ROW_COUNT, &rows) ||
1126 columns <= 0 || 1126 columns <= 0 ||
1127 rows <= 0) { 1127 rows <= 0) {
1128 return S_FALSE; 1128 return S_FALSE;
1129 } 1129 }
1130 1130
1131 if (column < 0 || column >= columns) 1131 if (column < 0 || column >= columns)
1132 return E_INVALIDARG; 1132 return E_INVALIDARG;
1133 1133
1134 const std::vector<int32>& cell_ids = GetIntListAttribute( 1134 const std::vector<int32>& cell_ids = GetIntListAttribute(
1135 AccessibilityNodeData::ATTR_CELL_IDS); 1135 ui::AX_ATTR_CELL_IDS);
1136 for (int i = 0; i < rows; ++i) { 1136 for (int i = 0; i < rows; ++i) {
1137 int cell_id = cell_ids[i * columns + column]; 1137 int cell_id = cell_ids[i * columns + column];
1138 BrowserAccessibilityWin* cell = static_cast<BrowserAccessibilityWin*>( 1138 BrowserAccessibilityWin* cell = static_cast<BrowserAccessibilityWin*>(
1139 manager()->GetFromRendererID(cell_id)); 1139 manager()->GetFromRendererID(cell_id));
1140 if (cell && cell->blink_role() == blink::WebAXRoleColumnHeader) { 1140 if (cell && cell->blink_role() == ui::AX_ROLE_COLUMN_HEADER) {
1141 base::string16 cell_name = cell->GetString16Attribute( 1141 base::string16 cell_name = cell->GetString16Attribute(
1142 AccessibilityNodeData::ATTR_NAME); 1142 ui::AX_ATTR_NAME);
1143 if (cell_name.size() > 0) { 1143 if (cell_name.size() > 0) {
1144 *description = SysAllocString(cell_name.c_str()); 1144 *description = SysAllocString(cell_name.c_str());
1145 return S_OK; 1145 return S_OK;
1146 } 1146 }
1147 1147
1148 return cell->GetStringAttributeAsBstr( 1148 return cell->GetStringAttributeAsBstr(
1149 AccessibilityNodeData::ATTR_DESCRIPTION, description); 1149 ui::AX_ATTR_DESCRIPTION, description);
1150 } 1150 }
1151 } 1151 }
1152 1152
1153 return S_FALSE; 1153 return S_FALSE;
1154 } 1154 }
1155 1155
1156 STDMETHODIMP BrowserAccessibilityWin::get_columnExtentAt( 1156 STDMETHODIMP BrowserAccessibilityWin::get_columnExtentAt(
1157 long row, 1157 long row,
1158 long column, 1158 long column,
1159 long* n_columns_spanned) { 1159 long* n_columns_spanned) {
1160 if (!instance_active()) 1160 if (!instance_active())
1161 return E_FAIL; 1161 return E_FAIL;
1162 1162
1163 if (!n_columns_spanned) 1163 if (!n_columns_spanned)
1164 return E_INVALIDARG; 1164 return E_INVALIDARG;
1165 1165
1166 int columns; 1166 int columns;
1167 int rows; 1167 int rows;
1168 if (!GetIntAttribute( 1168 if (!GetIntAttribute(
1169 AccessibilityNodeData::ATTR_TABLE_COLUMN_COUNT, &columns) || 1169 ui::AX_ATTR_TABLE_COLUMN_COUNT, &columns) ||
1170 !GetIntAttribute(AccessibilityNodeData::ATTR_TABLE_ROW_COUNT, &rows) || 1170 !GetIntAttribute(ui::AX_ATTR_TABLE_ROW_COUNT, &rows) ||
1171 columns <= 0 || 1171 columns <= 0 ||
1172 rows <= 0) { 1172 rows <= 0) {
1173 return S_FALSE; 1173 return S_FALSE;
1174 } 1174 }
1175 1175
1176 if (row < 0 || row >= rows || column < 0 || column >= columns) 1176 if (row < 0 || row >= rows || column < 0 || column >= columns)
1177 return E_INVALIDARG; 1177 return E_INVALIDARG;
1178 1178
1179 const std::vector<int32>& cell_ids = GetIntListAttribute( 1179 const std::vector<int32>& cell_ids = GetIntListAttribute(
1180 AccessibilityNodeData::ATTR_CELL_IDS); 1180 ui::AX_ATTR_CELL_IDS);
1181 int cell_id = cell_ids[row * columns + column]; 1181 int cell_id = cell_ids[row * columns + column];
1182 BrowserAccessibilityWin* cell = static_cast<BrowserAccessibilityWin*>( 1182 BrowserAccessibilityWin* cell = static_cast<BrowserAccessibilityWin*>(
1183 manager()->GetFromRendererID(cell_id)); 1183 manager()->GetFromRendererID(cell_id));
1184 int colspan; 1184 int colspan;
1185 if (cell && 1185 if (cell &&
1186 cell->GetIntAttribute( 1186 cell->GetIntAttribute(
1187 AccessibilityNodeData::ATTR_TABLE_CELL_COLUMN_SPAN, &colspan) && 1187 ui::AX_ATTR_TABLE_CELL_COLUMN_SPAN, &colspan) &&
1188 colspan >= 1) { 1188 colspan >= 1) {
1189 *n_columns_spanned = colspan; 1189 *n_columns_spanned = colspan;
1190 return S_OK; 1190 return S_OK;
1191 } 1191 }
1192 1192
1193 return S_FALSE; 1193 return S_FALSE;
1194 } 1194 }
1195 1195
1196 STDMETHODIMP BrowserAccessibilityWin::get_columnHeader( 1196 STDMETHODIMP BrowserAccessibilityWin::get_columnHeader(
1197 IAccessibleTable** accessible_table, 1197 IAccessibleTable** accessible_table,
1198 long* starting_row_index) { 1198 long* starting_row_index) {
1199 // TODO(dmazzoni): implement 1199 // TODO(dmazzoni): implement
1200 return E_NOTIMPL; 1200 return E_NOTIMPL;
1201 } 1201 }
1202 1202
1203 STDMETHODIMP BrowserAccessibilityWin::get_columnIndex(long cell_index, 1203 STDMETHODIMP BrowserAccessibilityWin::get_columnIndex(long cell_index,
1204 long* column_index) { 1204 long* column_index) {
1205 if (!instance_active()) 1205 if (!instance_active())
1206 return E_FAIL; 1206 return E_FAIL;
1207 1207
1208 if (!column_index) 1208 if (!column_index)
1209 return E_INVALIDARG; 1209 return E_INVALIDARG;
1210 1210
1211 const std::vector<int32>& unique_cell_ids = GetIntListAttribute( 1211 const std::vector<int32>& unique_cell_ids = GetIntListAttribute(
1212 AccessibilityNodeData::ATTR_UNIQUE_CELL_IDS); 1212 ui::AX_ATTR_UNIQUE_CELL_IDS);
1213 int cell_id_count = static_cast<int>(unique_cell_ids.size()); 1213 int cell_id_count = static_cast<int>(unique_cell_ids.size());
1214 if (cell_index < 0) 1214 if (cell_index < 0)
1215 return E_INVALIDARG; 1215 return E_INVALIDARG;
1216 if (cell_index >= cell_id_count) 1216 if (cell_index >= cell_id_count)
1217 return S_FALSE; 1217 return S_FALSE;
1218 1218
1219 int cell_id = unique_cell_ids[cell_index]; 1219 int cell_id = unique_cell_ids[cell_index];
1220 BrowserAccessibilityWin* cell = 1220 BrowserAccessibilityWin* cell =
1221 manager()->GetFromRendererID(cell_id)->ToBrowserAccessibilityWin(); 1221 manager()->GetFromRendererID(cell_id)->ToBrowserAccessibilityWin();
1222 int col_index; 1222 int col_index;
1223 if (cell && 1223 if (cell &&
1224 cell->GetIntAttribute( 1224 cell->GetIntAttribute(
1225 AccessibilityNodeData::ATTR_TABLE_CELL_COLUMN_INDEX, &col_index)) { 1225 ui::AX_ATTR_TABLE_CELL_COLUMN_INDEX, &col_index)) {
1226 *column_index = col_index; 1226 *column_index = col_index;
1227 return S_OK; 1227 return S_OK;
1228 } 1228 }
1229 1229
1230 return S_FALSE; 1230 return S_FALSE;
1231 } 1231 }
1232 1232
1233 STDMETHODIMP BrowserAccessibilityWin::get_nColumns(long* column_count) { 1233 STDMETHODIMP BrowserAccessibilityWin::get_nColumns(long* column_count) {
1234 if (!instance_active()) 1234 if (!instance_active())
1235 return E_FAIL; 1235 return E_FAIL;
1236 1236
1237 if (!column_count) 1237 if (!column_count)
1238 return E_INVALIDARG; 1238 return E_INVALIDARG;
1239 1239
1240 int columns; 1240 int columns;
1241 if (GetIntAttribute( 1241 if (GetIntAttribute(
1242 AccessibilityNodeData::ATTR_TABLE_COLUMN_COUNT, &columns)) { 1242 ui::AX_ATTR_TABLE_COLUMN_COUNT, &columns)) {
1243 *column_count = columns; 1243 *column_count = columns;
1244 return S_OK; 1244 return S_OK;
1245 } 1245 }
1246 1246
1247 return S_FALSE; 1247 return S_FALSE;
1248 } 1248 }
1249 1249
1250 STDMETHODIMP BrowserAccessibilityWin::get_nRows(long* row_count) { 1250 STDMETHODIMP BrowserAccessibilityWin::get_nRows(long* row_count) {
1251 if (!instance_active()) 1251 if (!instance_active())
1252 return E_FAIL; 1252 return E_FAIL;
1253 1253
1254 if (!row_count) 1254 if (!row_count)
1255 return E_INVALIDARG; 1255 return E_INVALIDARG;
1256 1256
1257 int rows; 1257 int rows;
1258 if (GetIntAttribute(AccessibilityNodeData::ATTR_TABLE_ROW_COUNT, &rows)) { 1258 if (GetIntAttribute(ui::AX_ATTR_TABLE_ROW_COUNT, &rows)) {
1259 *row_count = rows; 1259 *row_count = rows;
1260 return S_OK; 1260 return S_OK;
1261 } 1261 }
1262 1262
1263 return S_FALSE; 1263 return S_FALSE;
1264 } 1264 }
1265 1265
1266 STDMETHODIMP BrowserAccessibilityWin::get_nSelectedChildren(long* cell_count) { 1266 STDMETHODIMP BrowserAccessibilityWin::get_nSelectedChildren(long* cell_count) {
1267 if (!instance_active()) 1267 if (!instance_active())
1268 return E_FAIL; 1268 return E_FAIL;
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
1301 BSTR* description) { 1301 BSTR* description) {
1302 if (!instance_active()) 1302 if (!instance_active())
1303 return E_FAIL; 1303 return E_FAIL;
1304 1304
1305 if (!description) 1305 if (!description)
1306 return E_INVALIDARG; 1306 return E_INVALIDARG;
1307 1307
1308 int columns; 1308 int columns;
1309 int rows; 1309 int rows;
1310 if (!GetIntAttribute( 1310 if (!GetIntAttribute(
1311 AccessibilityNodeData::ATTR_TABLE_COLUMN_COUNT, &columns) || 1311 ui::AX_ATTR_TABLE_COLUMN_COUNT, &columns) ||
1312 !GetIntAttribute(AccessibilityNodeData::ATTR_TABLE_ROW_COUNT, &rows) || 1312 !GetIntAttribute(ui::AX_ATTR_TABLE_ROW_COUNT, &rows) ||
1313 columns <= 0 || 1313 columns <= 0 ||
1314 rows <= 0) { 1314 rows <= 0) {
1315 return S_FALSE; 1315 return S_FALSE;
1316 } 1316 }
1317 1317
1318 if (row < 0 || row >= rows) 1318 if (row < 0 || row >= rows)
1319 return E_INVALIDARG; 1319 return E_INVALIDARG;
1320 1320
1321 const std::vector<int32>& cell_ids = GetIntListAttribute( 1321 const std::vector<int32>& cell_ids = GetIntListAttribute(
1322 AccessibilityNodeData::ATTR_CELL_IDS); 1322 ui::AX_ATTR_CELL_IDS);
1323 for (int i = 0; i < columns; ++i) { 1323 for (int i = 0; i < columns; ++i) {
1324 int cell_id = cell_ids[row * columns + i]; 1324 int cell_id = cell_ids[row * columns + i];
1325 BrowserAccessibilityWin* cell = 1325 BrowserAccessibilityWin* cell =
1326 manager()->GetFromRendererID(cell_id)->ToBrowserAccessibilityWin(); 1326 manager()->GetFromRendererID(cell_id)->ToBrowserAccessibilityWin();
1327 if (cell && cell->blink_role() == blink::WebAXRoleRowHeader) { 1327 if (cell && cell->blink_role() == ui::AX_ROLE_ROW_HEADER) {
1328 base::string16 cell_name = cell->GetString16Attribute( 1328 base::string16 cell_name = cell->GetString16Attribute(
1329 AccessibilityNodeData::ATTR_NAME); 1329 ui::AX_ATTR_NAME);
1330 if (cell_name.size() > 0) { 1330 if (cell_name.size() > 0) {
1331 *description = SysAllocString(cell_name.c_str()); 1331 *description = SysAllocString(cell_name.c_str());
1332 return S_OK; 1332 return S_OK;
1333 } 1333 }
1334 1334
1335 return cell->GetStringAttributeAsBstr( 1335 return cell->GetStringAttributeAsBstr(
1336 AccessibilityNodeData::ATTR_DESCRIPTION, description); 1336 ui::AX_ATTR_DESCRIPTION, description);
1337 } 1337 }
1338 } 1338 }
1339 1339
1340 return S_FALSE; 1340 return S_FALSE;
1341 } 1341 }
1342 1342
1343 STDMETHODIMP BrowserAccessibilityWin::get_rowExtentAt(long row, 1343 STDMETHODIMP BrowserAccessibilityWin::get_rowExtentAt(long row,
1344 long column, 1344 long column,
1345 long* n_rows_spanned) { 1345 long* n_rows_spanned) {
1346 if (!instance_active()) 1346 if (!instance_active())
1347 return E_FAIL; 1347 return E_FAIL;
1348 1348
1349 if (!n_rows_spanned) 1349 if (!n_rows_spanned)
1350 return E_INVALIDARG; 1350 return E_INVALIDARG;
1351 1351
1352 int columns; 1352 int columns;
1353 int rows; 1353 int rows;
1354 if (!GetIntAttribute( 1354 if (!GetIntAttribute(
1355 AccessibilityNodeData::ATTR_TABLE_COLUMN_COUNT, &columns) || 1355 ui::AX_ATTR_TABLE_COLUMN_COUNT, &columns) ||
1356 !GetIntAttribute(AccessibilityNodeData::ATTR_TABLE_ROW_COUNT, &rows) || 1356 !GetIntAttribute(ui::AX_ATTR_TABLE_ROW_COUNT, &rows) ||
1357 columns <= 0 || 1357 columns <= 0 ||
1358 rows <= 0) { 1358 rows <= 0) {
1359 return S_FALSE; 1359 return S_FALSE;
1360 } 1360 }
1361 1361
1362 if (row < 0 || row >= rows || column < 0 || column >= columns) 1362 if (row < 0 || row >= rows || column < 0 || column >= columns)
1363 return E_INVALIDARG; 1363 return E_INVALIDARG;
1364 1364
1365 const std::vector<int32>& cell_ids = GetIntListAttribute( 1365 const std::vector<int32>& cell_ids = GetIntListAttribute(
1366 AccessibilityNodeData::ATTR_CELL_IDS); 1366 ui::AX_ATTR_CELL_IDS);
1367 int cell_id = cell_ids[row * columns + column]; 1367 int cell_id = cell_ids[row * columns + column];
1368 BrowserAccessibilityWin* cell = 1368 BrowserAccessibilityWin* cell =
1369 manager()->GetFromRendererID(cell_id)->ToBrowserAccessibilityWin(); 1369 manager()->GetFromRendererID(cell_id)->ToBrowserAccessibilityWin();
1370 int rowspan; 1370 int rowspan;
1371 if (cell && 1371 if (cell &&
1372 cell->GetIntAttribute( 1372 cell->GetIntAttribute(
1373 AccessibilityNodeData::ATTR_TABLE_CELL_ROW_SPAN, &rowspan) && 1373 ui::AX_ATTR_TABLE_CELL_ROW_SPAN, &rowspan) &&
1374 rowspan >= 1) { 1374 rowspan >= 1) {
1375 *n_rows_spanned = rowspan; 1375 *n_rows_spanned = rowspan;
1376 return S_OK; 1376 return S_OK;
1377 } 1377 }
1378 1378
1379 return S_FALSE; 1379 return S_FALSE;
1380 } 1380 }
1381 1381
1382 STDMETHODIMP BrowserAccessibilityWin::get_rowHeader( 1382 STDMETHODIMP BrowserAccessibilityWin::get_rowHeader(
1383 IAccessibleTable** accessible_table, 1383 IAccessibleTable** accessible_table,
1384 long* starting_column_index) { 1384 long* starting_column_index) {
1385 // TODO(dmazzoni): implement 1385 // TODO(dmazzoni): implement
1386 return E_NOTIMPL; 1386 return E_NOTIMPL;
1387 } 1387 }
1388 1388
1389 STDMETHODIMP BrowserAccessibilityWin::get_rowIndex(long cell_index, 1389 STDMETHODIMP BrowserAccessibilityWin::get_rowIndex(long cell_index,
1390 long* row_index) { 1390 long* row_index) {
1391 if (!instance_active()) 1391 if (!instance_active())
1392 return E_FAIL; 1392 return E_FAIL;
1393 1393
1394 if (!row_index) 1394 if (!row_index)
1395 return E_INVALIDARG; 1395 return E_INVALIDARG;
1396 1396
1397 const std::vector<int32>& unique_cell_ids = GetIntListAttribute( 1397 const std::vector<int32>& unique_cell_ids = GetIntListAttribute(
1398 AccessibilityNodeData::ATTR_UNIQUE_CELL_IDS); 1398 ui::AX_ATTR_UNIQUE_CELL_IDS);
1399 int cell_id_count = static_cast<int>(unique_cell_ids.size()); 1399 int cell_id_count = static_cast<int>(unique_cell_ids.size());
1400 if (cell_index < 0) 1400 if (cell_index < 0)
1401 return E_INVALIDARG; 1401 return E_INVALIDARG;
1402 if (cell_index >= cell_id_count) 1402 if (cell_index >= cell_id_count)
1403 return S_FALSE; 1403 return S_FALSE;
1404 1404
1405 int cell_id = unique_cell_ids[cell_index]; 1405 int cell_id = unique_cell_ids[cell_index];
1406 BrowserAccessibilityWin* cell = 1406 BrowserAccessibilityWin* cell =
1407 manager()->GetFromRendererID(cell_id)->ToBrowserAccessibilityWin(); 1407 manager()->GetFromRendererID(cell_id)->ToBrowserAccessibilityWin();
1408 int cell_row_index; 1408 int cell_row_index;
1409 if (cell && 1409 if (cell &&
1410 cell->GetIntAttribute( 1410 cell->GetIntAttribute(
1411 AccessibilityNodeData::ATTR_TABLE_CELL_ROW_INDEX, &cell_row_index)) { 1411 ui::AX_ATTR_TABLE_CELL_ROW_INDEX, &cell_row_index)) {
1412 *row_index = cell_row_index; 1412 *row_index = cell_row_index;
1413 return S_OK; 1413 return S_OK;
1414 } 1414 }
1415 1415
1416 return S_FALSE; 1416 return S_FALSE;
1417 } 1417 }
1418 1418
1419 STDMETHODIMP BrowserAccessibilityWin::get_selectedChildren(long max_children, 1419 STDMETHODIMP BrowserAccessibilityWin::get_selectedChildren(long max_children,
1420 long** children, 1420 long** children,
1421 long* n_children) { 1421 long* n_children) {
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
1517 long* row_extents, 1517 long* row_extents,
1518 long* column_extents, 1518 long* column_extents,
1519 boolean* is_selected) { 1519 boolean* is_selected) {
1520 if (!instance_active()) 1520 if (!instance_active())
1521 return E_FAIL; 1521 return E_FAIL;
1522 1522
1523 if (!row || !column || !row_extents || !column_extents || !is_selected) 1523 if (!row || !column || !row_extents || !column_extents || !is_selected)
1524 return E_INVALIDARG; 1524 return E_INVALIDARG;
1525 1525
1526 const std::vector<int32>& unique_cell_ids = GetIntListAttribute( 1526 const std::vector<int32>& unique_cell_ids = GetIntListAttribute(
1527 AccessibilityNodeData::ATTR_UNIQUE_CELL_IDS); 1527 ui::AX_ATTR_UNIQUE_CELL_IDS);
1528 int cell_id_count = static_cast<int>(unique_cell_ids.size()); 1528 int cell_id_count = static_cast<int>(unique_cell_ids.size());
1529 if (index < 0) 1529 if (index < 0)
1530 return E_INVALIDARG; 1530 return E_INVALIDARG;
1531 if (index >= cell_id_count) 1531 if (index >= cell_id_count)
1532 return S_FALSE; 1532 return S_FALSE;
1533 1533
1534 int cell_id = unique_cell_ids[index]; 1534 int cell_id = unique_cell_ids[index];
1535 BrowserAccessibilityWin* cell = 1535 BrowserAccessibilityWin* cell =
1536 manager()->GetFromRendererID(cell_id)->ToBrowserAccessibilityWin(); 1536 manager()->GetFromRendererID(cell_id)->ToBrowserAccessibilityWin();
1537 int rowspan; 1537 int rowspan;
1538 int colspan; 1538 int colspan;
1539 if (cell && 1539 if (cell &&
1540 cell->GetIntAttribute( 1540 cell->GetIntAttribute(
1541 AccessibilityNodeData::ATTR_TABLE_CELL_ROW_SPAN, &rowspan) && 1541 ui::AX_ATTR_TABLE_CELL_ROW_SPAN, &rowspan) &&
1542 cell->GetIntAttribute( 1542 cell->GetIntAttribute(
1543 AccessibilityNodeData::ATTR_TABLE_CELL_COLUMN_SPAN, &colspan) && 1543 ui::AX_ATTR_TABLE_CELL_COLUMN_SPAN, &colspan) &&
1544 rowspan >= 1 && 1544 rowspan >= 1 &&
1545 colspan >= 1) { 1545 colspan >= 1) {
1546 *row_extents = rowspan; 1546 *row_extents = rowspan;
1547 *column_extents = colspan; 1547 *column_extents = colspan;
1548 return S_OK; 1548 return S_OK;
1549 } 1549 }
1550 1550
1551 return S_FALSE; 1551 return S_FALSE;
1552 } 1552 }
1553 1553
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
1613 STDMETHODIMP BrowserAccessibilityWin::get_columnExtent( 1613 STDMETHODIMP BrowserAccessibilityWin::get_columnExtent(
1614 long* n_columns_spanned) { 1614 long* n_columns_spanned) {
1615 if (!instance_active()) 1615 if (!instance_active())
1616 return E_FAIL; 1616 return E_FAIL;
1617 1617
1618 if (!n_columns_spanned) 1618 if (!n_columns_spanned)
1619 return E_INVALIDARG; 1619 return E_INVALIDARG;
1620 1620
1621 int colspan; 1621 int colspan;
1622 if (GetIntAttribute( 1622 if (GetIntAttribute(
1623 AccessibilityNodeData::ATTR_TABLE_CELL_COLUMN_SPAN, &colspan) && 1623 ui::AX_ATTR_TABLE_CELL_COLUMN_SPAN, &colspan) &&
1624 colspan >= 1) { 1624 colspan >= 1) {
1625 *n_columns_spanned = colspan; 1625 *n_columns_spanned = colspan;
1626 return S_OK; 1626 return S_OK;
1627 } 1627 }
1628 1628
1629 return S_FALSE; 1629 return S_FALSE;
1630 } 1630 }
1631 1631
1632 STDMETHODIMP BrowserAccessibilityWin::get_columnHeaderCells( 1632 STDMETHODIMP BrowserAccessibilityWin::get_columnHeaderCells(
1633 IUnknown*** cell_accessibles, 1633 IUnknown*** cell_accessibles,
1634 long* n_column_header_cells) { 1634 long* n_column_header_cells) {
1635 if (!instance_active()) 1635 if (!instance_active())
1636 return E_FAIL; 1636 return E_FAIL;
1637 1637
1638 if (!cell_accessibles || !n_column_header_cells) 1638 if (!cell_accessibles || !n_column_header_cells)
1639 return E_INVALIDARG; 1639 return E_INVALIDARG;
1640 1640
1641 *n_column_header_cells = 0; 1641 *n_column_header_cells = 0;
1642 1642
1643 int column; 1643 int column;
1644 if (!GetIntAttribute( 1644 if (!GetIntAttribute(
1645 AccessibilityNodeData::ATTR_TABLE_CELL_COLUMN_INDEX, &column)) { 1645 ui::AX_ATTR_TABLE_CELL_COLUMN_INDEX, &column)) {
1646 return S_FALSE; 1646 return S_FALSE;
1647 } 1647 }
1648 1648
1649 BrowserAccessibility* table = parent(); 1649 BrowserAccessibility* table = parent();
1650 while (table && table->role() != blink::WebAXRoleTable) 1650 while (table && table->role() != ui::AX_ROLE_TABLE)
1651 table = table->parent(); 1651 table = table->parent();
1652 if (!table) { 1652 if (!table) {
1653 NOTREACHED(); 1653 NOTREACHED();
1654 return S_FALSE; 1654 return S_FALSE;
1655 } 1655 }
1656 1656
1657 int columns; 1657 int columns;
1658 int rows; 1658 int rows;
1659 if (!table->GetIntAttribute( 1659 if (!table->GetIntAttribute(
1660 AccessibilityNodeData::ATTR_TABLE_COLUMN_COUNT, &columns) || 1660 ui::AX_ATTR_TABLE_COLUMN_COUNT, &columns) ||
1661 !table->GetIntAttribute( 1661 !table->GetIntAttribute(
1662 AccessibilityNodeData::ATTR_TABLE_ROW_COUNT, &rows)) { 1662 ui::AX_ATTR_TABLE_ROW_COUNT, &rows)) {
1663 return S_FALSE; 1663 return S_FALSE;
1664 } 1664 }
1665 if (columns <= 0 || rows <= 0 || column < 0 || column >= columns) 1665 if (columns <= 0 || rows <= 0 || column < 0 || column >= columns)
1666 return S_FALSE; 1666 return S_FALSE;
1667 1667
1668 const std::vector<int32>& cell_ids = table->GetIntListAttribute( 1668 const std::vector<int32>& cell_ids = table->GetIntListAttribute(
1669 AccessibilityNodeData::ATTR_CELL_IDS); 1669 ui::AX_ATTR_CELL_IDS);
1670 1670
1671 for (int i = 0; i < rows; ++i) { 1671 for (int i = 0; i < rows; ++i) {
1672 int cell_id = cell_ids[i * columns + column]; 1672 int cell_id = cell_ids[i * columns + column];
1673 BrowserAccessibilityWin* cell = 1673 BrowserAccessibilityWin* cell =
1674 manager()->GetFromRendererID(cell_id)->ToBrowserAccessibilityWin(); 1674 manager()->GetFromRendererID(cell_id)->ToBrowserAccessibilityWin();
1675 if (cell && cell->blink_role() == blink::WebAXRoleColumnHeader) 1675 if (cell && cell->blink_role() == ui::AX_ROLE_COLUMN_HEADER)
1676 (*n_column_header_cells)++; 1676 (*n_column_header_cells)++;
1677 } 1677 }
1678 1678
1679 *cell_accessibles = static_cast<IUnknown**>(CoTaskMemAlloc( 1679 *cell_accessibles = static_cast<IUnknown**>(CoTaskMemAlloc(
1680 (*n_column_header_cells) * sizeof(cell_accessibles[0]))); 1680 (*n_column_header_cells) * sizeof(cell_accessibles[0])));
1681 int index = 0; 1681 int index = 0;
1682 for (int i = 0; i < rows; ++i) { 1682 for (int i = 0; i < rows; ++i) {
1683 int cell_id = cell_ids[i * columns + column]; 1683 int cell_id = cell_ids[i * columns + column];
1684 BrowserAccessibility* cell = manager()->GetFromRendererID(cell_id); 1684 BrowserAccessibility* cell = manager()->GetFromRendererID(cell_id);
1685 if (cell && cell->role() == blink::WebAXRoleColumnHeader) { 1685 if (cell && cell->role() == ui::AX_ROLE_COLUMN_HEADER) {
1686 (*cell_accessibles)[index] = static_cast<IAccessible*>( 1686 (*cell_accessibles)[index] = static_cast<IAccessible*>(
1687 cell->ToBrowserAccessibilityWin()->NewReference()); 1687 cell->ToBrowserAccessibilityWin()->NewReference());
1688 ++index; 1688 ++index;
1689 } 1689 }
1690 } 1690 }
1691 1691
1692 return S_OK; 1692 return S_OK;
1693 } 1693 }
1694 1694
1695 STDMETHODIMP BrowserAccessibilityWin::get_columnIndex(long* column_index) { 1695 STDMETHODIMP BrowserAccessibilityWin::get_columnIndex(long* column_index) {
1696 if (!instance_active()) 1696 if (!instance_active())
1697 return E_FAIL; 1697 return E_FAIL;
1698 1698
1699 if (!column_index) 1699 if (!column_index)
1700 return E_INVALIDARG; 1700 return E_INVALIDARG;
1701 1701
1702 int column; 1702 int column;
1703 if (GetIntAttribute( 1703 if (GetIntAttribute(
1704 AccessibilityNodeData::ATTR_TABLE_CELL_COLUMN_INDEX, &column)) { 1704 ui::AX_ATTR_TABLE_CELL_COLUMN_INDEX, &column)) {
1705 *column_index = column; 1705 *column_index = column;
1706 return S_OK; 1706 return S_OK;
1707 } 1707 }
1708 1708
1709 return S_FALSE; 1709 return S_FALSE;
1710 } 1710 }
1711 1711
1712 STDMETHODIMP BrowserAccessibilityWin::get_rowExtent(long* n_rows_spanned) { 1712 STDMETHODIMP BrowserAccessibilityWin::get_rowExtent(long* n_rows_spanned) {
1713 if (!instance_active()) 1713 if (!instance_active())
1714 return E_FAIL; 1714 return E_FAIL;
1715 1715
1716 if (!n_rows_spanned) 1716 if (!n_rows_spanned)
1717 return E_INVALIDARG; 1717 return E_INVALIDARG;
1718 1718
1719 int rowspan; 1719 int rowspan;
1720 if (GetIntAttribute( 1720 if (GetIntAttribute(
1721 AccessibilityNodeData::ATTR_TABLE_CELL_ROW_SPAN, &rowspan) && 1721 ui::AX_ATTR_TABLE_CELL_ROW_SPAN, &rowspan) &&
1722 rowspan >= 1) { 1722 rowspan >= 1) {
1723 *n_rows_spanned = rowspan; 1723 *n_rows_spanned = rowspan;
1724 return S_OK; 1724 return S_OK;
1725 } 1725 }
1726 1726
1727 return S_FALSE; 1727 return S_FALSE;
1728 } 1728 }
1729 1729
1730 STDMETHODIMP BrowserAccessibilityWin::get_rowHeaderCells( 1730 STDMETHODIMP BrowserAccessibilityWin::get_rowHeaderCells(
1731 IUnknown*** cell_accessibles, 1731 IUnknown*** cell_accessibles,
1732 long* n_row_header_cells) { 1732 long* n_row_header_cells) {
1733 if (!instance_active()) 1733 if (!instance_active())
1734 return E_FAIL; 1734 return E_FAIL;
1735 1735
1736 if (!cell_accessibles || !n_row_header_cells) 1736 if (!cell_accessibles || !n_row_header_cells)
1737 return E_INVALIDARG; 1737 return E_INVALIDARG;
1738 1738
1739 *n_row_header_cells = 0; 1739 *n_row_header_cells = 0;
1740 1740
1741 int row; 1741 int row;
1742 if (!GetIntAttribute( 1742 if (!GetIntAttribute(
1743 AccessibilityNodeData::ATTR_TABLE_CELL_ROW_INDEX, &row)) { 1743 ui::AX_ATTR_TABLE_CELL_ROW_INDEX, &row)) {
1744 return S_FALSE; 1744 return S_FALSE;
1745 } 1745 }
1746 1746
1747 BrowserAccessibility* table = parent(); 1747 BrowserAccessibility* table = parent();
1748 while (table && table->role() != blink::WebAXRoleTable) 1748 while (table && table->role() != ui::AX_ROLE_TABLE)
1749 table = table->parent(); 1749 table = table->parent();
1750 if (!table) { 1750 if (!table) {
1751 NOTREACHED(); 1751 NOTREACHED();
1752 return S_FALSE; 1752 return S_FALSE;
1753 } 1753 }
1754 1754
1755 int columns; 1755 int columns;
1756 int rows; 1756 int rows;
1757 if (!table->GetIntAttribute( 1757 if (!table->GetIntAttribute(
1758 AccessibilityNodeData::ATTR_TABLE_COLUMN_COUNT, &columns) || 1758 ui::AX_ATTR_TABLE_COLUMN_COUNT, &columns) ||
1759 !table->GetIntAttribute( 1759 !table->GetIntAttribute(
1760 AccessibilityNodeData::ATTR_TABLE_ROW_COUNT, &rows)) { 1760 ui::AX_ATTR_TABLE_ROW_COUNT, &rows)) {
1761 return S_FALSE; 1761 return S_FALSE;
1762 } 1762 }
1763 if (columns <= 0 || rows <= 0 || row < 0 || row >= rows) 1763 if (columns <= 0 || rows <= 0 || row < 0 || row >= rows)
1764 return S_FALSE; 1764 return S_FALSE;
1765 1765
1766 const std::vector<int32>& cell_ids = table->GetIntListAttribute( 1766 const std::vector<int32>& cell_ids = table->GetIntListAttribute(
1767 AccessibilityNodeData::ATTR_CELL_IDS); 1767 ui::AX_ATTR_CELL_IDS);
1768 1768
1769 for (int i = 0; i < columns; ++i) { 1769 for (int i = 0; i < columns; ++i) {
1770 int cell_id = cell_ids[row * columns + i]; 1770 int cell_id = cell_ids[row * columns + i];
1771 BrowserAccessibility* cell = manager()->GetFromRendererID(cell_id); 1771 BrowserAccessibility* cell = manager()->GetFromRendererID(cell_id);
1772 if (cell && cell->role() == blink::WebAXRoleRowHeader) 1772 if (cell && cell->role() == ui::AX_ROLE_ROW_HEADER)
1773 (*n_row_header_cells)++; 1773 (*n_row_header_cells)++;
1774 } 1774 }
1775 1775
1776 *cell_accessibles = static_cast<IUnknown**>(CoTaskMemAlloc( 1776 *cell_accessibles = static_cast<IUnknown**>(CoTaskMemAlloc(
1777 (*n_row_header_cells) * sizeof(cell_accessibles[0]))); 1777 (*n_row_header_cells) * sizeof(cell_accessibles[0])));
1778 int index = 0; 1778 int index = 0;
1779 for (int i = 0; i < columns; ++i) { 1779 for (int i = 0; i < columns; ++i) {
1780 int cell_id = cell_ids[row * columns + i]; 1780 int cell_id = cell_ids[row * columns + i];
1781 BrowserAccessibility* cell = manager()->GetFromRendererID(cell_id); 1781 BrowserAccessibility* cell = manager()->GetFromRendererID(cell_id);
1782 if (cell && cell->role() == blink::WebAXRoleRowHeader) { 1782 if (cell && cell->role() == ui::AX_ROLE_ROW_HEADER) {
1783 (*cell_accessibles)[index] = static_cast<IAccessible*>( 1783 (*cell_accessibles)[index] = static_cast<IAccessible*>(
1784 cell->ToBrowserAccessibilityWin()->NewReference()); 1784 cell->ToBrowserAccessibilityWin()->NewReference());
1785 ++index; 1785 ++index;
1786 } 1786 }
1787 } 1787 }
1788 1788
1789 return S_OK; 1789 return S_OK;
1790 } 1790 }
1791 1791
1792 STDMETHODIMP BrowserAccessibilityWin::get_rowIndex(long* row_index) { 1792 STDMETHODIMP BrowserAccessibilityWin::get_rowIndex(long* row_index) {
1793 if (!instance_active()) 1793 if (!instance_active())
1794 return E_FAIL; 1794 return E_FAIL;
1795 1795
1796 if (!row_index) 1796 if (!row_index)
1797 return E_INVALIDARG; 1797 return E_INVALIDARG;
1798 1798
1799 int row; 1799 int row;
1800 if (GetIntAttribute(AccessibilityNodeData::ATTR_TABLE_CELL_ROW_INDEX, &row)) { 1800 if (GetIntAttribute(ui::AX_ATTR_TABLE_CELL_ROW_INDEX, &row)) {
1801 *row_index = row; 1801 *row_index = row;
1802 return S_OK; 1802 return S_OK;
1803 } 1803 }
1804 return S_FALSE; 1804 return S_FALSE;
1805 } 1805 }
1806 1806
1807 STDMETHODIMP BrowserAccessibilityWin::get_isSelected(boolean* is_selected) { 1807 STDMETHODIMP BrowserAccessibilityWin::get_isSelected(boolean* is_selected) {
1808 if (!instance_active()) 1808 if (!instance_active())
1809 return E_FAIL; 1809 return E_FAIL;
1810 1810
(...skipping 18 matching lines...) Expand all
1829 !row_extents || 1829 !row_extents ||
1830 !column_extents || 1830 !column_extents ||
1831 !is_selected) { 1831 !is_selected) {
1832 return E_INVALIDARG; 1832 return E_INVALIDARG;
1833 } 1833 }
1834 1834
1835 int row; 1835 int row;
1836 int column; 1836 int column;
1837 int rowspan; 1837 int rowspan;
1838 int colspan; 1838 int colspan;
1839 if (GetIntAttribute(AccessibilityNodeData::ATTR_TABLE_CELL_ROW_INDEX, &row) && 1839 if (GetIntAttribute(ui::AX_ATTR_TABLE_CELL_ROW_INDEX, &row) &&
1840 GetIntAttribute( 1840 GetIntAttribute(
1841 AccessibilityNodeData::ATTR_TABLE_CELL_COLUMN_INDEX, &column) && 1841 ui::AX_ATTR_TABLE_CELL_COLUMN_INDEX, &column) &&
1842 GetIntAttribute( 1842 GetIntAttribute(
1843 AccessibilityNodeData::ATTR_TABLE_CELL_ROW_SPAN, &rowspan) && 1843 ui::AX_ATTR_TABLE_CELL_ROW_SPAN, &rowspan) &&
1844 GetIntAttribute( 1844 GetIntAttribute(
1845 AccessibilityNodeData::ATTR_TABLE_CELL_COLUMN_SPAN, &colspan)) { 1845 ui::AX_ATTR_TABLE_CELL_COLUMN_SPAN, &colspan)) {
1846 *row_index = row; 1846 *row_index = row;
1847 *column_index = column; 1847 *column_index = column;
1848 *row_extents = rowspan; 1848 *row_extents = rowspan;
1849 *column_extents = colspan; 1849 *column_extents = colspan;
1850 *is_selected = false; 1850 *is_selected = false;
1851 return S_OK; 1851 return S_OK;
1852 } 1852 }
1853 1853
1854 return S_FALSE; 1854 return S_FALSE;
1855 } 1855 }
1856 1856
1857 STDMETHODIMP BrowserAccessibilityWin::get_table(IUnknown** table) { 1857 STDMETHODIMP BrowserAccessibilityWin::get_table(IUnknown** table) {
1858 if (!instance_active()) 1858 if (!instance_active())
1859 return E_FAIL; 1859 return E_FAIL;
1860 1860
1861 if (!table) 1861 if (!table)
1862 return E_INVALIDARG; 1862 return E_INVALIDARG;
1863 1863
1864 1864
1865 int row; 1865 int row;
1866 int column; 1866 int column;
1867 GetIntAttribute(AccessibilityNodeData::ATTR_TABLE_CELL_ROW_INDEX, &row); 1867 GetIntAttribute(ui::AX_ATTR_TABLE_CELL_ROW_INDEX, &row);
1868 GetIntAttribute(AccessibilityNodeData::ATTR_TABLE_CELL_COLUMN_INDEX, &column); 1868 GetIntAttribute(ui::AX_ATTR_TABLE_CELL_COLUMN_INDEX, &column);
1869 1869
1870 BrowserAccessibility* find_table = parent(); 1870 BrowserAccessibility* find_table = parent();
1871 while (find_table && find_table->role() != blink::WebAXRoleTable) 1871 while (find_table && find_table->role() != ui::AX_ROLE_TABLE)
1872 find_table = find_table->parent(); 1872 find_table = find_table->parent();
1873 if (!find_table) { 1873 if (!find_table) {
1874 NOTREACHED(); 1874 NOTREACHED();
1875 return S_FALSE; 1875 return S_FALSE;
1876 } 1876 }
1877 1877
1878 *table = static_cast<IAccessibleTable*>( 1878 *table = static_cast<IAccessibleTable*>(
1879 find_table->ToBrowserAccessibilityWin()->NewReference()); 1879 find_table->ToBrowserAccessibilityWin()->NewReference());
1880 1880
1881 return S_OK; 1881 return S_OK;
(...skipping 15 matching lines...) Expand all
1897 } 1897 }
1898 1898
1899 STDMETHODIMP BrowserAccessibilityWin::get_caretOffset(LONG* offset) { 1899 STDMETHODIMP BrowserAccessibilityWin::get_caretOffset(LONG* offset) {
1900 if (!instance_active()) 1900 if (!instance_active())
1901 return E_FAIL; 1901 return E_FAIL;
1902 1902
1903 if (!offset) 1903 if (!offset)
1904 return E_INVALIDARG; 1904 return E_INVALIDARG;
1905 1905
1906 *offset = 0; 1906 *offset = 0;
1907 if (blink_role() == blink::WebAXRoleTextField || 1907 if (blink_role() == ui::AX_ROLE_TEXT_FIELD ||
1908 blink_role() == blink::WebAXRoleTextArea) { 1908 blink_role() == ui::AX_ROLE_TEXT_AREA) {
1909 int sel_start = 0; 1909 int sel_start = 0;
1910 if (GetIntAttribute(AccessibilityNodeData::ATTR_TEXT_SEL_START, 1910 if (GetIntAttribute(ui::AX_ATTR_TEXT_SEL_START,
1911 &sel_start)) 1911 &sel_start))
1912 *offset = sel_start; 1912 *offset = sel_start;
1913 } 1913 }
1914 1914
1915 return S_OK; 1915 return S_OK;
1916 } 1916 }
1917 1917
1918 STDMETHODIMP BrowserAccessibilityWin::get_characterExtents( 1918 STDMETHODIMP BrowserAccessibilityWin::get_characterExtents(
1919 LONG offset, 1919 LONG offset,
1920 enum IA2CoordinateType coordinate_type, 1920 enum IA2CoordinateType coordinate_type,
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
1953 } 1953 }
1954 1954
1955 STDMETHODIMP BrowserAccessibilityWin::get_nSelections(LONG* n_selections) { 1955 STDMETHODIMP BrowserAccessibilityWin::get_nSelections(LONG* n_selections) {
1956 if (!instance_active()) 1956 if (!instance_active())
1957 return E_FAIL; 1957 return E_FAIL;
1958 1958
1959 if (!n_selections) 1959 if (!n_selections)
1960 return E_INVALIDARG; 1960 return E_INVALIDARG;
1961 1961
1962 *n_selections = 0; 1962 *n_selections = 0;
1963 if (blink_role() == blink::WebAXRoleTextField || 1963 if (blink_role() == ui::AX_ROLE_TEXT_FIELD ||
1964 blink_role() == blink::WebAXRoleTextArea) { 1964 blink_role() == ui::AX_ROLE_TEXT_AREA) {
1965 int sel_start = 0; 1965 int sel_start = 0;
1966 int sel_end = 0; 1966 int sel_end = 0;
1967 if (GetIntAttribute(AccessibilityNodeData::ATTR_TEXT_SEL_START, 1967 if (GetIntAttribute(ui::AX_ATTR_TEXT_SEL_START,
1968 &sel_start) && 1968 &sel_start) &&
1969 GetIntAttribute(AccessibilityNodeData::ATTR_TEXT_SEL_END, &sel_end) && 1969 GetIntAttribute(ui::AX_ATTR_TEXT_SEL_END, &sel_end) &&
1970 sel_start != sel_end) 1970 sel_start != sel_end)
1971 *n_selections = 1; 1971 *n_selections = 1;
1972 } 1972 }
1973 1973
1974 return S_OK; 1974 return S_OK;
1975 } 1975 }
1976 1976
1977 STDMETHODIMP BrowserAccessibilityWin::get_selection(LONG selection_index, 1977 STDMETHODIMP BrowserAccessibilityWin::get_selection(LONG selection_index,
1978 LONG* start_offset, 1978 LONG* start_offset,
1979 LONG* end_offset) { 1979 LONG* end_offset) {
1980 if (!instance_active()) 1980 if (!instance_active())
1981 return E_FAIL; 1981 return E_FAIL;
1982 1982
1983 if (!start_offset || !end_offset || selection_index != 0) 1983 if (!start_offset || !end_offset || selection_index != 0)
1984 return E_INVALIDARG; 1984 return E_INVALIDARG;
1985 1985
1986 *start_offset = 0; 1986 *start_offset = 0;
1987 *end_offset = 0; 1987 *end_offset = 0;
1988 if (blink_role() == blink::WebAXRoleTextField || 1988 if (blink_role() == ui::AX_ROLE_TEXT_FIELD ||
1989 blink_role() == blink::WebAXRoleTextArea) { 1989 blink_role() == ui::AX_ROLE_TEXT_AREA) {
1990 int sel_start = 0; 1990 int sel_start = 0;
1991 int sel_end = 0; 1991 int sel_end = 0;
1992 if (GetIntAttribute( 1992 if (GetIntAttribute(
1993 AccessibilityNodeData::ATTR_TEXT_SEL_START, &sel_start) && 1993 ui::AX_ATTR_TEXT_SEL_START, &sel_start) &&
1994 GetIntAttribute(AccessibilityNodeData::ATTR_TEXT_SEL_END, &sel_end)) { 1994 GetIntAttribute(ui::AX_ATTR_TEXT_SEL_END, &sel_end)) {
1995 *start_offset = sel_start; 1995 *start_offset = sel_start;
1996 *end_offset = sel_end; 1996 *end_offset = sel_end;
1997 } 1997 }
1998 } 1998 }
1999 1999
2000 return S_OK; 2000 return S_OK;
2001 } 2001 }
2002 2002
2003 STDMETHODIMP BrowserAccessibilityWin::get_text(LONG start_offset, 2003 STDMETHODIMP BrowserAccessibilityWin::get_text(LONG start_offset,
2004 LONG end_offset, 2004 LONG end_offset,
(...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after
2304 2304
2305 STDMETHODIMP BrowserAccessibilityWin::get_currentValue(VARIANT* value) { 2305 STDMETHODIMP BrowserAccessibilityWin::get_currentValue(VARIANT* value) {
2306 if (!instance_active()) 2306 if (!instance_active())
2307 return E_FAIL; 2307 return E_FAIL;
2308 2308
2309 if (!value) 2309 if (!value)
2310 return E_INVALIDARG; 2310 return E_INVALIDARG;
2311 2311
2312 float float_val; 2312 float float_val;
2313 if (GetFloatAttribute( 2313 if (GetFloatAttribute(
2314 AccessibilityNodeData::ATTR_VALUE_FOR_RANGE, &float_val)) { 2314 ui::AX_ATTR_VALUE_FOR_RANGE, &float_val)) {
2315 value->vt = VT_R8; 2315 value->vt = VT_R8;
2316 value->dblVal = float_val; 2316 value->dblVal = float_val;
2317 return S_OK; 2317 return S_OK;
2318 } 2318 }
2319 2319
2320 value->vt = VT_EMPTY; 2320 value->vt = VT_EMPTY;
2321 return S_FALSE; 2321 return S_FALSE;
2322 } 2322 }
2323 2323
2324 STDMETHODIMP BrowserAccessibilityWin::get_minimumValue(VARIANT* value) { 2324 STDMETHODIMP BrowserAccessibilityWin::get_minimumValue(VARIANT* value) {
2325 if (!instance_active()) 2325 if (!instance_active())
2326 return E_FAIL; 2326 return E_FAIL;
2327 2327
2328 if (!value) 2328 if (!value)
2329 return E_INVALIDARG; 2329 return E_INVALIDARG;
2330 2330
2331 float float_val; 2331 float float_val;
2332 if (GetFloatAttribute(AccessibilityNodeData::ATTR_MIN_VALUE_FOR_RANGE, 2332 if (GetFloatAttribute(ui::AX_ATTR_MIN_VALUE_FOR_RANGE,
2333 &float_val)) { 2333 &float_val)) {
2334 value->vt = VT_R8; 2334 value->vt = VT_R8;
2335 value->dblVal = float_val; 2335 value->dblVal = float_val;
2336 return S_OK; 2336 return S_OK;
2337 } 2337 }
2338 2338
2339 value->vt = VT_EMPTY; 2339 value->vt = VT_EMPTY;
2340 return S_FALSE; 2340 return S_FALSE;
2341 } 2341 }
2342 2342
2343 STDMETHODIMP BrowserAccessibilityWin::get_maximumValue(VARIANT* value) { 2343 STDMETHODIMP BrowserAccessibilityWin::get_maximumValue(VARIANT* value) {
2344 if (!instance_active()) 2344 if (!instance_active())
2345 return E_FAIL; 2345 return E_FAIL;
2346 2346
2347 if (!value) 2347 if (!value)
2348 return E_INVALIDARG; 2348 return E_INVALIDARG;
2349 2349
2350 float float_val; 2350 float float_val;
2351 if (GetFloatAttribute(AccessibilityNodeData::ATTR_MAX_VALUE_FOR_RANGE, 2351 if (GetFloatAttribute(ui::AX_ATTR_MAX_VALUE_FOR_RANGE,
2352 &float_val)) { 2352 &float_val)) {
2353 value->vt = VT_R8; 2353 value->vt = VT_R8;
2354 value->dblVal = float_val; 2354 value->dblVal = float_val;
2355 return S_OK; 2355 return S_OK;
2356 } 2356 }
2357 2357
2358 value->vt = VT_EMPTY; 2358 value->vt = VT_EMPTY;
2359 return S_FALSE; 2359 return S_FALSE;
2360 } 2360 }
2361 2361
2362 STDMETHODIMP BrowserAccessibilityWin::setCurrentValue(VARIANT new_value) { 2362 STDMETHODIMP BrowserAccessibilityWin::setCurrentValue(VARIANT new_value) {
2363 // TODO(dmazzoni): Implement this. 2363 // TODO(dmazzoni): Implement this.
2364 return E_NOTIMPL; 2364 return E_NOTIMPL;
2365 } 2365 }
2366 2366
2367 // 2367 //
2368 // ISimpleDOMDocument methods. 2368 // ISimpleDOMDocument methods.
2369 // 2369 //
2370 2370
2371 STDMETHODIMP BrowserAccessibilityWin::get_URL(BSTR* url) { 2371 STDMETHODIMP BrowserAccessibilityWin::get_URL(BSTR* url) {
2372 if (!instance_active()) 2372 if (!instance_active())
2373 return E_FAIL; 2373 return E_FAIL;
2374 2374
2375 if (!url) 2375 if (!url)
2376 return E_INVALIDARG; 2376 return E_INVALIDARG;
2377 2377
2378 return GetStringAttributeAsBstr(AccessibilityNodeData::ATTR_DOC_URL, url); 2378 return GetStringAttributeAsBstr(ui::AX_ATTR_DOC_URL, url);
2379 } 2379 }
2380 2380
2381 STDMETHODIMP BrowserAccessibilityWin::get_title(BSTR* title) { 2381 STDMETHODIMP BrowserAccessibilityWin::get_title(BSTR* title) {
2382 if (!instance_active()) 2382 if (!instance_active())
2383 return E_FAIL; 2383 return E_FAIL;
2384 2384
2385 if (!title) 2385 if (!title)
2386 return E_INVALIDARG; 2386 return E_INVALIDARG;
2387 2387
2388 return GetStringAttributeAsBstr(AccessibilityNodeData::ATTR_DOC_TITLE, title); 2388 return GetStringAttributeAsBstr(ui::AX_ATTR_DOC_TITLE, title);
2389 } 2389 }
2390 2390
2391 STDMETHODIMP BrowserAccessibilityWin::get_mimeType(BSTR* mime_type) { 2391 STDMETHODIMP BrowserAccessibilityWin::get_mimeType(BSTR* mime_type) {
2392 if (!instance_active()) 2392 if (!instance_active())
2393 return E_FAIL; 2393 return E_FAIL;
2394 2394
2395 if (!mime_type) 2395 if (!mime_type)
2396 return E_INVALIDARG; 2396 return E_INVALIDARG;
2397 2397
2398 return GetStringAttributeAsBstr( 2398 return GetStringAttributeAsBstr(
2399 AccessibilityNodeData::ATTR_DOC_MIMETYPE, mime_type); 2399 ui::AX_ATTR_DOC_MIMETYPE, mime_type);
2400 } 2400 }
2401 2401
2402 STDMETHODIMP BrowserAccessibilityWin::get_docType(BSTR* doc_type) { 2402 STDMETHODIMP BrowserAccessibilityWin::get_docType(BSTR* doc_type) {
2403 if (!instance_active()) 2403 if (!instance_active())
2404 return E_FAIL; 2404 return E_FAIL;
2405 2405
2406 if (!doc_type) 2406 if (!doc_type)
2407 return E_INVALIDARG; 2407 return E_INVALIDARG;
2408 2408
2409 return GetStringAttributeAsBstr( 2409 return GetStringAttributeAsBstr(
2410 AccessibilityNodeData::ATTR_DOC_DOCTYPE, doc_type); 2410 ui::AX_ATTR_DOC_DOCTYPE, doc_type);
2411 } 2411 }
2412 2412
2413 // 2413 //
2414 // ISimpleDOMNode methods. 2414 // ISimpleDOMNode methods.
2415 // 2415 //
2416 2416
2417 STDMETHODIMP BrowserAccessibilityWin::get_nodeInfo( 2417 STDMETHODIMP BrowserAccessibilityWin::get_nodeInfo(
2418 BSTR* node_name, 2418 BSTR* node_name,
2419 short* name_space_id, 2419 short* name_space_id,
2420 BSTR* node_value, 2420 BSTR* node_value,
2421 unsigned int* num_children, 2421 unsigned int* num_children,
2422 unsigned int* unique_id, 2422 unsigned int* unique_id,
2423 unsigned short* node_type) { 2423 unsigned short* node_type) {
2424 if (!instance_active()) 2424 if (!instance_active())
2425 return E_FAIL; 2425 return E_FAIL;
2426 2426
2427 if (!node_name || !name_space_id || !node_value || !num_children || 2427 if (!node_name || !name_space_id || !node_value || !num_children ||
2428 !unique_id || !node_type) { 2428 !unique_id || !node_type) {
2429 return E_INVALIDARG; 2429 return E_INVALIDARG;
2430 } 2430 }
2431 2431
2432 base::string16 tag; 2432 base::string16 tag;
2433 if (GetString16Attribute(AccessibilityNodeData::ATTR_HTML_TAG, &tag)) 2433 if (GetString16Attribute(ui::AX_ATTR_HTML_TAG, &tag))
2434 *node_name = SysAllocString(tag.c_str()); 2434 *node_name = SysAllocString(tag.c_str());
2435 else 2435 else
2436 *node_name = NULL; 2436 *node_name = NULL;
2437 2437
2438 *name_space_id = 0; 2438 *name_space_id = 0;
2439 *node_value = SysAllocString(base::UTF8ToUTF16(value()).c_str()); 2439 *node_value = SysAllocString(base::UTF8ToUTF16(value()).c_str());
2440 *num_children = PlatformChildCount(); 2440 *num_children = PlatformChildCount();
2441 *unique_id = unique_id_win_; 2441 *unique_id = unique_id_win_;
2442 2442
2443 if (ia_role_ == ROLE_SYSTEM_DOCUMENT) { 2443 if (ia_role_ == ROLE_SYSTEM_DOCUMENT) {
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
2517 if (!instance_active()) 2517 if (!instance_active())
2518 return E_FAIL; 2518 return E_FAIL;
2519 2519
2520 if (!style_properties || !style_values) 2520 if (!style_properties || !style_values)
2521 return E_INVALIDARG; 2521 return E_INVALIDARG;
2522 2522
2523 // We only cache a single style property for now: DISPLAY 2523 // We only cache a single style property for now: DISPLAY
2524 2524
2525 base::string16 display; 2525 base::string16 display;
2526 if (max_style_properties == 0 || 2526 if (max_style_properties == 0 ||
2527 !GetString16Attribute(AccessibilityNodeData::ATTR_DISPLAY, &display)) { 2527 !GetString16Attribute(ui::AX_ATTR_DISPLAY, &display)) {
2528 *num_style_properties = 0; 2528 *num_style_properties = 0;
2529 return S_OK; 2529 return S_OK;
2530 } 2530 }
2531 2531
2532 *num_style_properties = 1; 2532 *num_style_properties = 1;
2533 style_properties[0] = SysAllocString(L"display"); 2533 style_properties[0] = SysAllocString(L"display");
2534 style_values[0] = SysAllocString(display.c_str()); 2534 style_values[0] = SysAllocString(display.c_str());
2535 2535
2536 return S_OK; 2536 return S_OK;
2537 } 2537 }
2538 2538
2539 STDMETHODIMP BrowserAccessibilityWin::get_computedStyleForProperties( 2539 STDMETHODIMP BrowserAccessibilityWin::get_computedStyleForProperties(
2540 unsigned short num_style_properties, 2540 unsigned short num_style_properties,
2541 boolean use_alternate_view, 2541 boolean use_alternate_view,
2542 BSTR* style_properties, 2542 BSTR* style_properties,
2543 BSTR* style_values) { 2543 BSTR* style_values) {
2544 if (!instance_active()) 2544 if (!instance_active())
2545 return E_FAIL; 2545 return E_FAIL;
2546 2546
2547 if (!style_properties || !style_values) 2547 if (!style_properties || !style_values)
2548 return E_INVALIDARG; 2548 return E_INVALIDARG;
2549 2549
2550 // We only cache a single style property for now: DISPLAY 2550 // We only cache a single style property for now: DISPLAY
2551 2551
2552 for (unsigned short i = 0; i < num_style_properties; ++i) { 2552 for (unsigned short i = 0; i < num_style_properties; ++i) {
2553 base::string16 name = (LPCWSTR)style_properties[i]; 2553 base::string16 name = (LPCWSTR)style_properties[i];
2554 StringToLowerASCII(&name); 2554 StringToLowerASCII(&name);
2555 if (name == L"display") { 2555 if (name == L"display") {
2556 base::string16 display = GetString16Attribute( 2556 base::string16 display = GetString16Attribute(
2557 AccessibilityNodeData::ATTR_DISPLAY); 2557 ui::AX_ATTR_DISPLAY);
2558 style_values[i] = SysAllocString(display.c_str()); 2558 style_values[i] = SysAllocString(display.c_str());
2559 } else { 2559 } else {
2560 style_values[i] = NULL; 2560 style_values[i] = NULL;
2561 } 2561 }
2562 } 2562 }
2563 2563
2564 return S_OK; 2564 return S_OK;
2565 } 2565 }
2566 2566
2567 STDMETHODIMP BrowserAccessibilityWin::scrollTo(boolean placeTopLeft) { 2567 STDMETHODIMP BrowserAccessibilityWin::scrollTo(boolean placeTopLeft) {
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
2677 // 2677 //
2678 2678
2679 STDMETHODIMP BrowserAccessibilityWin::get_domText(BSTR* dom_text) { 2679 STDMETHODIMP BrowserAccessibilityWin::get_domText(BSTR* dom_text) {
2680 if (!instance_active()) 2680 if (!instance_active())
2681 return E_FAIL; 2681 return E_FAIL;
2682 2682
2683 if (!dom_text) 2683 if (!dom_text)
2684 return E_INVALIDARG; 2684 return E_INVALIDARG;
2685 2685
2686 return GetStringAttributeAsBstr( 2686 return GetStringAttributeAsBstr(
2687 AccessibilityNodeData::ATTR_NAME, dom_text); 2687 ui::AX_ATTR_NAME, dom_text);
2688 } 2688 }
2689 2689
2690 STDMETHODIMP BrowserAccessibilityWin::get_clippedSubstringBounds( 2690 STDMETHODIMP BrowserAccessibilityWin::get_clippedSubstringBounds(
2691 unsigned int start_index, 2691 unsigned int start_index,
2692 unsigned int end_index, 2692 unsigned int end_index,
2693 int* out_x, 2693 int* out_x,
2694 int* out_y, 2694 int* out_y,
2695 int* out_width, 2695 int* out_width,
2696 int* out_height) { 2696 int* out_height) {
2697 // TODO(dmazzoni): fully support this API by intersecting the 2697 // TODO(dmazzoni): fully support this API by intersecting the
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after
2891 // Private methods. 2891 // Private methods.
2892 // 2892 //
2893 2893
2894 // Initialize this object and mark it as active. 2894 // Initialize this object and mark it as active.
2895 void BrowserAccessibilityWin::PreInitialize() { 2895 void BrowserAccessibilityWin::PreInitialize() {
2896 BrowserAccessibility::PreInitialize(); 2896 BrowserAccessibility::PreInitialize();
2897 2897
2898 InitRoleAndState(); 2898 InitRoleAndState();
2899 2899
2900 // Expose the "display" and "tag" attributes. 2900 // Expose the "display" and "tag" attributes.
2901 StringAttributeToIA2(AccessibilityNodeData::ATTR_DISPLAY, "display"); 2901 StringAttributeToIA2(ui::AX_ATTR_DISPLAY, "display");
2902 StringAttributeToIA2(AccessibilityNodeData::ATTR_HTML_TAG, "tag"); 2902 StringAttributeToIA2(ui::AX_ATTR_HTML_TAG, "tag");
2903 StringAttributeToIA2(AccessibilityNodeData::ATTR_ROLE, "xml-roles"); 2903 StringAttributeToIA2(ui::AX_ATTR_ROLE, "xml-roles");
2904 2904
2905 // Expose "level" attribute for headings, trees, etc. 2905 // Expose "level" attribute for headings, trees, etc.
2906 IntAttributeToIA2(AccessibilityNodeData::ATTR_HIERARCHICAL_LEVEL, "level"); 2906 IntAttributeToIA2(ui::AX_ATTR_HIERARCHICAL_LEVEL, "level");
2907 2907
2908 // Expose the set size and position in set for listbox options. 2908 // Expose the set size and position in set for listbox options.
2909 if (blink_role() == blink::WebAXRoleListBoxOption && 2909 if (blink_role() == ui::AX_ROLE_LIST_BOX_OPTION &&
2910 parent() && 2910 parent() &&
2911 parent()->role() == blink::WebAXRoleListBox) { 2911 parent()->role() == ui::AX_ROLE_LIST_BOX) {
2912 ia2_attributes_.push_back( 2912 ia2_attributes_.push_back(
2913 L"setsize:" + base::IntToString16(parent()->PlatformChildCount())); 2913 L"setsize:" + base::IntToString16(parent()->PlatformChildCount()));
2914 ia2_attributes_.push_back( 2914 ia2_attributes_.push_back(
2915 L"setsize:" + base::IntToString16(index_in_parent() + 1)); 2915 L"setsize:" + base::IntToString16(index_in_parent() + 1));
2916 } 2916 }
2917 2917
2918 if (ia_role_ == ROLE_SYSTEM_CHECKBUTTON || 2918 if (ia_role_ == ROLE_SYSTEM_CHECKBUTTON ||
2919 ia_role_ == ROLE_SYSTEM_RADIOBUTTON || 2919 ia_role_ == ROLE_SYSTEM_RADIOBUTTON ||
2920 ia2_role_ == IA2_ROLE_TOGGLE_BUTTON) { 2920 ia2_role_ == IA2_ROLE_TOGGLE_BUTTON) {
2921 ia2_attributes_.push_back(L"checkable:true"); 2921 ia2_attributes_.push_back(L"checkable:true");
2922 } 2922 }
2923 2923
2924 // Expose live region attributes. 2924 // Expose live region attributes.
2925 StringAttributeToIA2(AccessibilityNodeData::ATTR_LIVE_STATUS, "live"); 2925 StringAttributeToIA2(ui::AX_ATTR_LIVE_STATUS, "live");
2926 StringAttributeToIA2(AccessibilityNodeData::ATTR_LIVE_RELEVANT, "relevant"); 2926 StringAttributeToIA2(ui::AX_ATTR_LIVE_RELEVANT, "relevant");
2927 BoolAttributeToIA2(AccessibilityNodeData::ATTR_LIVE_ATOMIC, "atomic"); 2927 BoolAttributeToIA2(ui::AX_ATTR_LIVE_ATOMIC, "atomic");
2928 BoolAttributeToIA2(AccessibilityNodeData::ATTR_LIVE_BUSY, "busy"); 2928 BoolAttributeToIA2(ui::AX_ATTR_LIVE_BUSY, "busy");
2929 2929
2930 // Expose container live region attributes. 2930 // Expose container live region attributes.
2931 StringAttributeToIA2(AccessibilityNodeData::ATTR_CONTAINER_LIVE_STATUS, 2931 StringAttributeToIA2(ui::AX_ATTR_CONTAINER_LIVE_STATUS,
2932 "container-live"); 2932 "container-live");
2933 StringAttributeToIA2(AccessibilityNodeData::ATTR_CONTAINER_LIVE_RELEVANT, 2933 StringAttributeToIA2(ui::AX_ATTR_CONTAINER_LIVE_RELEVANT,
2934 "container-relevant"); 2934 "container-relevant");
2935 BoolAttributeToIA2(AccessibilityNodeData::ATTR_CONTAINER_LIVE_ATOMIC, 2935 BoolAttributeToIA2(ui::AX_ATTR_CONTAINER_LIVE_ATOMIC,
2936 "container-atomic"); 2936 "container-atomic");
2937 BoolAttributeToIA2(AccessibilityNodeData::ATTR_CONTAINER_LIVE_BUSY, 2937 BoolAttributeToIA2(ui::AX_ATTR_CONTAINER_LIVE_BUSY,
2938 "container-busy"); 2938 "container-busy");
2939 2939
2940 // Expose slider value. 2940 // Expose slider value.
2941 if (ia_role_ == ROLE_SYSTEM_PROGRESSBAR || 2941 if (ia_role_ == ROLE_SYSTEM_PROGRESSBAR ||
2942 ia_role_ == ROLE_SYSTEM_SCROLLBAR || 2942 ia_role_ == ROLE_SYSTEM_SCROLLBAR ||
2943 ia_role_ == ROLE_SYSTEM_SLIDER) { 2943 ia_role_ == ROLE_SYSTEM_SLIDER) {
2944 ia2_attributes_.push_back(L"valuetext:" + GetValueText()); 2944 ia2_attributes_.push_back(L"valuetext:" + GetValueText());
2945 } 2945 }
2946 2946
2947 // Expose table cell index. 2947 // Expose table cell index.
2948 if (ia_role_ == ROLE_SYSTEM_CELL) { 2948 if (ia_role_ == ROLE_SYSTEM_CELL) {
2949 BrowserAccessibility* table = parent(); 2949 BrowserAccessibility* table = parent();
2950 while (table && table->role() != blink::WebAXRoleTable) 2950 while (table && table->role() != ui::AX_ROLE_TABLE)
2951 table = table->parent(); 2951 table = table->parent();
2952 if (table) { 2952 if (table) {
2953 const std::vector<int32>& unique_cell_ids = table->GetIntListAttribute( 2953 const std::vector<int32>& unique_cell_ids = table->GetIntListAttribute(
2954 AccessibilityNodeData::ATTR_UNIQUE_CELL_IDS); 2954 ui::AX_ATTR_UNIQUE_CELL_IDS);
2955 for (size_t i = 0; i < unique_cell_ids.size(); ++i) { 2955 for (size_t i = 0; i < unique_cell_ids.size(); ++i) {
2956 if (unique_cell_ids[i] == renderer_id()) { 2956 if (unique_cell_ids[i] == renderer_id()) {
2957 ia2_attributes_.push_back( 2957 ia2_attributes_.push_back(
2958 base::string16(L"table-cell-index:") + base::IntToString16(i)); 2958 base::string16(L"table-cell-index:") + base::IntToString16(i));
2959 } 2959 }
2960 } 2960 }
2961 } 2961 }
2962 } 2962 }
2963 2963
2964 // The calculation of the accessible name of an element has been 2964 // The calculation of the accessible name of an element has been
(...skipping 11 matching lines...) Expand all
2976 // page that labels this node. 2976 // page that labels this node.
2977 // description: accessible labels that override the default name: 2977 // description: accessible labels that override the default name:
2978 // aria-label or aria-labelledby or aria-describedby 2978 // aria-label or aria-labelledby or aria-describedby
2979 // help: the value of the "title" attribute 2979 // help: the value of the "title" attribute
2980 // 2980 //
2981 // On Windows, the logic we apply lets some fields take precedence and 2981 // On Windows, the logic we apply lets some fields take precedence and
2982 // always returns the primary name in "name" and the secondary name, 2982 // always returns the primary name in "name" and the secondary name,
2983 // if any, in "description". 2983 // if any, in "description".
2984 2984
2985 int title_elem_id = GetIntAttribute( 2985 int title_elem_id = GetIntAttribute(
2986 AccessibilityNodeData::ATTR_TITLE_UI_ELEMENT); 2986 ui::AX_ATTR_TITLE_UI_ELEMENT);
2987 std::string help = GetStringAttribute(AccessibilityNodeData::ATTR_HELP); 2987 std::string help = GetStringAttribute(ui::AX_ATTR_HELP);
2988 std::string description = GetStringAttribute( 2988 std::string description = GetStringAttribute(
2989 AccessibilityNodeData::ATTR_DESCRIPTION); 2989 ui::AX_ATTR_DESCRIPTION);
2990 2990
2991 // WebKit annoyingly puts the title in the description if there's no other 2991 // WebKit annoyingly puts the title in the description if there's no other
2992 // description, which just confuses the rest of the logic. Put it back. 2992 // description, which just confuses the rest of the logic. Put it back.
2993 // Now "help" is always the value of the "title" attribute, if present. 2993 // Now "help" is always the value of the "title" attribute, if present.
2994 std::string title_attr; 2994 std::string title_attr;
2995 if (GetHtmlAttribute("title", &title_attr) && 2995 if (GetHtmlAttribute("title", &title_attr) &&
2996 description == title_attr && 2996 description == title_attr &&
2997 help.empty()) { 2997 help.empty()) {
2998 help = description; 2998 help = description;
2999 description.clear(); 2999 description.clear();
(...skipping 10 matching lines...) Expand all
3010 description = help; 3010 description = help;
3011 help.clear(); 3011 help.clear();
3012 } 3012 }
3013 if (!description.empty() && name().empty() && !title_elem_id) { 3013 if (!description.empty() && name().empty() && !title_elem_id) {
3014 set_name(description); 3014 set_name(description);
3015 description.clear(); 3015 description.clear();
3016 } 3016 }
3017 3017
3018 // If it's a text field, also consider the placeholder. 3018 // If it's a text field, also consider the placeholder.
3019 std::string placeholder; 3019 std::string placeholder;
3020 if (blink_role() == blink::WebAXRoleTextField && 3020 if (blink_role() == ui::AX_ROLE_TEXT_FIELD &&
3021 HasState(blink::WebAXStateFocusable) && 3021 HasState(ui::AX_STATE_FOCUSABLE) &&
3022 GetHtmlAttribute("placeholder", &placeholder)) { 3022 GetHtmlAttribute("placeholder", &placeholder)) {
3023 if (name().empty() && !title_elem_id) { 3023 if (name().empty() && !title_elem_id) {
3024 set_name(placeholder); 3024 set_name(placeholder);
3025 } else if (description.empty()) { 3025 } else if (description.empty()) {
3026 description = placeholder; 3026 description = placeholder;
3027 } 3027 }
3028 } 3028 }
3029 3029
3030 SetStringAttribute(AccessibilityNodeData::ATTR_DESCRIPTION, description); 3030 SetStringAttribute(ui::AX_ATTR_DESCRIPTION, description);
3031 SetStringAttribute(AccessibilityNodeData::ATTR_HELP, help); 3031 SetStringAttribute(ui::AX_ATTR_HELP, help);
3032 3032
3033 // On Windows, the value of a document should be its url. 3033 // On Windows, the value of a document should be its url.
3034 if (blink_role() == blink::WebAXRoleRootWebArea || 3034 if (blink_role() == ui::AX_ROLE_ROOT_WEB_AREA ||
3035 blink_role() == blink::WebAXRoleWebArea) { 3035 blink_role() == ui::AX_ROLE_WEB_AREA) {
3036 set_value(GetStringAttribute(AccessibilityNodeData::ATTR_DOC_URL)); 3036 set_value(GetStringAttribute(ui::AX_ATTR_DOC_URL));
3037 } 3037 }
3038 3038
3039 // For certain roles (listbox option, static text, and list marker) 3039 // For certain roles (listbox option, static text, and list marker)
3040 // WebKit stores the main accessible text in the "value" - swap it so 3040 // WebKit stores the main accessible text in the "value" - swap it so
3041 // that it's the "name". 3041 // that it's the "name".
3042 if (name().empty() && 3042 if (name().empty() &&
3043 (blink_role() == blink::WebAXRoleListBoxOption || 3043 (blink_role() == ui::AX_ROLE_LIST_BOX_OPTION ||
3044 blink_role() == blink::WebAXRoleStaticText || 3044 blink_role() == ui::AX_ROLE_STATIC_TEXT ||
3045 blink_role() == blink::WebAXRoleListMarker)) { 3045 blink_role() == ui::AX_ROLE_LIST_MARKER)) {
3046 std::string tmp = value(); 3046 std::string tmp = value();
3047 set_value(name()); 3047 set_value(name());
3048 set_name(tmp); 3048 set_name(tmp);
3049 } 3049 }
3050 3050
3051 // If this doesn't have a value and is linked then set its value to the url 3051 // If this doesn't have a value and is linked then set its value to the url
3052 // attribute. This allows screen readers to read an empty link's destination. 3052 // attribute. This allows screen readers to read an empty link's destination.
3053 if (value().empty() && (ia_state_ & STATE_SYSTEM_LINKED)) 3053 if (value().empty() && (ia_state_ & STATE_SYSTEM_LINKED))
3054 set_value(GetStringAttribute(AccessibilityNodeData::ATTR_URL)); 3054 set_value(GetStringAttribute(ui::AX_ATTR_URL));
3055 3055
3056 // Clear any old relationships between this node and other nodes. 3056 // Clear any old relationships between this node and other nodes.
3057 for (size_t i = 0; i < relations_.size(); ++i) 3057 for (size_t i = 0; i < relations_.size(); ++i)
3058 relations_[i]->Release(); 3058 relations_[i]->Release();
3059 relations_.clear(); 3059 relations_.clear();
3060 3060
3061 // Handle title UI element. 3061 // Handle title UI element.
3062 if (title_elem_id) { 3062 if (title_elem_id) {
3063 // Add a labelled by relationship. 3063 // Add a labelled by relationship.
3064 CComObject<BrowserAccessibilityRelation>* relation; 3064 CComObject<BrowserAccessibilityRelation>* relation;
3065 HRESULT hr = CComObject<BrowserAccessibilityRelation>::CreateInstance( 3065 HRESULT hr = CComObject<BrowserAccessibilityRelation>::CreateInstance(
3066 &relation); 3066 &relation);
3067 DCHECK(SUCCEEDED(hr)); 3067 DCHECK(SUCCEEDED(hr));
3068 relation->AddRef(); 3068 relation->AddRef();
3069 relation->Initialize(this, IA2_RELATION_LABELLED_BY); 3069 relation->Initialize(this, IA2_RELATION_LABELLED_BY);
3070 relation->AddTarget(title_elem_id); 3070 relation->AddTarget(title_elem_id);
3071 relations_.push_back(relation); 3071 relations_.push_back(relation);
3072 } 3072 }
3073 } 3073 }
3074 3074
3075 void BrowserAccessibilityWin::PostInitialize() { 3075 void BrowserAccessibilityWin::PostInitialize() {
3076 BrowserAccessibility::PostInitialize(); 3076 BrowserAccessibility::PostInitialize();
3077 3077
3078 // Construct the hypertext for this node. 3078 // Construct the hypertext for this node.
3079 hyperlink_offset_to_index_.clear(); 3079 hyperlink_offset_to_index_.clear();
3080 hyperlinks_.clear(); 3080 hyperlinks_.clear();
3081 hypertext_.clear(); 3081 hypertext_.clear();
3082 for (unsigned int i = 0; i < PlatformChildCount(); ++i) { 3082 for (unsigned int i = 0; i < PlatformChildCount(); ++i) {
3083 BrowserAccessibility* child = PlatformGetChild(i); 3083 BrowserAccessibility* child = PlatformGetChild(i);
3084 if (child->role() == blink::WebAXRoleStaticText) { 3084 if (child->role() == ui::AX_ROLE_STATIC_TEXT) {
3085 hypertext_ += base::UTF8ToUTF16(child->name()); 3085 hypertext_ += base::UTF8ToUTF16(child->name());
3086 } else { 3086 } else {
3087 hyperlink_offset_to_index_[hypertext_.size()] = hyperlinks_.size(); 3087 hyperlink_offset_to_index_[hypertext_.size()] = hyperlinks_.size();
3088 hypertext_ += kEmbeddedCharacter; 3088 hypertext_ += kEmbeddedCharacter;
3089 hyperlinks_.push_back(i); 3089 hyperlinks_.push_back(i);
3090 } 3090 }
3091 } 3091 }
3092 DCHECK_EQ(hyperlink_offset_to_index_.size(), hyperlinks_.size()); 3092 DCHECK_EQ(hyperlink_offset_to_index_.size(), hyperlinks_.size());
3093 3093
3094 // Fire an event when an alert first appears. 3094 // Fire an event when an alert first appears.
3095 if (blink_role() == blink::WebAXRoleAlert && first_time_) 3095 if (blink_role() == ui::AX_ROLE_ALERT && first_time_)
3096 manager()->NotifyAccessibilityEvent(blink::WebAXEventAlert, this); 3096 manager()->NotifyAccessibilityEvent(ui::AX_EVENT_ALERT, this);
3097 3097
3098 // Fire events if text has changed. 3098 // Fire events if text has changed.
3099 base::string16 text = TextForIAccessibleText(); 3099 base::string16 text = TextForIAccessibleText();
3100 if (previous_text_ != text) { 3100 if (previous_text_ != text) {
3101 if (!previous_text_.empty() && !text.empty()) { 3101 if (!previous_text_.empty() && !text.empty()) {
3102 manager()->NotifyAccessibilityEvent( 3102 manager()->NotifyAccessibilityEvent(
3103 blink::WebAXEventShow, this); 3103 ui::AX_EVENT_SHOW, this);
3104 } 3104 }
3105 3105
3106 // TODO(dmazzoni): Look into HIDE events, too. 3106 // TODO(dmazzoni): Look into HIDE events, too.
3107 3107
3108 old_text_ = previous_text_; 3108 old_text_ = previous_text_;
3109 previous_text_ = text; 3109 previous_text_ = text;
3110 } 3110 }
3111 3111
3112 BrowserAccessibilityManagerWin* manager = 3112 BrowserAccessibilityManagerWin* manager =
3113 this->manager()->ToBrowserAccessibilityManagerWin(); 3113 this->manager()->ToBrowserAccessibilityManagerWin();
3114 3114
3115 // Fire events if the state has changed. 3115 // Fire events if the state has changed.
3116 if (!first_time_ && ia_state_ != old_ia_state_) { 3116 if (!first_time_ && ia_state_ != old_ia_state_) {
3117 // Normally focus events are handled elsewhere, however 3117 // Normally focus events are handled elsewhere, however
3118 // focus for managed descendants is platform-specific. 3118 // focus for managed descendants is platform-specific.
3119 // Fire a focus event if the focused descendant in a multi-select 3119 // Fire a focus event if the focused descendant in a multi-select
3120 // list box changes. 3120 // list box changes.
3121 if (blink_role() == blink::WebAXRoleListBoxOption && 3121 if (blink_role() == ui::AX_ROLE_LIST_BOX_OPTION &&
3122 (ia_state_ & STATE_SYSTEM_FOCUSABLE) && 3122 (ia_state_ & STATE_SYSTEM_FOCUSABLE) &&
3123 (ia_state_ & STATE_SYSTEM_SELECTABLE) && 3123 (ia_state_ & STATE_SYSTEM_SELECTABLE) &&
3124 (ia_state_ & STATE_SYSTEM_FOCUSED) && 3124 (ia_state_ & STATE_SYSTEM_FOCUSED) &&
3125 !(old_ia_state_ & STATE_SYSTEM_FOCUSED)) { 3125 !(old_ia_state_ & STATE_SYSTEM_FOCUSED)) {
3126 manager->MaybeCallNotifyWinEvent(EVENT_OBJECT_FOCUS, unique_id_win()); 3126 manager->MaybeCallNotifyWinEvent(EVENT_OBJECT_FOCUS, unique_id_win());
3127 } 3127 }
3128 3128
3129 if ((ia_state_ & STATE_SYSTEM_SELECTED) && 3129 if ((ia_state_ & STATE_SYSTEM_SELECTED) &&
3130 !(old_ia_state_ & STATE_SYSTEM_SELECTED)) { 3130 !(old_ia_state_ & STATE_SYSTEM_SELECTED)) {
3131 manager->MaybeCallNotifyWinEvent(EVENT_OBJECT_SELECTIONADD, 3131 manager->MaybeCallNotifyWinEvent(EVENT_OBJECT_SELECTIONADD,
3132 unique_id_win()); 3132 unique_id_win());
3133 } else if (!(ia_state_ & STATE_SYSTEM_SELECTED) && 3133 } else if (!(ia_state_ & STATE_SYSTEM_SELECTED) &&
3134 (old_ia_state_ & STATE_SYSTEM_SELECTED)) { 3134 (old_ia_state_ & STATE_SYSTEM_SELECTED)) {
3135 manager->MaybeCallNotifyWinEvent(EVENT_OBJECT_SELECTIONREMOVE, 3135 manager->MaybeCallNotifyWinEvent(EVENT_OBJECT_SELECTIONREMOVE,
3136 unique_id_win()); 3136 unique_id_win());
3137 } 3137 }
3138 3138
3139 old_ia_state_ = ia_state_; 3139 old_ia_state_ = ia_state_;
3140 } 3140 }
3141 3141
3142 // Fire an event if this container object has scrolled. 3142 // Fire an event if this container object has scrolled.
3143 int sx = 0; 3143 int sx = 0;
3144 int sy = 0; 3144 int sy = 0;
3145 if (GetIntAttribute(AccessibilityNodeData::ATTR_SCROLL_X, &sx) && 3145 if (GetIntAttribute(ui::AX_ATTR_SCROLL_X, &sx) &&
3146 GetIntAttribute(AccessibilityNodeData::ATTR_SCROLL_Y, &sy)) { 3146 GetIntAttribute(ui::AX_ATTR_SCROLL_Y, &sy)) {
3147 if (!first_time_ && 3147 if (!first_time_ &&
3148 (sx != previous_scroll_x_ || sy != previous_scroll_y_)) { 3148 (sx != previous_scroll_x_ || sy != previous_scroll_y_)) {
3149 manager->MaybeCallNotifyWinEvent(EVENT_SYSTEM_SCROLLINGEND, 3149 manager->MaybeCallNotifyWinEvent(EVENT_SYSTEM_SCROLLINGEND,
3150 unique_id_win()); 3150 unique_id_win());
3151 } 3151 }
3152 previous_scroll_x_ = sx; 3152 previous_scroll_x_ = sx;
3153 previous_scroll_y_ = sy; 3153 previous_scroll_y_ = sy;
3154 } 3154 }
3155 3155
3156 first_time_ = false; 3156 first_time_ = false;
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
3189 return this; 3189 return this;
3190 3190
3191 if (child_id >= 1 && child_id <= static_cast<LONG>(PlatformChildCount())) 3191 if (child_id >= 1 && child_id <= static_cast<LONG>(PlatformChildCount()))
3192 return PlatformGetChild(child_id - 1)->ToBrowserAccessibilityWin(); 3192 return PlatformGetChild(child_id - 1)->ToBrowserAccessibilityWin();
3193 3193
3194 return manager()->ToBrowserAccessibilityManagerWin()-> 3194 return manager()->ToBrowserAccessibilityManagerWin()->
3195 GetFromUniqueIdWin(child_id); 3195 GetFromUniqueIdWin(child_id);
3196 } 3196 }
3197 3197
3198 HRESULT BrowserAccessibilityWin::GetStringAttributeAsBstr( 3198 HRESULT BrowserAccessibilityWin::GetStringAttributeAsBstr(
3199 AccessibilityNodeData::StringAttribute attribute, 3199 ui::AXStringAttribute attribute,
3200 BSTR* value_bstr) { 3200 BSTR* value_bstr) {
3201 base::string16 str; 3201 base::string16 str;
3202 3202
3203 if (!GetString16Attribute(attribute, &str)) 3203 if (!GetString16Attribute(attribute, &str))
3204 return S_FALSE; 3204 return S_FALSE;
3205 3205
3206 if (str.empty()) 3206 if (str.empty())
3207 return S_FALSE; 3207 return S_FALSE;
3208 3208
3209 *value_bstr = SysAllocString(str.c_str()); 3209 *value_bstr = SysAllocString(str.c_str());
3210 DCHECK(*value_bstr); 3210 DCHECK(*value_bstr);
3211 3211
3212 return S_OK; 3212 return S_OK;
3213 } 3213 }
3214 3214
3215 void BrowserAccessibilityWin::StringAttributeToIA2( 3215 void BrowserAccessibilityWin::StringAttributeToIA2(
3216 AccessibilityNodeData::StringAttribute attribute, 3216 ui::AXStringAttribute attribute,
3217 const char* ia2_attr) { 3217 const char* ia2_attr) {
3218 base::string16 value; 3218 base::string16 value;
3219 if (GetString16Attribute(attribute, &value)) 3219 if (GetString16Attribute(attribute, &value))
3220 ia2_attributes_.push_back(base::ASCIIToUTF16(ia2_attr) + L":" + value); 3220 ia2_attributes_.push_back(base::ASCIIToUTF16(ia2_attr) + L":" + value);
3221 } 3221 }
3222 3222
3223 void BrowserAccessibilityWin::BoolAttributeToIA2( 3223 void BrowserAccessibilityWin::BoolAttributeToIA2(
3224 AccessibilityNodeData::BoolAttribute attribute, 3224 ui::AXBoolAttribute attribute,
3225 const char* ia2_attr) { 3225 const char* ia2_attr) {
3226 bool value; 3226 bool value;
3227 if (GetBoolAttribute(attribute, &value)) { 3227 if (GetBoolAttribute(attribute, &value)) {
3228 ia2_attributes_.push_back((base::ASCIIToUTF16(ia2_attr) + L":") + 3228 ia2_attributes_.push_back((base::ASCIIToUTF16(ia2_attr) + L":") +
3229 (value ? L"true" : L"false")); 3229 (value ? L"true" : L"false"));
3230 } 3230 }
3231 } 3231 }
3232 3232
3233 void BrowserAccessibilityWin::IntAttributeToIA2( 3233 void BrowserAccessibilityWin::IntAttributeToIA2(
3234 AccessibilityNodeData::IntAttribute attribute, 3234 ui::AXIntAttribute attribute,
3235 const char* ia2_attr) { 3235 const char* ia2_attr) {
3236 int value; 3236 int value;
3237 if (GetIntAttribute(attribute, &value)) { 3237 if (GetIntAttribute(attribute, &value)) {
3238 ia2_attributes_.push_back(base::ASCIIToUTF16(ia2_attr) + L":" + 3238 ia2_attributes_.push_back(base::ASCIIToUTF16(ia2_attr) + L":" +
3239 base::IntToString16(value)); 3239 base::IntToString16(value));
3240 } 3240 }
3241 } 3241 }
3242 3242
3243 base::string16 BrowserAccessibilityWin::GetValueText() { 3243 base::string16 BrowserAccessibilityWin::GetValueText() {
3244 float fval; 3244 float fval;
3245 base::string16 value = base::UTF8ToUTF16(this->value()); 3245 base::string16 value = base::UTF8ToUTF16(this->value());
3246 3246
3247 if (value.empty() && 3247 if (value.empty() &&
3248 GetFloatAttribute(AccessibilityNodeData::ATTR_VALUE_FOR_RANGE, &fval)) { 3248 GetFloatAttribute(ui::AX_ATTR_VALUE_FOR_RANGE, &fval)) {
3249 value = base::UTF8ToUTF16(base::DoubleToString(fval)); 3249 value = base::UTF8ToUTF16(base::DoubleToString(fval));
3250 } 3250 }
3251 return value; 3251 return value;
3252 } 3252 }
3253 3253
3254 base::string16 BrowserAccessibilityWin::TextForIAccessibleText() { 3254 base::string16 BrowserAccessibilityWin::TextForIAccessibleText() {
3255 if (IsEditableText()) 3255 if (IsEditableText())
3256 return base::UTF8ToUTF16(value()); 3256 return base::UTF8ToUTF16(value());
3257 return (blink_role() == blink::WebAXRoleStaticText) ? 3257 return (blink_role() == ui::AX_ROLE_STATIC_TEXT) ?
3258 base::UTF8ToUTF16(name()) : hypertext_; 3258 base::UTF8ToUTF16(name()) : hypertext_;
3259 } 3259 }
3260 3260
3261 void BrowserAccessibilityWin::HandleSpecialTextOffset( 3261 void BrowserAccessibilityWin::HandleSpecialTextOffset(
3262 const base::string16& text, 3262 const base::string16& text,
3263 LONG* offset) { 3263 LONG* offset) {
3264 if (*offset == IA2_TEXT_OFFSET_LENGTH) 3264 if (*offset == IA2_TEXT_OFFSET_LENGTH)
3265 *offset = static_cast<LONG>(text.size()); 3265 *offset = static_cast<LONG>(text.size());
3266 else if (*offset == IA2_TEXT_OFFSET_CARET) 3266 else if (*offset == IA2_TEXT_OFFSET_CARET)
3267 get_caretOffset(offset); 3267 get_caretOffset(offset);
(...skipping 15 matching lines...) Expand all
3283 } 3283 }
3284 3284
3285 LONG BrowserAccessibilityWin::FindBoundary( 3285 LONG BrowserAccessibilityWin::FindBoundary(
3286 const base::string16& text, 3286 const base::string16& text,
3287 IA2TextBoundaryType ia2_boundary, 3287 IA2TextBoundaryType ia2_boundary,
3288 LONG start_offset, 3288 LONG start_offset,
3289 ui::TextBoundaryDirection direction) { 3289 ui::TextBoundaryDirection direction) {
3290 HandleSpecialTextOffset(text, &start_offset); 3290 HandleSpecialTextOffset(text, &start_offset);
3291 ui::TextBoundaryType boundary = IA2TextBoundaryToTextBoundary(ia2_boundary); 3291 ui::TextBoundaryType boundary = IA2TextBoundaryToTextBoundary(ia2_boundary);
3292 const std::vector<int32>& line_breaks = GetIntListAttribute( 3292 const std::vector<int32>& line_breaks = GetIntListAttribute(
3293 AccessibilityNodeData::ATTR_LINE_BREAKS); 3293 ui::AX_ATTR_LINE_BREAKS);
3294 return ui::FindAccessibleTextBoundary( 3294 return ui::FindAccessibleTextBoundary(
3295 text, line_breaks, boundary, start_offset, direction); 3295 text, line_breaks, boundary, start_offset, direction);
3296 } 3296 }
3297 3297
3298 BrowserAccessibilityWin* BrowserAccessibilityWin::GetFromRendererID( 3298 BrowserAccessibilityWin* BrowserAccessibilityWin::GetFromRendererID(
3299 int32 renderer_id) { 3299 int32 renderer_id) {
3300 return manager()->GetFromRendererID(renderer_id)->ToBrowserAccessibilityWin(); 3300 return manager()->GetFromRendererID(renderer_id)->ToBrowserAccessibilityWin();
3301 } 3301 }
3302 3302
3303 void BrowserAccessibilityWin::InitRoleAndState() { 3303 void BrowserAccessibilityWin::InitRoleAndState() {
3304 ia_state_ = 0; 3304 ia_state_ = 0;
3305 ia2_state_ = IA2_STATE_OPAQUE; 3305 ia2_state_ = IA2_STATE_OPAQUE;
3306 ia2_attributes_.clear(); 3306 ia2_attributes_.clear();
3307 3307
3308 if (HasState(blink::WebAXStateBusy)) 3308 if (HasState(ui::AX_STATE_BUSY))
3309 ia_state_ |= STATE_SYSTEM_BUSY; 3309 ia_state_ |= STATE_SYSTEM_BUSY;
3310 if (HasState(blink::WebAXStateChecked)) 3310 if (HasState(ui::AX_STATE_CHECKED))
3311 ia_state_ |= STATE_SYSTEM_CHECKED; 3311 ia_state_ |= STATE_SYSTEM_CHECKED;
3312 if (HasState(blink::WebAXStateCollapsed)) 3312 if (HasState(ui::AX_STATE_COLLAPSED))
3313 ia_state_ |= STATE_SYSTEM_COLLAPSED; 3313 ia_state_ |= STATE_SYSTEM_COLLAPSED;
3314 if (HasState(blink::WebAXStateExpanded)) 3314 if (HasState(ui::AX_STATE_EXPANDED))
3315 ia_state_ |= STATE_SYSTEM_EXPANDED; 3315 ia_state_ |= STATE_SYSTEM_EXPANDED;
3316 if (HasState(blink::WebAXStateFocusable)) 3316 if (HasState(ui::AX_STATE_FOCUSABLE))
3317 ia_state_ |= STATE_SYSTEM_FOCUSABLE; 3317 ia_state_ |= STATE_SYSTEM_FOCUSABLE;
3318 if (HasState(blink::WebAXStateHaspopup)) 3318 if (HasState(ui::AX_STATE_HASPOPUP))
3319 ia_state_ |= STATE_SYSTEM_HASPOPUP; 3319 ia_state_ |= STATE_SYSTEM_HASPOPUP;
3320 if (HasState(blink::WebAXStateHovered)) 3320 if (HasState(ui::AX_STATE_HOVERED))
3321 ia_state_ |= STATE_SYSTEM_HOTTRACKED; 3321 ia_state_ |= STATE_SYSTEM_HOTTRACKED;
3322 if (HasState(blink::WebAXStateIndeterminate)) 3322 if (HasState(ui::AX_STATE_INDETERMINATE))
3323 ia_state_ |= STATE_SYSTEM_INDETERMINATE; 3323 ia_state_ |= STATE_SYSTEM_INDETERMINATE;
3324 if (HasState(blink::WebAXStateInvisible)) 3324 if (HasState(ui::AX_STATE_INVISIBLE))
3325 ia_state_ |= STATE_SYSTEM_INVISIBLE; 3325 ia_state_ |= STATE_SYSTEM_INVISIBLE;
3326 if (HasState(blink::WebAXStateLinked)) 3326 if (HasState(ui::AX_STATE_LINKED))
3327 ia_state_ |= STATE_SYSTEM_LINKED; 3327 ia_state_ |= STATE_SYSTEM_LINKED;
3328 if (HasState(blink::WebAXStateMultiselectable)) { 3328 if (HasState(ui::AX_STATE_MULTISELECTABLE)) {
3329 ia_state_ |= STATE_SYSTEM_EXTSELECTABLE; 3329 ia_state_ |= STATE_SYSTEM_EXTSELECTABLE;
3330 ia_state_ |= STATE_SYSTEM_MULTISELECTABLE; 3330 ia_state_ |= STATE_SYSTEM_MULTISELECTABLE;
3331 } 3331 }
3332 // TODO(ctguil): Support STATE_SYSTEM_EXTSELECTABLE/accSelect. 3332 // TODO(ctguil): Support STATE_SYSTEM_EXTSELECTABLE/accSelect.
3333 if (HasState(blink::WebAXStateOffscreen)) 3333 if (HasState(ui::AX_STATE_OFFSCREEN))
3334 ia_state_ |= STATE_SYSTEM_OFFSCREEN; 3334 ia_state_ |= STATE_SYSTEM_OFFSCREEN;
3335 if (HasState(blink::WebAXStatePressed)) 3335 if (HasState(ui::AX_STATE_PRESSED))
3336 ia_state_ |= STATE_SYSTEM_PRESSED; 3336 ia_state_ |= STATE_SYSTEM_PRESSED;
3337 if (HasState(blink::WebAXStateProtected)) 3337 if (HasState(ui::AX_STATE_PROTECTED))
3338 ia_state_ |= STATE_SYSTEM_PROTECTED; 3338 ia_state_ |= STATE_SYSTEM_PROTECTED;
3339 if (HasState(blink::WebAXStateRequired)) 3339 if (HasState(ui::AX_STATE_REQUIRED))
3340 ia2_state_ |= IA2_STATE_REQUIRED; 3340 ia2_state_ |= IA2_STATE_REQUIRED;
3341 if (HasState(blink::WebAXStateSelectable)) 3341 if (HasState(ui::AX_STATE_SELECTABLE))
3342 ia_state_ |= STATE_SYSTEM_SELECTABLE; 3342 ia_state_ |= STATE_SYSTEM_SELECTABLE;
3343 if (HasState(blink::WebAXStateSelected)) 3343 if (HasState(ui::AX_STATE_SELECTED))
3344 ia_state_ |= STATE_SYSTEM_SELECTED; 3344 ia_state_ |= STATE_SYSTEM_SELECTED;
3345 if (HasState(blink::WebAXStateVisited)) 3345 if (HasState(ui::AX_STATE_VISITED))
3346 ia_state_ |= STATE_SYSTEM_TRAVERSED; 3346 ia_state_ |= STATE_SYSTEM_TRAVERSED;
3347 if (!HasState(blink::WebAXStateEnabled)) 3347 if (!HasState(ui::AX_STATE_ENABLED))
3348 ia_state_ |= STATE_SYSTEM_UNAVAILABLE; 3348 ia_state_ |= STATE_SYSTEM_UNAVAILABLE;
3349 if (HasState(blink::WebAXStateVertical)) { 3349 if (HasState(ui::AX_STATE_VERTICAL)) {
3350 ia2_state_ |= IA2_STATE_VERTICAL; 3350 ia2_state_ |= IA2_STATE_VERTICAL;
3351 } else { 3351 } else {
3352 ia2_state_ |= IA2_STATE_HORIZONTAL; 3352 ia2_state_ |= IA2_STATE_HORIZONTAL;
3353 } 3353 }
3354 if (HasState(blink::WebAXStateVisited)) 3354 if (HasState(ui::AX_STATE_VISITED))
3355 ia_state_ |= STATE_SYSTEM_TRAVERSED; 3355 ia_state_ |= STATE_SYSTEM_TRAVERSED;
3356 3356
3357 // WebKit marks everything as readonly unless it's editable text, so if it's 3357 // WebKit marks everything as readonly unless it's editable text, so if it's
3358 // not readonly, mark it as editable now. The final computation of the 3358 // not readonly, mark it as editable now. The final computation of the
3359 // READONLY state for MSAA is below, after the switch. 3359 // READONLY state for MSAA is below, after the switch.
3360 if (!HasState(blink::WebAXStateReadonly)) 3360 if (!HasState(ui::AX_STATE_READONLY))
3361 ia2_state_ |= IA2_STATE_EDITABLE; 3361 ia2_state_ |= IA2_STATE_EDITABLE;
3362 3362
3363 base::string16 invalid; 3363 base::string16 invalid;
3364 if (GetHtmlAttribute("aria-invalid", &invalid)) 3364 if (GetHtmlAttribute("aria-invalid", &invalid))
3365 ia2_state_ |= IA2_STATE_INVALID_ENTRY; 3365 ia2_state_ |= IA2_STATE_INVALID_ENTRY;
3366 3366
3367 if (GetBoolAttribute(AccessibilityNodeData::ATTR_BUTTON_MIXED)) 3367 if (GetBoolAttribute(ui::AX_ATTR_BUTTON_MIXED))
3368 ia_state_ |= STATE_SYSTEM_MIXED; 3368 ia_state_ |= STATE_SYSTEM_MIXED;
3369 3369
3370 if (GetBoolAttribute(AccessibilityNodeData::ATTR_CAN_SET_VALUE)) 3370 if (GetBoolAttribute(ui::AX_ATTR_CAN_SET_VALUE))
3371 ia2_state_ |= IA2_STATE_EDITABLE; 3371 ia2_state_ |= IA2_STATE_EDITABLE;
3372 3372
3373 base::string16 html_tag = GetString16Attribute( 3373 base::string16 html_tag = GetString16Attribute(
3374 AccessibilityNodeData::ATTR_HTML_TAG); 3374 ui::AX_ATTR_HTML_TAG);
3375 ia_role_ = 0; 3375 ia_role_ = 0;
3376 ia2_role_ = 0; 3376 ia2_role_ = 0;
3377 switch (blink_role()) { 3377 switch (blink_role()) {
3378 case blink::WebAXRoleAlert: 3378 case ui::AX_ROLE_ALERT:
3379 ia_role_ = ROLE_SYSTEM_ALERT; 3379 ia_role_ = ROLE_SYSTEM_ALERT;
3380 break; 3380 break;
3381 case blink::WebAXRoleAlertDialog: 3381 case ui::AX_ROLE_ALERT_DIALOG:
3382 ia_role_ = ROLE_SYSTEM_DIALOG; 3382 ia_role_ = ROLE_SYSTEM_DIALOG;
3383 break; 3383 break;
3384 case blink::WebAXRoleApplication: 3384 case ui::AX_ROLE_APPLICATION:
3385 ia_role_ = ROLE_SYSTEM_APPLICATION; 3385 ia_role_ = ROLE_SYSTEM_APPLICATION;
3386 break; 3386 break;
3387 case blink::WebAXRoleArticle: 3387 case ui::AX_ROLE_ARTICLE:
3388 ia_role_ = ROLE_SYSTEM_GROUPING; 3388 ia_role_ = ROLE_SYSTEM_GROUPING;
3389 ia2_role_ = IA2_ROLE_SECTION; 3389 ia2_role_ = IA2_ROLE_SECTION;
3390 ia_state_ |= STATE_SYSTEM_READONLY; 3390 ia_state_ |= STATE_SYSTEM_READONLY;
3391 break; 3391 break;
3392 case blink::WebAXRoleBusyIndicator: 3392 case ui::AX_ROLE_BUSY_INDICATOR:
3393 ia_role_ = ROLE_SYSTEM_ANIMATION; 3393 ia_role_ = ROLE_SYSTEM_ANIMATION;
3394 ia_state_ |= STATE_SYSTEM_READONLY; 3394 ia_state_ |= STATE_SYSTEM_READONLY;
3395 break; 3395 break;
3396 case blink::WebAXRoleButton: 3396 case ui::AX_ROLE_BUTTON:
3397 ia_role_ = ROLE_SYSTEM_PUSHBUTTON; 3397 ia_role_ = ROLE_SYSTEM_PUSHBUTTON;
3398 bool is_aria_pressed_defined; 3398 bool is_aria_pressed_defined;
3399 bool is_mixed; 3399 bool is_mixed;
3400 if (GetAriaTristate("aria-pressed", &is_aria_pressed_defined, &is_mixed)) 3400 if (GetAriaTristate("aria-pressed", &is_aria_pressed_defined, &is_mixed))
3401 ia_state_ |= STATE_SYSTEM_PRESSED; 3401 ia_state_ |= STATE_SYSTEM_PRESSED;
3402 if (is_aria_pressed_defined) 3402 if (is_aria_pressed_defined)
3403 ia2_role_ = IA2_ROLE_TOGGLE_BUTTON; 3403 ia2_role_ = IA2_ROLE_TOGGLE_BUTTON;
3404 if (is_mixed) 3404 if (is_mixed)
3405 ia_state_ |= STATE_SYSTEM_MIXED; 3405 ia_state_ |= STATE_SYSTEM_MIXED;
3406 break; 3406 break;
3407 case blink::WebAXRoleCanvas: 3407 case ui::AX_ROLE_CANVAS:
3408 if (GetBoolAttribute(AccessibilityNodeData::ATTR_CANVAS_HAS_FALLBACK)) { 3408 if (GetBoolAttribute(ui::AX_ATTR_CANVAS_HAS_FALLBACK)) {
3409 role_name_ = L"canvas"; 3409 role_name_ = L"canvas";
3410 ia2_role_ = IA2_ROLE_CANVAS; 3410 ia2_role_ = IA2_ROLE_CANVAS;
3411 } else { 3411 } else {
3412 ia_role_ = ROLE_SYSTEM_GRAPHIC; 3412 ia_role_ = ROLE_SYSTEM_GRAPHIC;
3413 } 3413 }
3414 break; 3414 break;
3415 case blink::WebAXRoleCell: 3415 case ui::AX_ROLE_CELL:
3416 ia_role_ = ROLE_SYSTEM_CELL; 3416 ia_role_ = ROLE_SYSTEM_CELL;
3417 break; 3417 break;
3418 case blink::WebAXRoleCheckBox: 3418 case ui::AX_ROLE_CHECK_BOX:
3419 ia_role_ = ROLE_SYSTEM_CHECKBUTTON; 3419 ia_role_ = ROLE_SYSTEM_CHECKBUTTON;
3420 break; 3420 break;
3421 case blink::WebAXRoleColorWell: 3421 case ui::AX_ROLE_COLOR_WELL:
3422 ia_role_ = ROLE_SYSTEM_CLIENT; 3422 ia_role_ = ROLE_SYSTEM_CLIENT;
3423 ia2_role_ = IA2_ROLE_COLOR_CHOOSER; 3423 ia2_role_ = IA2_ROLE_COLOR_CHOOSER;
3424 break; 3424 break;
3425 case blink::WebAXRoleColumn: 3425 case ui::AX_ROLE_COLUMN:
3426 ia_role_ = ROLE_SYSTEM_COLUMN; 3426 ia_role_ = ROLE_SYSTEM_COLUMN;
3427 ia_state_ |= STATE_SYSTEM_READONLY; 3427 ia_state_ |= STATE_SYSTEM_READONLY;
3428 break; 3428 break;
3429 case blink::WebAXRoleColumnHeader: 3429 case ui::AX_ROLE_COLUMN_HEADER:
3430 ia_role_ = ROLE_SYSTEM_COLUMNHEADER; 3430 ia_role_ = ROLE_SYSTEM_COLUMNHEADER;
3431 ia_state_ |= STATE_SYSTEM_READONLY; 3431 ia_state_ |= STATE_SYSTEM_READONLY;
3432 break; 3432 break;
3433 case blink::WebAXRoleComboBox: 3433 case ui::AX_ROLE_COMBO_BOX:
3434 ia_role_ = ROLE_SYSTEM_COMBOBOX; 3434 ia_role_ = ROLE_SYSTEM_COMBOBOX;
3435 break; 3435 break;
3436 case blink::WebAXRoleDiv: 3436 case ui::AX_ROLE_DIV:
3437 role_name_ = L"div"; 3437 role_name_ = L"div";
3438 ia2_role_ = IA2_ROLE_SECTION; 3438 ia2_role_ = IA2_ROLE_SECTION;
3439 break; 3439 break;
3440 case blink::WebAXRoleDefinition: 3440 case ui::AX_ROLE_DEFINITION:
3441 role_name_ = html_tag; 3441 role_name_ = html_tag;
3442 ia2_role_ = IA2_ROLE_PARAGRAPH; 3442 ia2_role_ = IA2_ROLE_PARAGRAPH;
3443 ia_state_ |= STATE_SYSTEM_READONLY; 3443 ia_state_ |= STATE_SYSTEM_READONLY;
3444 break; 3444 break;
3445 case blink::WebAXRoleDescriptionListDetail: 3445 case ui::AX_ROLE_DESCRIPTION_LIST_DETAIL:
3446 role_name_ = html_tag; 3446 role_name_ = html_tag;
3447 ia2_role_ = IA2_ROLE_PARAGRAPH; 3447 ia2_role_ = IA2_ROLE_PARAGRAPH;
3448 ia_state_ |= STATE_SYSTEM_READONLY; 3448 ia_state_ |= STATE_SYSTEM_READONLY;
3449 break; 3449 break;
3450 case blink::WebAXRoleDescriptionListTerm: 3450 case ui::AX_ROLE_DESCRIPTION_LIST_TERM:
3451 ia_role_ = ROLE_SYSTEM_LISTITEM; 3451 ia_role_ = ROLE_SYSTEM_LISTITEM;
3452 ia_state_ |= STATE_SYSTEM_READONLY; 3452 ia_state_ |= STATE_SYSTEM_READONLY;
3453 break; 3453 break;
3454 case blink::WebAXRoleDialog: 3454 case ui::AX_ROLE_DIALOG:
3455 ia_role_ = ROLE_SYSTEM_DIALOG; 3455 ia_role_ = ROLE_SYSTEM_DIALOG;
3456 ia_state_ |= STATE_SYSTEM_READONLY; 3456 ia_state_ |= STATE_SYSTEM_READONLY;
3457 break; 3457 break;
3458 case blink::WebAXRoleDisclosureTriangle: 3458 case ui::AX_ROLE_DISCLOSURE_TRIANGLE:
3459 ia_role_ = ROLE_SYSTEM_OUTLINEBUTTON; 3459 ia_role_ = ROLE_SYSTEM_OUTLINEBUTTON;
3460 ia_state_ |= STATE_SYSTEM_READONLY; 3460 ia_state_ |= STATE_SYSTEM_READONLY;
3461 break; 3461 break;
3462 case blink::WebAXRoleDocument: 3462 case ui::AX_ROLE_DOCUMENT:
3463 case blink::WebAXRoleRootWebArea: 3463 case ui::AX_ROLE_ROOT_WEB_AREA:
3464 case blink::WebAXRoleWebArea: 3464 case ui::AX_ROLE_WEB_AREA:
3465 ia_role_ = ROLE_SYSTEM_DOCUMENT; 3465 ia_role_ = ROLE_SYSTEM_DOCUMENT;
3466 ia_state_ |= STATE_SYSTEM_READONLY; 3466 ia_state_ |= STATE_SYSTEM_READONLY;
3467 ia_state_ |= STATE_SYSTEM_FOCUSABLE; 3467 ia_state_ |= STATE_SYSTEM_FOCUSABLE;
3468 break; 3468 break;
3469 case blink::WebAXRoleEditableText: 3469 case ui::AX_ROLE_EDITABLE_TEXT:
3470 ia_role_ = ROLE_SYSTEM_TEXT; 3470 ia_role_ = ROLE_SYSTEM_TEXT;
3471 ia2_state_ |= IA2_STATE_SINGLE_LINE; 3471 ia2_state_ |= IA2_STATE_SINGLE_LINE;
3472 ia2_state_ |= IA2_STATE_EDITABLE; 3472 ia2_state_ |= IA2_STATE_EDITABLE;
3473 break; 3473 break;
3474 case blink::WebAXRoleForm: 3474 case ui::AX_ROLE_FORM:
3475 role_name_ = L"form"; 3475 role_name_ = L"form";
3476 ia2_role_ = IA2_ROLE_FORM; 3476 ia2_role_ = IA2_ROLE_FORM;
3477 break; 3477 break;
3478 case blink::WebAXRoleFooter: 3478 case ui::AX_ROLE_FOOTER:
3479 ia_role_ = IA2_ROLE_FOOTER; 3479 ia_role_ = IA2_ROLE_FOOTER;
3480 ia_state_ |= STATE_SYSTEM_READONLY; 3480 ia_state_ |= STATE_SYSTEM_READONLY;
3481 break; 3481 break;
3482 case blink::WebAXRoleGrid: 3482 case ui::AX_ROLE_GRID:
3483 ia_role_ = ROLE_SYSTEM_TABLE; 3483 ia_role_ = ROLE_SYSTEM_TABLE;
3484 ia_state_ |= STATE_SYSTEM_READONLY; 3484 ia_state_ |= STATE_SYSTEM_READONLY;
3485 break; 3485 break;
3486 case blink::WebAXRoleGroup: { 3486 case ui::AX_ROLE_GROUP: {
3487 base::string16 aria_role = GetString16Attribute( 3487 base::string16 aria_role = GetString16Attribute(
3488 AccessibilityNodeData::ATTR_ROLE); 3488 ui::AX_ATTR_ROLE);
3489 if (aria_role == L"group" || html_tag == L"fieldset") { 3489 if (aria_role == L"group" || html_tag == L"fieldset") {
3490 ia_role_ = ROLE_SYSTEM_GROUPING; 3490 ia_role_ = ROLE_SYSTEM_GROUPING;
3491 } else if (html_tag == L"li") { 3491 } else if (html_tag == L"li") {
3492 ia_role_ = ROLE_SYSTEM_LISTITEM; 3492 ia_role_ = ROLE_SYSTEM_LISTITEM;
3493 } else { 3493 } else {
3494 if (html_tag.empty()) 3494 if (html_tag.empty())
3495 role_name_ = L"div"; 3495 role_name_ = L"div";
3496 else 3496 else
3497 role_name_ = html_tag; 3497 role_name_ = html_tag;
3498 ia2_role_ = IA2_ROLE_SECTION; 3498 ia2_role_ = IA2_ROLE_SECTION;
3499 } 3499 }
3500 ia_state_ |= STATE_SYSTEM_READONLY; 3500 ia_state_ |= STATE_SYSTEM_READONLY;
3501 break; 3501 break;
3502 } 3502 }
3503 case blink::WebAXRoleGrowArea: 3503 case ui::AX_ROLE_GROW_AREA:
3504 ia_role_ = ROLE_SYSTEM_GRIP; 3504 ia_role_ = ROLE_SYSTEM_GRIP;
3505 ia_state_ |= STATE_SYSTEM_READONLY; 3505 ia_state_ |= STATE_SYSTEM_READONLY;
3506 break; 3506 break;
3507 case blink::WebAXRoleHeading: 3507 case ui::AX_ROLE_HEADING:
3508 role_name_ = html_tag; 3508 role_name_ = html_tag;
3509 ia2_role_ = IA2_ROLE_HEADING; 3509 ia2_role_ = IA2_ROLE_HEADING;
3510 ia_state_ |= STATE_SYSTEM_READONLY; 3510 ia_state_ |= STATE_SYSTEM_READONLY;
3511 break; 3511 break;
3512 case blink::WebAXRoleHorizontalRule: 3512 case ui::AX_ROLE_HORIZONTAL_RULE:
3513 ia_role_ = ROLE_SYSTEM_SEPARATOR; 3513 ia_role_ = ROLE_SYSTEM_SEPARATOR;
3514 break; 3514 break;
3515 case blink::WebAXRoleImage: 3515 case ui::AX_ROLE_IMAGE:
3516 ia_role_ = ROLE_SYSTEM_GRAPHIC; 3516 ia_role_ = ROLE_SYSTEM_GRAPHIC;
3517 ia_state_ |= STATE_SYSTEM_READONLY; 3517 ia_state_ |= STATE_SYSTEM_READONLY;
3518 break; 3518 break;
3519 case blink::WebAXRoleImageMap: 3519 case ui::AX_ROLE_IMAGE_MAP:
3520 role_name_ = html_tag; 3520 role_name_ = html_tag;
3521 ia2_role_ = IA2_ROLE_IMAGE_MAP; 3521 ia2_role_ = IA2_ROLE_IMAGE_MAP;
3522 ia_state_ |= STATE_SYSTEM_READONLY; 3522 ia_state_ |= STATE_SYSTEM_READONLY;
3523 break; 3523 break;
3524 case blink::WebAXRoleImageMapLink: 3524 case ui::AX_ROLE_IMAGE_MAP_LINK:
3525 ia_role_ = ROLE_SYSTEM_LINK; 3525 ia_role_ = ROLE_SYSTEM_LINK;
3526 ia_state_ |= STATE_SYSTEM_LINKED; 3526 ia_state_ |= STATE_SYSTEM_LINKED;
3527 ia_state_ |= STATE_SYSTEM_READONLY; 3527 ia_state_ |= STATE_SYSTEM_READONLY;
3528 break; 3528 break;
3529 case blink::WebAXRoleLabel: 3529 case ui::AX_ROLE_LABEL:
3530 ia_role_ = ROLE_SYSTEM_TEXT; 3530 ia_role_ = ROLE_SYSTEM_TEXT;
3531 ia2_role_ = IA2_ROLE_LABEL; 3531 ia2_role_ = IA2_ROLE_LABEL;
3532 break; 3532 break;
3533 case blink::WebAXRoleBanner: 3533 case ui::AX_ROLE_BANNER:
3534 case blink::WebAXRoleComplementary: 3534 case ui::AX_ROLE_COMPLEMENTARY:
3535 case blink::WebAXRoleContentInfo: 3535 case ui::AX_ROLE_CONTENT_INFO:
3536 case blink::WebAXRoleMain: 3536 case ui::AX_ROLE_MAIN:
3537 case blink::WebAXRoleNavigation: 3537 case ui::AX_ROLE_NAVIGATION:
3538 case blink::WebAXRoleSearch: 3538 case ui::AX_ROLE_SEARCH:
3539 ia_role_ = ROLE_SYSTEM_GROUPING; 3539 ia_role_ = ROLE_SYSTEM_GROUPING;
3540 ia2_role_ = IA2_ROLE_SECTION; 3540 ia2_role_ = IA2_ROLE_SECTION;
3541 ia_state_ |= STATE_SYSTEM_READONLY; 3541 ia_state_ |= STATE_SYSTEM_READONLY;
3542 break; 3542 break;
3543 case blink::WebAXRoleLink: 3543 case ui::AX_ROLE_LINK:
3544 ia_role_ = ROLE_SYSTEM_LINK; 3544 ia_role_ = ROLE_SYSTEM_LINK;
3545 ia_state_ |= STATE_SYSTEM_LINKED; 3545 ia_state_ |= STATE_SYSTEM_LINKED;
3546 break; 3546 break;
3547 case blink::WebAXRoleList: 3547 case ui::AX_ROLE_LIST:
3548 ia_role_ = ROLE_SYSTEM_LIST; 3548 ia_role_ = ROLE_SYSTEM_LIST;
3549 ia_state_ |= STATE_SYSTEM_READONLY; 3549 ia_state_ |= STATE_SYSTEM_READONLY;
3550 break; 3550 break;
3551 case blink::WebAXRoleListBox: 3551 case ui::AX_ROLE_LIST_BOX:
3552 ia_role_ = ROLE_SYSTEM_LIST; 3552 ia_role_ = ROLE_SYSTEM_LIST;
3553 break; 3553 break;
3554 case blink::WebAXRoleListBoxOption: 3554 case ui::AX_ROLE_LIST_BOX_OPTION:
3555 ia_role_ = ROLE_SYSTEM_LISTITEM; 3555 ia_role_ = ROLE_SYSTEM_LISTITEM;
3556 if (ia_state_ & STATE_SYSTEM_SELECTABLE) { 3556 if (ia_state_ & STATE_SYSTEM_SELECTABLE) {
3557 ia_state_ |= STATE_SYSTEM_FOCUSABLE; 3557 ia_state_ |= STATE_SYSTEM_FOCUSABLE;
3558 if (HasState(blink::WebAXStateFocused)) 3558 if (HasState(ui::AX_STATE_FOCUSED))
3559 ia_state_ |= STATE_SYSTEM_FOCUSED; 3559 ia_state_ |= STATE_SYSTEM_FOCUSED;
3560 } 3560 }
3561 break; 3561 break;
3562 case blink::WebAXRoleListItem: 3562 case ui::AX_ROLE_LIST_ITEM:
3563 ia_role_ = ROLE_SYSTEM_LISTITEM; 3563 ia_role_ = ROLE_SYSTEM_LISTITEM;
3564 ia_state_ |= STATE_SYSTEM_READONLY; 3564 ia_state_ |= STATE_SYSTEM_READONLY;
3565 break; 3565 break;
3566 case blink::WebAXRoleListMarker: 3566 case ui::AX_ROLE_LIST_MARKER:
3567 ia_role_ = ROLE_SYSTEM_TEXT; 3567 ia_role_ = ROLE_SYSTEM_TEXT;
3568 ia_state_ |= STATE_SYSTEM_READONLY; 3568 ia_state_ |= STATE_SYSTEM_READONLY;
3569 break; 3569 break;
3570 case blink::WebAXRoleMath: 3570 case ui::AX_ROLE_MATH_ELEMENT:
3571 ia_role_ = ROLE_SYSTEM_EQUATION; 3571 ia_role_ = ROLE_SYSTEM_EQUATION;
3572 ia_state_ |= STATE_SYSTEM_READONLY; 3572 ia_state_ |= STATE_SYSTEM_READONLY;
3573 break; 3573 break;
3574 case blink::WebAXRoleMenu: 3574 case ui::AX_ROLE_MENU:
3575 case blink::WebAXRoleMenuButton: 3575 case ui::AX_ROLE_MENU_BUTTON:
3576 ia_role_ = ROLE_SYSTEM_MENUPOPUP; 3576 ia_role_ = ROLE_SYSTEM_MENUPOPUP;
3577 break; 3577 break;
3578 case blink::WebAXRoleMenuBar: 3578 case ui::AX_ROLE_MENU_BAR:
3579 ia_role_ = ROLE_SYSTEM_MENUBAR; 3579 ia_role_ = ROLE_SYSTEM_MENUBAR;
3580 break; 3580 break;
3581 case blink::WebAXRoleMenuItem: 3581 case ui::AX_ROLE_MENU_ITEM:
3582 ia_role_ = ROLE_SYSTEM_MENUITEM; 3582 ia_role_ = ROLE_SYSTEM_MENUITEM;
3583 break; 3583 break;
3584 case blink::WebAXRoleMenuListPopup: 3584 case ui::AX_ROLE_MENU_LIST_POPUP:
3585 ia_role_ = ROLE_SYSTEM_CLIENT; 3585 ia_role_ = ROLE_SYSTEM_CLIENT;
3586 break; 3586 break;
3587 case blink::WebAXRoleMenuListOption: 3587 case ui::AX_ROLE_MENU_LIST_OPTION:
3588 ia_role_ = ROLE_SYSTEM_LISTITEM; 3588 ia_role_ = ROLE_SYSTEM_LISTITEM;
3589 if (ia_state_ & STATE_SYSTEM_SELECTABLE) { 3589 if (ia_state_ & STATE_SYSTEM_SELECTABLE) {
3590 ia_state_ |= STATE_SYSTEM_FOCUSABLE; 3590 ia_state_ |= STATE_SYSTEM_FOCUSABLE;
3591 if (HasState(blink::WebAXStateFocused)) 3591 if (HasState(ui::AX_STATE_FOCUSED))
3592 ia_state_ |= STATE_SYSTEM_FOCUSED; 3592 ia_state_ |= STATE_SYSTEM_FOCUSED;
3593 } 3593 }
3594 break; 3594 break;
3595 case blink::WebAXRoleNote: 3595 case ui::AX_ROLE_NOTE:
3596 ia_role_ = ROLE_SYSTEM_GROUPING; 3596 ia_role_ = ROLE_SYSTEM_GROUPING;
3597 ia2_role_ = IA2_ROLE_NOTE; 3597 ia2_role_ = IA2_ROLE_NOTE;
3598 ia_state_ |= STATE_SYSTEM_READONLY; 3598 ia_state_ |= STATE_SYSTEM_READONLY;
3599 break; 3599 break;
3600 case blink::WebAXRoleOutline: 3600 case ui::AX_ROLE_OUTLINE:
3601 ia_role_ = ROLE_SYSTEM_OUTLINE; 3601 ia_role_ = ROLE_SYSTEM_OUTLINE;
3602 ia_state_ |= STATE_SYSTEM_READONLY; 3602 ia_state_ |= STATE_SYSTEM_READONLY;
3603 break; 3603 break;
3604 case blink::WebAXRoleParagraph: 3604 case ui::AX_ROLE_PARAGRAPH:
3605 role_name_ = L"P"; 3605 role_name_ = L"P";
3606 ia2_role_ = IA2_ROLE_PARAGRAPH; 3606 ia2_role_ = IA2_ROLE_PARAGRAPH;
3607 break; 3607 break;
3608 case blink::WebAXRolePopUpButton: 3608 case ui::AX_ROLE_POP_UP_BUTTON:
3609 if (html_tag == L"select") { 3609 if (html_tag == L"select") {
3610 ia_role_ = ROLE_SYSTEM_COMBOBOX; 3610 ia_role_ = ROLE_SYSTEM_COMBOBOX;
3611 } else { 3611 } else {
3612 ia_role_ = ROLE_SYSTEM_BUTTONMENU; 3612 ia_role_ = ROLE_SYSTEM_BUTTONMENU;
3613 } 3613 }
3614 break; 3614 break;
3615 case blink::WebAXRoleProgressIndicator: 3615 case ui::AX_ROLE_PROGRESS_INDICATOR:
3616 ia_role_ = ROLE_SYSTEM_PROGRESSBAR; 3616 ia_role_ = ROLE_SYSTEM_PROGRESSBAR;
3617 ia_state_ |= STATE_SYSTEM_READONLY; 3617 ia_state_ |= STATE_SYSTEM_READONLY;
3618 break; 3618 break;
3619 case blink::WebAXRoleRadioButton: 3619 case ui::AX_ROLE_RADIO_BUTTON:
3620 ia_role_ = ROLE_SYSTEM_RADIOBUTTON; 3620 ia_role_ = ROLE_SYSTEM_RADIOBUTTON;
3621 break; 3621 break;
3622 case blink::WebAXRoleRadioGroup: 3622 case ui::AX_ROLE_RADIO_GROUP:
3623 ia_role_ = ROLE_SYSTEM_GROUPING; 3623 ia_role_ = ROLE_SYSTEM_GROUPING;
3624 ia2_role_ = IA2_ROLE_SECTION; 3624 ia2_role_ = IA2_ROLE_SECTION;
3625 break; 3625 break;
3626 case blink::WebAXRoleRegion: 3626 case ui::AX_ROLE_REGION:
3627 ia_role_ = ROLE_SYSTEM_GROUPING; 3627 ia_role_ = ROLE_SYSTEM_GROUPING;
3628 ia2_role_ = IA2_ROLE_SECTION; 3628 ia2_role_ = IA2_ROLE_SECTION;
3629 ia_state_ |= STATE_SYSTEM_READONLY; 3629 ia_state_ |= STATE_SYSTEM_READONLY;
3630 break; 3630 break;
3631 case blink::WebAXRoleRow: 3631 case ui::AX_ROLE_ROW:
3632 ia_role_ = ROLE_SYSTEM_ROW; 3632 ia_role_ = ROLE_SYSTEM_ROW;
3633 ia_state_ |= STATE_SYSTEM_READONLY; 3633 ia_state_ |= STATE_SYSTEM_READONLY;
3634 break; 3634 break;
3635 case blink::WebAXRoleRowHeader: 3635 case ui::AX_ROLE_ROW_HEADER:
3636 ia_role_ = ROLE_SYSTEM_ROWHEADER; 3636 ia_role_ = ROLE_SYSTEM_ROWHEADER;
3637 ia_state_ |= STATE_SYSTEM_READONLY; 3637 ia_state_ |= STATE_SYSTEM_READONLY;
3638 break; 3638 break;
3639 case blink::WebAXRoleRuler: 3639 case ui::AX_ROLE_RULER:
3640 ia_role_ = ROLE_SYSTEM_CLIENT; 3640 ia_role_ = ROLE_SYSTEM_CLIENT;
3641 ia2_role_ = IA2_ROLE_RULER; 3641 ia2_role_ = IA2_ROLE_RULER;
3642 ia_state_ |= STATE_SYSTEM_READONLY; 3642 ia_state_ |= STATE_SYSTEM_READONLY;
3643 break; 3643 break;
3644 case blink::WebAXRoleScrollArea: 3644 case ui::AX_ROLE_SCROLL_AREA:
3645 ia_role_ = ROLE_SYSTEM_CLIENT; 3645 ia_role_ = ROLE_SYSTEM_CLIENT;
3646 ia2_role_ = IA2_ROLE_SCROLL_PANE; 3646 ia2_role_ = IA2_ROLE_SCROLL_PANE;
3647 ia_state_ |= STATE_SYSTEM_READONLY; 3647 ia_state_ |= STATE_SYSTEM_READONLY;
3648 break; 3648 break;
3649 case blink::WebAXRoleScrollBar: 3649 case ui::AX_ROLE_SCROLL_BAR:
3650 ia_role_ = ROLE_SYSTEM_SCROLLBAR; 3650 ia_role_ = ROLE_SYSTEM_SCROLLBAR;
3651 break; 3651 break;
3652 case blink::WebAXRoleSlider: 3652 case ui::AX_ROLE_SLIDER:
3653 ia_role_ = ROLE_SYSTEM_SLIDER; 3653 ia_role_ = ROLE_SYSTEM_SLIDER;
3654 break; 3654 break;
3655 case blink::WebAXRoleSpinButton: 3655 case ui::AX_ROLE_SPIN_BUTTON:
3656 ia_role_ = ROLE_SYSTEM_SPINBUTTON; 3656 ia_role_ = ROLE_SYSTEM_SPINBUTTON;
3657 break; 3657 break;
3658 case blink::WebAXRoleSpinButtonPart: 3658 case ui::AX_ROLE_SPIN_BUTTON_PART:
3659 ia_role_ = ROLE_SYSTEM_PUSHBUTTON; 3659 ia_role_ = ROLE_SYSTEM_PUSHBUTTON;
3660 break; 3660 break;
3661 case blink::WebAXRoleSplitGroup: 3661 case ui::AX_ROLE_SPLIT_GROUP:
3662 ia_role_ = ROLE_SYSTEM_CLIENT; 3662 ia_role_ = ROLE_SYSTEM_CLIENT;
3663 ia2_role_ = IA2_ROLE_SPLIT_PANE; 3663 ia2_role_ = IA2_ROLE_SPLIT_PANE;
3664 ia_state_ |= STATE_SYSTEM_READONLY; 3664 ia_state_ |= STATE_SYSTEM_READONLY;
3665 break; 3665 break;
3666 case blink::WebAXRoleAnnotation: 3666 case ui::AX_ROLE_ANNOTATION:
3667 case blink::WebAXRoleStaticText: 3667 case ui::AX_ROLE_STATIC_TEXT:
3668 ia_role_ = ROLE_SYSTEM_TEXT; 3668 ia_role_ = ROLE_SYSTEM_TEXT;
3669 ia_state_ |= STATE_SYSTEM_READONLY; 3669 ia_state_ |= STATE_SYSTEM_READONLY;
3670 break; 3670 break;
3671 case blink::WebAXRoleStatus: 3671 case ui::AX_ROLE_STATUS:
3672 ia_role_ = ROLE_SYSTEM_STATUSBAR; 3672 ia_role_ = ROLE_SYSTEM_STATUSBAR;
3673 ia_state_ |= STATE_SYSTEM_READONLY; 3673 ia_state_ |= STATE_SYSTEM_READONLY;
3674 break; 3674 break;
3675 case blink::WebAXRoleSplitter: 3675 case ui::AX_ROLE_SPLITTER:
3676 ia_role_ = ROLE_SYSTEM_SEPARATOR; 3676 ia_role_ = ROLE_SYSTEM_SEPARATOR;
3677 break; 3677 break;
3678 case blink::WebAXRoleSVGRoot: 3678 case ui::AX_ROLE_SVG_ROOT:
3679 ia_role_ = ROLE_SYSTEM_GRAPHIC; 3679 ia_role_ = ROLE_SYSTEM_GRAPHIC;
3680 break; 3680 break;
3681 case blink::WebAXRoleTab: 3681 case ui::AX_ROLE_TAB:
3682 ia_role_ = ROLE_SYSTEM_PAGETAB; 3682 ia_role_ = ROLE_SYSTEM_PAGETAB;
3683 break; 3683 break;
3684 case blink::WebAXRoleTable: { 3684 case ui::AX_ROLE_TABLE: {
3685 base::string16 aria_role = GetString16Attribute( 3685 base::string16 aria_role = GetString16Attribute(
3686 AccessibilityNodeData::ATTR_ROLE); 3686 ui::AX_ATTR_ROLE);
3687 if (aria_role == L"treegrid") { 3687 if (aria_role == L"treegrid") {
3688 ia_role_ = ROLE_SYSTEM_OUTLINE; 3688 ia_role_ = ROLE_SYSTEM_OUTLINE;
3689 } else { 3689 } else {
3690 ia_role_ = ROLE_SYSTEM_TABLE; 3690 ia_role_ = ROLE_SYSTEM_TABLE;
3691 ia_state_ |= STATE_SYSTEM_READONLY; 3691 ia_state_ |= STATE_SYSTEM_READONLY;
3692 } 3692 }
3693 break; 3693 break;
3694 } 3694 }
3695 case blink::WebAXRoleTableHeaderContainer: 3695 case ui::AX_ROLE_TABLE_HEADER_CONTAINER:
3696 ia_role_ = ROLE_SYSTEM_GROUPING; 3696 ia_role_ = ROLE_SYSTEM_GROUPING;
3697 ia2_role_ = IA2_ROLE_SECTION; 3697 ia2_role_ = IA2_ROLE_SECTION;
3698 ia_state_ |= STATE_SYSTEM_READONLY; 3698 ia_state_ |= STATE_SYSTEM_READONLY;
3699 break; 3699 break;
3700 case blink::WebAXRoleTabList: 3700 case ui::AX_ROLE_TAB_LIST:
3701 ia_role_ = ROLE_SYSTEM_PAGETABLIST; 3701 ia_role_ = ROLE_SYSTEM_PAGETABLIST;
3702 break; 3702 break;
3703 case blink::WebAXRoleTabPanel: 3703 case ui::AX_ROLE_TAB_PANEL:
3704 ia_role_ = ROLE_SYSTEM_PROPERTYPAGE; 3704 ia_role_ = ROLE_SYSTEM_PROPERTYPAGE;
3705 break; 3705 break;
3706 case blink::WebAXRoleToggleButton: 3706 case ui::AX_ROLE_TOGGLE_BUTTON:
3707 ia_role_ = ROLE_SYSTEM_PUSHBUTTON; 3707 ia_role_ = ROLE_SYSTEM_PUSHBUTTON;
3708 ia2_role_ = IA2_ROLE_TOGGLE_BUTTON; 3708 ia2_role_ = IA2_ROLE_TOGGLE_BUTTON;
3709 break; 3709 break;
3710 case blink::WebAXRoleTextArea: 3710 case ui::AX_ROLE_TEXT_AREA:
3711 ia_role_ = ROLE_SYSTEM_TEXT; 3711 ia_role_ = ROLE_SYSTEM_TEXT;
3712 ia2_state_ |= IA2_STATE_MULTI_LINE; 3712 ia2_state_ |= IA2_STATE_MULTI_LINE;
3713 ia2_state_ |= IA2_STATE_EDITABLE; 3713 ia2_state_ |= IA2_STATE_EDITABLE;
3714 ia2_state_ |= IA2_STATE_SELECTABLE_TEXT; 3714 ia2_state_ |= IA2_STATE_SELECTABLE_TEXT;
3715 break; 3715 break;
3716 case blink::WebAXRoleTextField: 3716 case ui::AX_ROLE_TEXT_FIELD:
3717 ia_role_ = ROLE_SYSTEM_TEXT; 3717 ia_role_ = ROLE_SYSTEM_TEXT;
3718 ia2_state_ |= IA2_STATE_SINGLE_LINE; 3718 ia2_state_ |= IA2_STATE_SINGLE_LINE;
3719 ia2_state_ |= IA2_STATE_EDITABLE; 3719 ia2_state_ |= IA2_STATE_EDITABLE;
3720 ia2_state_ |= IA2_STATE_SELECTABLE_TEXT; 3720 ia2_state_ |= IA2_STATE_SELECTABLE_TEXT;
3721 break; 3721 break;
3722 case blink::WebAXRoleTimer: 3722 case ui::AX_ROLE_TIMER:
3723 ia_role_ = ROLE_SYSTEM_CLOCK; 3723 ia_role_ = ROLE_SYSTEM_CLOCK;
3724 ia_state_ |= STATE_SYSTEM_READONLY; 3724 ia_state_ |= STATE_SYSTEM_READONLY;
3725 break; 3725 break;
3726 case blink::WebAXRoleToolbar: 3726 case ui::AX_ROLE_TOOLBAR:
3727 ia_role_ = ROLE_SYSTEM_TOOLBAR; 3727 ia_role_ = ROLE_SYSTEM_TOOLBAR;
3728 ia_state_ |= STATE_SYSTEM_READONLY; 3728 ia_state_ |= STATE_SYSTEM_READONLY;
3729 break; 3729 break;
3730 case blink::WebAXRoleUserInterfaceTooltip: 3730 case ui::AX_ROLE_TOOLTIP:
3731 ia_role_ = ROLE_SYSTEM_TOOLTIP; 3731 ia_role_ = ROLE_SYSTEM_TOOLTIP;
3732 ia_state_ |= STATE_SYSTEM_READONLY; 3732 ia_state_ |= STATE_SYSTEM_READONLY;
3733 break; 3733 break;
3734 case blink::WebAXRoleTree: 3734 case ui::AX_ROLE_TREE:
3735 ia_role_ = ROLE_SYSTEM_OUTLINE; 3735 ia_role_ = ROLE_SYSTEM_OUTLINE;
3736 ia_state_ |= STATE_SYSTEM_READONLY; 3736 ia_state_ |= STATE_SYSTEM_READONLY;
3737 break; 3737 break;
3738 case blink::WebAXRoleTreeGrid: 3738 case ui::AX_ROLE_TREE_GRID:
3739 ia_role_ = ROLE_SYSTEM_OUTLINE; 3739 ia_role_ = ROLE_SYSTEM_OUTLINE;
3740 ia_state_ |= STATE_SYSTEM_READONLY; 3740 ia_state_ |= STATE_SYSTEM_READONLY;
3741 break; 3741 break;
3742 case blink::WebAXRoleTreeItem: 3742 case ui::AX_ROLE_TREE_ITEM:
3743 ia_role_ = ROLE_SYSTEM_OUTLINEITEM; 3743 ia_role_ = ROLE_SYSTEM_OUTLINEITEM;
3744 ia_state_ |= STATE_SYSTEM_READONLY; 3744 ia_state_ |= STATE_SYSTEM_READONLY;
3745 break; 3745 break;
3746 case blink::WebAXRoleWindow: 3746 case ui::AX_ROLE_WINDOW:
3747 ia_role_ = ROLE_SYSTEM_WINDOW; 3747 ia_role_ = ROLE_SYSTEM_WINDOW;
3748 break; 3748 break;
3749 3749
3750 // TODO(dmazzoni): figure out the proper MSAA role for all of these. 3750 // TODO(dmazzoni): figure out the proper MSAA role for all of these.
3751 case blink::WebAXRoleBrowser: 3751 case ui::AX_ROLE_BROWSER:
3752 case blink::WebAXRoleDirectory: 3752 case ui::AX_ROLE_DIRECTORY:
3753 case blink::WebAXRoleDrawer: 3753 case ui::AX_ROLE_DRAWER:
3754 case blink::WebAXRoleHelpTag: 3754 case ui::AX_ROLE_HELP_TAG:
3755 case blink::WebAXRoleIgnored: 3755 case ui::AX_ROLE_IGNORED:
3756 case blink::WebAXRoleIncrementor: 3756 case ui::AX_ROLE_INCREMENTOR:
3757 case blink::WebAXRoleLog: 3757 case ui::AX_ROLE_LOG:
3758 case blink::WebAXRoleMarquee: 3758 case ui::AX_ROLE_MARQUEE:
3759 case blink::WebAXRoleMatte: 3759 case ui::AX_ROLE_MATTE:
3760 case blink::WebAXRolePresentational: 3760 case ui::AX_ROLE_PRESENTATIONAL:
3761 case blink::WebAXRoleRulerMarker: 3761 case ui::AX_ROLE_RULER_MARKER:
3762 case blink::WebAXRoleSheet: 3762 case ui::AX_ROLE_SHEET:
3763 case blink::WebAXRoleSliderThumb: 3763 case ui::AX_ROLE_SLIDER_THUMB:
3764 case blink::WebAXRoleSystemWide: 3764 case ui::AX_ROLE_SYSTEM_WIDE:
3765 case blink::WebAXRoleValueIndicator: 3765 case ui::AX_ROLE_VALUE_INDICATOR:
3766 default: 3766 default:
3767 ia_role_ = ROLE_SYSTEM_CLIENT; 3767 ia_role_ = ROLE_SYSTEM_CLIENT;
3768 break; 3768 break;
3769 } 3769 }
3770 3770
3771 // Compute the final value of READONLY for MSAA. 3771 // Compute the final value of READONLY for MSAA.
3772 // 3772 //
3773 // We always set the READONLY state for elements that have the 3773 // We always set the READONLY state for elements that have the
3774 // aria-readonly attribute and for a few roles (in the switch above). 3774 // aria-readonly attribute and for a few roles (in the switch above).
3775 // We clear the READONLY state on focusable controls and on a document. 3775 // We clear the READONLY state on focusable controls and on a document.
3776 // Everything else, the majority of objects, do not have this state set. 3776 // Everything else, the majority of objects, do not have this state set.
3777 if (HasState(blink::WebAXStateFocusable) && 3777 if (HasState(ui::AX_STATE_FOCUSABLE) &&
3778 ia_role_ != ROLE_SYSTEM_DOCUMENT) { 3778 ia_role_ != ROLE_SYSTEM_DOCUMENT) {
3779 ia_state_ &= ~(STATE_SYSTEM_READONLY); 3779 ia_state_ &= ~(STATE_SYSTEM_READONLY);
3780 } 3780 }
3781 if (!HasState(blink::WebAXStateReadonly)) 3781 if (!HasState(ui::AX_STATE_READONLY))
3782 ia_state_ &= ~(STATE_SYSTEM_READONLY); 3782 ia_state_ &= ~(STATE_SYSTEM_READONLY);
3783 if (GetBoolAttribute(AccessibilityNodeData::ATTR_ARIA_READONLY)) 3783 if (GetBoolAttribute(ui::AX_ATTR_ARIA_READONLY))
3784 ia_state_ |= STATE_SYSTEM_READONLY; 3784 ia_state_ |= STATE_SYSTEM_READONLY;
3785 3785
3786 // The role should always be set. 3786 // The role should always be set.
3787 DCHECK(!role_name_.empty() || ia_role_); 3787 DCHECK(!role_name_.empty() || ia_role_);
3788 3788
3789 // If we didn't explicitly set the IAccessible2 role, make it the same 3789 // If we didn't explicitly set the IAccessible2 role, make it the same
3790 // as the MSAA role. 3790 // as the MSAA role.
3791 if (!ia2_role_) 3791 if (!ia2_role_)
3792 ia2_role_ = ia_role_; 3792 ia2_role_ = ia_role_;
3793 } 3793 }
3794 3794
3795 } // namespace content 3795 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698