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

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

Issue 2474363002: MacViews/a11y: Accessibility actions use AXActionData in AXPlatformNodeDelegate. (Closed)
Patch Set: Fix Linux. 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 04a0fa5afb95126235feb7432fb72ff02c50bf93..cb52f180cb813789d38ec575e797d3bff0d84c9f 100644
--- a/ui/views/accessibility/native_view_accessibility.cc
+++ b/ui/views/accessibility/native_view_accessibility.cc
@@ -184,6 +184,49 @@ NativeViewAccessibility::GetTargetForNativeAccessibilityEvent() {
return gfx::kNullAcceleratedWidget;
}
+void NativeViewAccessibility::AccessibilityPerformAction(
+ const ui::AXActionData& data) {
+ switch (data.action) {
+ // Handle accessible actions that apply to all Views here.
+ case ui::AX_ACTION_DO_DEFAULT:
+ DoDefaultAction();
+ break;
+ case ui::AX_ACTION_SET_FOCUS:
+ SetFocused(true);
+ break;
+ case ui::AX_ACTION_BLUR:
+ SetFocused(false);
+ break;
+
+ // Actions that only apply to specific Views should be dealt with by
+ // HandleAccessibleAction().
+ case ui::AX_ACTION_REPLACE_SELECTED_TEXT:
+ // Fallthrough.
tapted 2016/11/18 04:45:40 nit: we don't normally need Fallthrough when the c
Patti Lor 2016/11/21 01:52:35 Done.
+ case ui::AX_ACTION_SET_VALUE:
+ view_->HandleAccessibleAction(data);
tapted 2016/11/18 04:45:40 This returns a bool - I think we should communicat
Patti Lor 2016/11/21 01:52:35 Done.
+ break;
+
+ // Not yet implemented accessibility actions.
+ case ui::AX_ACTION_DECREMENT:
+ case ui::AX_ACTION_HIT_TEST:
+ case ui::AX_ACTION_INCREMENT:
+ case ui::AX_ACTION_SET_ACCESSIBILITY_FOCUS:
+ case ui::AX_ACTION_SET_SELECTION:
+ case ui::AX_ACTION_SHOW_CONTEXT_MENU:
+ NOTIMPLEMENTED();
+ break;
+
+ // Actions that are only used for the web or not used for Views.
+ case ui::AX_ACTION_SCROLL_TO_MAKE_VISIBLE:
+ case ui::AX_ACTION_SCROLL_TO_POINT:
+ case ui::AX_ACTION_SET_SCROLL_OFFSET:
tapted 2016/11/18 04:45:40 Would these apply to views::ScrollView?
Patti Lor 2016/11/21 01:52:35 Yeah, I think so! Moved to the category above.
+ case ui::AX_ACTION_SET_SEQUENTIAL_FOCUS_NAVIGATION_STARTING_POINT:
+ case ui::AX_ACTION_NONE:
+ NOTREACHED();
+ break;
+ }
+}
+
void NativeViewAccessibility::DoDefaultAction() {
gfx::Point center = view_->GetLocalBounds().CenterPoint();
view_->OnMousePressed(ui::MouseEvent(ui::ET_MOUSE_PRESSED,
@@ -200,23 +243,6 @@ void NativeViewAccessibility::DoDefaultAction() {
ui::EF_LEFT_MOUSE_BUTTON));
}
-bool NativeViewAccessibility::SetStringValue(const base::string16& new_value,
- bool clear_first) {
- // Return an error if the view can't set the value.
- if (!CanSetStringValue())
- return false;
-
- ui::AXActionData action_data;
- action_data.value = new_value;
- action_data.action = clear_first ? ui::AX_ACTION_SET_VALUE
- : ui::AX_ACTION_REPLACE_SELECTED_TEXT;
- return view_->HandleAccessibleAction(action_data);
-}
-
-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;

Powered by Google App Engine
This is Rietveld 408576698