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

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: Use CreateParams and MakeUnique. 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..a7e1711508d1823cf515b54bf4aa854aec08ceb3 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_->IsFocusable())
tapted 2016/11/11 00:36:25 would IsAccessibilityFocusable be more appropriate
Patti Lor 2016/11/14 03:51:21 Oh, I hadn't thought about that, thanks for pointi
+ data_.state |= (1 << ui::AX_STATE_FOCUSABLE);
if (!view_->enabled())
data_.state |= (1 << ui::AX_STATE_DISABLED);
@@ -217,6 +218,19 @@ bool NativeViewAccessibility::CanSetStringValue() {
return !ui::AXNodeData::IsFlagSet(GetData().state, ui::AX_STATE_READ_ONLY);
}
+bool NativeViewAccessibility::SetFocused(const bool focused) {
+ if (!ui::AXNodeData::IsFlagSet(GetData().state, ui::AX_STATE_FOCUSABLE))
+ return false;
+
+ if (focused == view_->HasFocus())
+ return true;
+ if (focused)
+ view_->RequestFocus();
+ else
tapted 2016/11/11 00:36:25 optional: I'd maybe make this `else if view->HasFo
Patti Lor 2016/11/14 03:51:21 Done, thanks!
+ 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