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

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

Issue 2825803002: Expose internal treegrid role, do some cleanup for table/grid/treegrid handling (Closed)
Patch Set: Expose table properties for <table role=grid> Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/accessibility/browser_accessibility_win.h" 5 #include "content/browser/accessibility/browser_accessibility_win.h"
6 6
7 #include <UIAutomationClient.h> 7 #include <UIAutomationClient.h>
8 #include <UIAutomationCoreApi.h> 8 #include <UIAutomationCoreApi.h>
9 9
10 #include <algorithm> 10 #include <algorithm>
(...skipping 3784 matching lines...) Expand 10 before | Expand all | Expand 10 after
3795 break; 3795 break;
3796 case ui::AX_ARIA_CURRENT_STATE_TIME: 3796 case ui::AX_ARIA_CURRENT_STATE_TIME:
3797 win_attributes_->ia2_attributes.push_back(L"current:time"); 3797 win_attributes_->ia2_attributes.push_back(L"current:time");
3798 break; 3798 break;
3799 } 3799 }
3800 } 3800 }
3801 3801
3802 // Expose table cell index. 3802 // Expose table cell index.
3803 if (IsCellOrTableHeaderRole()) { 3803 if (IsCellOrTableHeaderRole()) {
3804 BrowserAccessibility* table = PlatformGetParent(); 3804 BrowserAccessibility* table = PlatformGetParent();
3805 while (table && table->GetRole() != ui::AX_ROLE_TABLE) 3805 while (table && !table->IsTableOrGridOrTreeGridRole())
3806 table = table->PlatformGetParent(); 3806 table = table->PlatformGetParent();
3807 if (table) { 3807 if (table) {
3808 const std::vector<int32_t>& unique_cell_ids = 3808 const std::vector<int32_t>& unique_cell_ids =
3809 table->GetIntListAttribute(ui::AX_ATTR_UNIQUE_CELL_IDS); 3809 table->GetIntListAttribute(ui::AX_ATTR_UNIQUE_CELL_IDS);
3810 for (size_t i = 0; i < unique_cell_ids.size(); ++i) { 3810 for (size_t i = 0; i < unique_cell_ids.size(); ++i) {
3811 if (unique_cell_ids[i] == GetId()) { 3811 if (unique_cell_ids[i] == GetId()) {
3812 win_attributes_->ia2_attributes.push_back( 3812 win_attributes_->ia2_attributes.push_back(
3813 base::string16(L"table-cell-index:") + base::IntToString16(i)); 3813 base::string16(L"table-cell-index:") + base::IntToString16(i));
3814 } 3814 }
3815 } 3815 }
(...skipping 1714 matching lines...) Expand 10 before | Expand all | Expand 10 after
5530 case ui::AX_ROLE_SVG_ROOT: 5530 case ui::AX_ROLE_SVG_ROOT:
5531 ia_role = ROLE_SYSTEM_GRAPHIC; 5531 ia_role = ROLE_SYSTEM_GRAPHIC;
5532 break; 5532 break;
5533 case ui::AX_ROLE_SWITCH: 5533 case ui::AX_ROLE_SWITCH:
5534 role_name = L"switch"; 5534 role_name = L"switch";
5535 ia2_role = IA2_ROLE_TOGGLE_BUTTON; 5535 ia2_role = IA2_ROLE_TOGGLE_BUTTON;
5536 break; 5536 break;
5537 case ui::AX_ROLE_TAB: 5537 case ui::AX_ROLE_TAB:
5538 ia_role = ROLE_SYSTEM_PAGETAB; 5538 ia_role = ROLE_SYSTEM_PAGETAB;
5539 break; 5539 break;
5540 case ui::AX_ROLE_TABLE: { 5540 case ui::AX_ROLE_TABLE:
5541 base::string16 aria_role = GetString16Attribute( 5541 ia_role = ROLE_SYSTEM_TABLE;
5542 ui::AX_ATTR_ROLE);
5543 if (aria_role == L"treegrid") {
5544 ia_role = ROLE_SYSTEM_OUTLINE;
5545 } else {
5546 ia_role = ROLE_SYSTEM_TABLE;
5547 }
5548 break; 5542 break;
5549 }
5550 case ui::AX_ROLE_TABLE_HEADER_CONTAINER: 5543 case ui::AX_ROLE_TABLE_HEADER_CONTAINER:
5551 ia_role = ROLE_SYSTEM_GROUPING; 5544 ia_role = ROLE_SYSTEM_GROUPING;
5552 ia2_role = IA2_ROLE_SECTION; 5545 ia2_role = IA2_ROLE_SECTION;
5553 ia_state |= STATE_SYSTEM_READONLY; 5546 ia_state |= STATE_SYSTEM_READONLY;
5554 break; 5547 break;
5555 case ui::AX_ROLE_TAB_LIST: 5548 case ui::AX_ROLE_TAB_LIST:
5556 ia_role = ROLE_SYSTEM_PAGETABLIST; 5549 ia_role = ROLE_SYSTEM_PAGETABLIST;
5557 break; 5550 break;
5558 case ui::AX_ROLE_TAB_PANEL: 5551 case ui::AX_ROLE_TAB_PANEL:
5559 ia_role = ROLE_SYSTEM_PROPERTYPAGE; 5552 ia_role = ROLE_SYSTEM_PROPERTYPAGE;
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
5661 BrowserAccessibility* container = item->PlatformGetParent(); 5654 BrowserAccessibility* container = item->PlatformGetParent();
5662 if (container && container->GetRole() == ui::AX_ROLE_GROUP) { 5655 if (container && container->GetRole() == ui::AX_ROLE_GROUP) {
5663 // If parent was a rowgroup, we need to look at the grandparent 5656 // If parent was a rowgroup, we need to look at the grandparent
5664 container = container->PlatformGetParent(); 5657 container = container->PlatformGetParent();
5665 } 5658 }
5666 5659
5667 if (!container) { 5660 if (!container) {
5668 return false; 5661 return false;
5669 } 5662 }
5670 5663
5671 const ui::AXRole role = container->GetRole(); 5664 return container->GetRole() == ui::AX_ROLE_TREE_GRID;
5672 return role == ui::AX_ROLE_TREE_GRID ||
5673 (role == ui::AX_ROLE_TABLE &&
5674 container->GetString16Attribute(ui::AX_ATTR_ROLE) == L"treegrid");
5675 } 5665 }
5676 5666
5677 BrowserAccessibilityWin* ToBrowserAccessibilityWin(BrowserAccessibility* obj) { 5667 BrowserAccessibilityWin* ToBrowserAccessibilityWin(BrowserAccessibility* obj) {
5678 DCHECK(!obj || obj->IsNative()); 5668 DCHECK(!obj || obj->IsNative());
5679 return static_cast<BrowserAccessibilityWin*>(obj); 5669 return static_cast<BrowserAccessibilityWin*>(obj);
5680 } 5670 }
5681 5671
5682 const BrowserAccessibilityWin* 5672 const BrowserAccessibilityWin*
5683 ToBrowserAccessibilityWin(const BrowserAccessibility* obj) { 5673 ToBrowserAccessibilityWin(const BrowserAccessibility* obj) {
5684 DCHECK(!obj || obj->IsNative()); 5674 DCHECK(!obj || obj->IsNative());
5685 return static_cast<const BrowserAccessibilityWin*>(obj); 5675 return static_cast<const BrowserAccessibilityWin*>(obj);
5686 } 5676 }
5687 5677
5688 } // namespace content 5678 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698