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

Unified Diff: ui/views/accessibility/native_view_accessibility.cc

Issue 2490073002: MacViews/a11y: Allow accessibility clients to focus and unfocus focusable Views. (Closed)
Patch Set: Show the widget before test start. Created 4 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: ui/views/accessibility/native_view_accessibility.cc
diff --git a/ui/views/accessibility/native_view_accessibility.cc b/ui/views/accessibility/native_view_accessibility.cc
index db1c1c472d8c60cf849cae4f8d4980f1622798e0..769442d7f87610640fc6a1aeba17498f650e2e9f 100644
--- a/ui/views/accessibility/native_view_accessibility.cc
+++ b/ui/views/accessibility/native_view_accessibility.cc
@@ -71,7 +71,8 @@ const ui::AXNodeData& NativeViewAccessibility::GetData() {
data_.AddStringAttribute(ui::AX_ATTR_DESCRIPTION,
base::UTF16ToUTF8(description));
- data_.state |= (1 << ui::AX_STATE_FOCUSABLE);
+ if (view_->IsAccessibilityFocusable())
dmazzoni 2016/11/14 23:13:37 This is probably a good change, but just a warning
Patti Lor 2016/11/15 04:13:35 That sounds OK to me - either way it will be an im
+ data_.state |= (1 << ui::AX_STATE_FOCUSABLE);
if (!view_->enabled())
data_.state |= (1 << ui::AX_STATE_DISABLED);
@@ -217,6 +218,17 @@ bool NativeViewAccessibility::CanSetStringValue() {
return !ui::AXNodeData::IsFlagSet(GetData().state, ui::AX_STATE_READ_ONLY);
}
+bool NativeViewAccessibility::SetFocused(bool focused) {
+ if (!ui::AXNodeData::IsFlagSet(GetData().state, ui::AX_STATE_FOCUSABLE))
+ return false;
+
+ if (focused)
+ view_->RequestFocus();
+ else if (view_->HasFocus())
+ view_->GetFocusManager()->ClearFocus();
+ return true;
+}
+
void NativeViewAccessibility::OnWidgetDestroying(Widget* widget) {
if (parent_widget_ == widget) {
parent_widget_->RemoveObserver(this);

Powered by Google App Engine
This is Rietveld 408576698