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

Unified Diff: content/browser/accessibility/browser_accessibility_win.cc

Issue 2812003004: A treegrid should expose its rows in MSAA/IA2 as outlineitems. (Closed)
Patch Set: Fix test for aria-level 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 side-by-side diff with in-line comments
Download patch
Index: content/browser/accessibility/browser_accessibility_win.cc
diff --git a/content/browser/accessibility/browser_accessibility_win.cc b/content/browser/accessibility/browser_accessibility_win.cc
index 87ae27f257e71819e8db89a87f66b70b16191302..49c17a19ea686892a49d41ee3631f0b21145885f 100644
--- a/content/browser/accessibility/browser_accessibility_win.cc
+++ b/content/browser/accessibility/browser_accessibility_win.cc
@@ -5418,9 +5418,12 @@ void BrowserAccessibilityWin::InitRoleAndState() {
ia_role = ROLE_SYSTEM_PANE;
}
break;
- case ui::AX_ROLE_ROW:
- ia_role = ROLE_SYSTEM_ROW;
+ case ui::AX_ROLE_ROW: {
+ // Role changes depending on whether row is inside a treegrid
+ // https://www.w3.org/TR/core-aam-1.1/#role-map-row
+ ia_role = IsInTreeGrid(this) ? ROLE_SYSTEM_OUTLINEITEM : ROLE_SYSTEM_ROW;
break;
+ }
case ui::AX_ROLE_ROW_HEADER:
ia_role = ROLE_SYSTEM_ROWHEADER;
break;
@@ -5596,6 +5599,23 @@ void BrowserAccessibilityWin::InitRoleAndState() {
win_attributes_->ia2_state = ia2_state;
}
+bool BrowserAccessibilityWin::IsInTreeGrid(const BrowserAccessibility* item) {
+ BrowserAccessibility* container = item->PlatformGetParent();
+ if (container && container->GetRole() == ui::AX_ROLE_GROUP) {
+ // If parent was a rowgroup, we need to look at the grandparent
+ container = container->PlatformGetParent();
+ }
+
+ if (!container) {
+ return false;
+ }
+
+ const ui::AXRole role = container->GetRole();
+ return role == ui::AX_ROLE_TREE_GRID ||
+ (role == ui::AX_ROLE_TABLE &&
dmazzoni 2017/04/12 20:35:12 Can you add a comment explaining why we'd have som
aleventhal 2017/04/17 22:06:42 I was following the code in InitRoleAndState() her
+ container->GetString16Attribute(ui::AX_ATTR_ROLE) == L"treegrid");
dmazzoni 2017/04/12 20:35:12 nit: call GetStringAttribute(ui::AX_ATTR_ROLE) ==
aleventhal 2017/04/17 22:06:42 Assuming we keep this code, should I change it in
+}
+
BrowserAccessibilityWin* ToBrowserAccessibilityWin(BrowserAccessibility* obj) {
DCHECK(!obj || obj->IsNative());
return static_cast<BrowserAccessibilityWin*>(obj);

Powered by Google App Engine
This is Rietveld 408576698