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

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

Issue 726843003: Textarea, Input elements do not expose READONLY state in acc layer. Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 1 month 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 c8ee3ab8c123738028d9dd7922b86a0a3a8ded6b..954fa9684d27caab8fb2c8b7343de22088d34b9a 100644
--- a/content/browser/accessibility/browser_accessibility_win.cc
+++ b/content/browser/accessibility/browser_accessibility_win.cc
@@ -3366,11 +3366,9 @@ void BrowserAccessibilityWin::InitRoleAndState() {
if (HasState(ui::AX_STATE_VISITED))
ia_state_ |= STATE_SYSTEM_TRAVERSED;
- // WebKit marks everything as readonly unless it's editable text, so if it's
- // not readonly, mark it as editable now. The final computation of the
- // READONLY state for MSAA is below, after the switch.
- if (!HasState(ui::AX_STATE_READ_ONLY))
- ia2_state_ |= IA2_STATE_EDITABLE;
+ if (HasState(ui::AX_STATE_READ_ONLY)
+ || GetBoolAttribute(ui::AX_ATTR_ARIA_READONLY))
+ ia_state_ = STATE_SYSTEM_READONLY;
base::string16 invalid;
if (GetHtmlAttribute("aria-invalid", &invalid))
@@ -3505,11 +3503,6 @@ void BrowserAccessibilityWin::InitRoleAndState() {
ia_state_ |= STATE_SYSTEM_READONLY;
ia_state_ |= STATE_SYSTEM_FOCUSABLE;
break;
- case ui::AX_ROLE_EDITABLE_TEXT:
- ia_role_ = ROLE_SYSTEM_TEXT;
- ia2_state_ |= IA2_STATE_SINGLE_LINE;
- ia2_state_ |= IA2_STATE_EDITABLE;
- break;
case ui::AX_ROLE_FIGCAPTION:
role_name_ = html_tag;
ia2_role_ = IA2_ROLE_CAPTION;
@@ -3527,7 +3520,6 @@ void BrowserAccessibilityWin::InitRoleAndState() {
break;
case ui::AX_ROLE_GRID:
ia_role_ = ROLE_SYSTEM_TABLE;
- ia_state_ |= STATE_SYSTEM_READONLY;
break;
case ui::AX_ROLE_GROUP: {
base::string16 aria_role = GetString16Attribute(
@@ -3546,10 +3538,6 @@ void BrowserAccessibilityWin::InitRoleAndState() {
}
break;
}
- case ui::AX_ROLE_GROW_AREA:
- ia_role_ = ROLE_SYSTEM_GRIP;
- ia_state_ |= STATE_SYSTEM_READONLY;
- break;
case ui::AX_ROLE_HEADING:
role_name_ = html_tag;
ia2_role_ = IA2_ROLE_HEADING;
@@ -3727,11 +3715,6 @@ void BrowserAccessibilityWin::InitRoleAndState() {
case ui::AX_ROLE_SPIN_BUTTON_PART:
ia_role_ = ROLE_SYSTEM_PUSHBUTTON;
break;
- case ui::AX_ROLE_SPLIT_GROUP:
- ia_role_ = ROLE_SYSTEM_CLIENT;
- ia2_role_ = IA2_ROLE_SPLIT_PANE;
- ia_state_ |= STATE_SYSTEM_READONLY;
- break;
case ui::AX_ROLE_ANNOTATION:
case ui::AX_ROLE_LIST_MARKER:
case ui::AX_ROLE_STATIC_TEXT:
@@ -3778,13 +3761,11 @@ void BrowserAccessibilityWin::InitRoleAndState() {
case ui::AX_ROLE_TEXT_AREA:
ia_role_ = ROLE_SYSTEM_TEXT;
ia2_state_ |= IA2_STATE_MULTI_LINE;
- ia2_state_ |= IA2_STATE_EDITABLE;
ia2_state_ |= IA2_STATE_SELECTABLE_TEXT;
break;
case ui::AX_ROLE_TEXT_FIELD:
ia_role_ = ROLE_SYSTEM_TEXT;
ia2_state_ |= IA2_STATE_SINGLE_LINE;
- ia2_state_ |= IA2_STATE_EDITABLE;
ia2_state_ |= IA2_STATE_SELECTABLE_TEXT;
break;
case ui::AX_ROLE_TIME:
@@ -3835,21 +3816,6 @@ void BrowserAccessibilityWin::InitRoleAndState() {
break;
}
- // Compute the final value of READONLY for MSAA.
- //
- // We always set the READONLY state for elements that have the
- // aria-readonly attribute and for a few roles (in the switch above).
- // We clear the READONLY state on focusable controls and on a document.
- // Everything else, the majority of objects, do not have this state set.
- if (HasState(ui::AX_STATE_FOCUSABLE) &&
- ia_role_ != ROLE_SYSTEM_DOCUMENT) {
- ia_state_ &= ~(STATE_SYSTEM_READONLY);
- }
- if (!HasState(ui::AX_STATE_READ_ONLY))
- ia_state_ &= ~(STATE_SYSTEM_READONLY);
- if (GetBoolAttribute(ui::AX_ATTR_ARIA_READONLY))
- ia_state_ |= STATE_SYSTEM_READONLY;
-
// The role should always be set.
DCHECK(!role_name_.empty() || ia_role_);

Powered by Google App Engine
This is Rietveld 408576698