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

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

Issue 2120523002: The children of non-editable combo boxes, search boxes and text fields should not be hidden (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed Windows browser test. Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View 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 3439cafbf16cbdb7956af76a1d835071e2a1bb62..777944f29010d41a14b9edb8c3a0a88c96dd637d 100644
--- a/content/browser/accessibility/browser_accessibility_win.cc
+++ b/content/browser/accessibility/browser_accessibility_win.cc
@@ -699,7 +699,6 @@ STDMETHODIMP BrowserAccessibilityWin::role(LONG* role) {
return E_INVALIDARG;
*role = ia2_role();
-
return S_OK;
}
@@ -3326,7 +3325,7 @@ void BrowserAccessibilityWin::ComputeStylesIfNeeded() {
return;
std::map<int, std::vector<base::string16>> attributes_map;
- if (PlatformIsLeaf()) {
+ if (PlatformIsLeaf() || IsSimpleTextControl()) {
attributes_map[0] = ComputeTextAttributes();
std::map<int, std::vector<base::string16>> spelling_attributes =
GetSpellingAttributes();
@@ -3338,11 +3337,15 @@ void BrowserAccessibilityWin::ComputeStylesIfNeeded() {
} else {
std::vector<base::string16>& existing_attributes =
attributes_iterator->second;
+
+ // There might be a spelling attribute already in the list of text
+ // attributes, originating from "aria-invalid".
auto existing_spelling_attribute =
std::find(existing_attributes.begin(), existing_attributes.end(),
L"invalid:false");
if (existing_spelling_attribute != existing_attributes.end())
existing_attributes.erase(existing_spelling_attribute);
+
existing_attributes.insert(existing_attributes.end(),
spelling_attribute.second.begin(),
spelling_attribute.second.end());
@@ -3559,16 +3562,17 @@ void BrowserAccessibilityWin::UpdateStep1ComputeWinAttributes() {
}
void BrowserAccessibilityWin::UpdateStep2ComputeHypertext() {
+ if (IsSimpleTextControl()) {
+ win_attributes_->hypertext = value();
+ return;
+ }
+
if (!PlatformChildCount()) {
- if (IsSimpleTextControl()) {
- win_attributes_->hypertext = value();
- } else if (IsRichTextControl()) {
+ if (IsRichTextControl()) {
// We don't want to expose any associated label in IA2 Hypertext.
return;
- } else {
- win_attributes_->hypertext = name();
}
-
+ win_attributes_->hypertext = name();
return;
}
@@ -3889,13 +3893,6 @@ BrowserAccessibilityWin* BrowserAccessibilityWin::NewReference() {
std::map<int, std::vector<base::string16>>
BrowserAccessibilityWin::GetSpellingAttributes() const {
std::map<int, std::vector<base::string16>> spelling_attributes;
-
- // It doesn't make sense to expose spelling error information on anything
- // other than a leaf object, because non-leaf objects do not expose text
- // directly.
- if (!PlatformIsLeaf())
- return spelling_attributes;
-
if (IsTextOnlyObject()) {
const std::vector<int32_t>& marker_types =
GetIntListAttribute(ui::AX_ATTR_MARKER_TYPES);
@@ -3917,7 +3914,6 @@ BrowserAccessibilityWin::GetSpellingAttributes() const {
spelling_attributes[end_offset] = end_attributes;
}
}
-
if (IsSimpleTextControl()) {
int start_offset = 0;
for (const BrowserAccessibility* static_text =
@@ -3936,7 +3932,6 @@ BrowserAccessibilityWin::GetSpellingAttributes() const {
}
}
}
-
return spelling_attributes;
}

Powered by Google App Engine
This is Rietveld 408576698