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

Unified Diff: ui/views/view.cc

Issue 2795843002: Move implementation of accessibility actions to views::View (Closed)
Patch Set: Fix native_view_accessibility_unittest too Created 3 years, 9 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: ui/views/view.cc
diff --git a/ui/views/view.cc b/ui/views/view.cc
index d02ebd4fbc88a5921f5c054c213ac75600d4f316..078b48d0db6987b6392d87f87cb337e6d7ae59bd 100644
--- a/ui/views/view.cc
+++ b/ui/views/view.cc
@@ -23,6 +23,7 @@
#include "base/trace_event/trace_event.h"
#include "build/build_config.h"
#include "third_party/skia/include/core/SkRect.h"
+#include "ui/accessibility/ax_action_data.h"
#include "ui/accessibility/ax_enums.h"
#include "ui/base/cursor/cursor.h"
#include "ui/base/dragdrop/drag_drop_types.h"
@@ -36,6 +37,7 @@
#include "ui/compositor/paint_recorder.h"
#include "ui/compositor/transform_recorder.h"
#include "ui/display/screen.h"
+#include "ui/events/base_event_utils.h"
#include "ui/events/event_target_iterator.h"
#include "ui/gfx/canvas.h"
#include "ui/gfx/geometry/point3_f.h"
@@ -1398,6 +1400,37 @@ bool View::ExceededDragThreshold(const gfx::Vector2d& delta) {
// Accessibility----------------------------------------------------------------
bool View::HandleAccessibleAction(const ui::AXActionData& action_data) {
+ switch (action_data.action) {
+ case ui::AX_ACTION_BLUR:
+ if (HasFocus())
+ GetFocusManager()->ClearFocus();
+ return true;
+ case ui::AX_ACTION_DO_DEFAULT: {
+ gfx::Rect rect = GetLocalBounds();
+ gfx::Point center = rect.CenterPoint();
tapted 2017/04/03 23:28:23 nit: const gfx::Point center = GetLocalBounds().Ce
dmazzoni 2017/04/03 23:55:16 Done.
+ OnMousePressed(ui::MouseEvent(
+ ui::ET_MOUSE_PRESSED, center, center, ui::EventTimeForNow(),
+ ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON));
+ OnMouseReleased(ui::MouseEvent(
+ ui::ET_MOUSE_RELEASED, center, center, ui::EventTimeForNow(),
+ ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON));
+ return true;
+ }
+ case ui::AX_ACTION_FOCUS:
+ if (IsAccessibilityFocusable())
+ RequestFocus();
+ return true;
+ case ui::AX_ACTION_SCROLL_TO_MAKE_VISIBLE:
+ ScrollRectToVisible(GetLocalBounds());
+ return true;
+ case ui::AX_ACTION_SHOW_CONTEXT_MENU:
+ ShowContextMenu(bounds().CenterPoint(), ui::MENU_SOURCE_KEYBOARD);
tapted 2017/04/03 23:28:23 I think ShowContextMenu expects screen coordinates
dmazzoni 2017/04/03 23:55:16 Good catch! That was a bug from before, I guess no
+ return true;
+ default:
+ // Some actions are handled by subclasses of View.
+ break;
+ }
+
return false;
}

Powered by Google App Engine
This is Rietveld 408576698