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

Side by Side Diff: chrome/browser/extensions/api/automation_internal/automation_internal_api.cc

Issue 2410333005: Create AXAction and AXActionData as a way to simplify accessibility actions (Closed)
Patch Set: Fix Android compile Created 4 years, 2 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/extensions/api/automation_internal/automation_internal_ api.h" 5 #include "chrome/browser/extensions/api/automation_internal/automation_internal_ api.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <vector> 9 #include <vector>
10 10
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
155 155
156 // Helper class that implements an action adapter for a |RenderFrameHost|. 156 // Helper class that implements an action adapter for a |RenderFrameHost|.
157 class RenderFrameHostActionAdapter : public AutomationActionAdapter { 157 class RenderFrameHostActionAdapter : public AutomationActionAdapter {
158 public: 158 public:
159 explicit RenderFrameHostActionAdapter(content::RenderFrameHost* rfh) 159 explicit RenderFrameHostActionAdapter(content::RenderFrameHost* rfh)
160 : rfh_(rfh) {} 160 : rfh_(rfh) {}
161 161
162 virtual ~RenderFrameHostActionAdapter() {} 162 virtual ~RenderFrameHostActionAdapter() {}
163 163
164 // AutomationActionAdapter implementation. 164 // AutomationActionAdapter implementation.
165 void DoDefault(int32_t id) override { 165 void PerformAction(ui::AXAction action,
166 rfh_->AccessibilityDoDefaultAction(id); 166 const ui::AXActionData& data) override {
167 } 167 rfh_->AccessibilityPerformAction(action, data);
168
169 void Focus(int32_t id) override { rfh_->AccessibilitySetFocus(id); }
170
171 void MakeVisible(int32_t id) override {
172 rfh_->AccessibilityScrollToMakeVisible(id, gfx::Rect());
173 }
174
175 void SetSelection(int32_t anchor_id,
176 int32_t anchor_offset,
177 int32_t focus_id,
178 int32_t focus_offset) override {
179 rfh_->AccessibilitySetSelection(anchor_id, anchor_offset, focus_id,
180 focus_offset);
181 }
182
183 void ShowContextMenu(int32_t id) override {
184 rfh_->AccessibilityShowContextMenu(id);
185 } 168 }
186 169
187 private: 170 private:
188 content::RenderFrameHost* rfh_; 171 content::RenderFrameHost* rfh_;
189 172
190 DISALLOW_COPY_AND_ASSIGN(RenderFrameHostActionAdapter); 173 DISALLOW_COPY_AND_ASSIGN(RenderFrameHostActionAdapter);
191 }; 174 };
192 175
193 } // namespace 176 } // namespace
194 177
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
359 } 342 }
360 343
361 RenderFrameHostActionAdapter adapter(rfh); 344 RenderFrameHostActionAdapter adapter(rfh);
362 return RouteActionToAdapter(params.get(), &adapter); 345 return RouteActionToAdapter(params.get(), &adapter);
363 } 346 }
364 347
365 ExtensionFunction::ResponseAction 348 ExtensionFunction::ResponseAction
366 AutomationInternalPerformActionFunction::RouteActionToAdapter( 349 AutomationInternalPerformActionFunction::RouteActionToAdapter(
367 api::automation_internal::PerformAction::Params* params, 350 api::automation_internal::PerformAction::Params* params,
368 AutomationActionAdapter* adapter) { 351 AutomationActionAdapter* adapter) {
369 int32_t automation_id = params->args.automation_node_id; 352 ui::AXActionData data;
353 data.target_node_id = params->args.automation_node_id;
370 switch (params->args.action_type) { 354 switch (params->args.action_type) {
371 case api::automation_internal::ACTION_TYPE_DODEFAULT: 355 case api::automation_internal::ACTION_TYPE_DODEFAULT:
372 adapter->DoDefault(automation_id); 356 adapter->PerformAction(ui::AX_ACTION_DO_DEFAULT, data);
373 break; 357 break;
374 case api::automation_internal::ACTION_TYPE_FOCUS: 358 case api::automation_internal::ACTION_TYPE_FOCUS:
375 adapter->Focus(automation_id); 359 adapter->PerformAction(ui::AX_ACTION_SET_FOCUS, data);
376 break; 360 break;
377 case api::automation_internal::ACTION_TYPE_MAKEVISIBLE: 361 case api::automation_internal::ACTION_TYPE_MAKEVISIBLE:
378 adapter->MakeVisible(automation_id); 362 adapter->PerformAction(ui::AX_ACTION_SCROLL_TO_MAKE_VISIBLE, data);
379 break; 363 break;
380 case api::automation_internal::ACTION_TYPE_SETSELECTION: { 364 case api::automation_internal::ACTION_TYPE_SETSELECTION: {
381 api::automation_internal::SetSelectionParams selection_params; 365 api::automation_internal::SetSelectionParams selection_params;
382 EXTENSION_FUNCTION_VALIDATE( 366 EXTENSION_FUNCTION_VALIDATE(
383 api::automation_internal::SetSelectionParams::Populate( 367 api::automation_internal::SetSelectionParams::Populate(
384 params->opt_args.additional_properties, &selection_params)); 368 params->opt_args.additional_properties, &selection_params));
385 adapter->SetSelection(automation_id, selection_params.anchor_offset, 369 data.anchor_node_id = params->args.automation_node_id;
386 selection_params.focus_node_id, 370 data.anchor_offset = selection_params.anchor_offset;
387 selection_params.focus_offset); 371 data.focus_node_id = selection_params.focus_node_id;
372 data.focus_offset = selection_params.focus_offset;
373 adapter->PerformAction(ui::AX_ACTION_SET_SELECTION, data);
388 break; 374 break;
389 } 375 }
390 case api::automation_internal::ACTION_TYPE_SHOWCONTEXTMENU: { 376 case api::automation_internal::ACTION_TYPE_SHOWCONTEXTMENU: {
391 adapter->ShowContextMenu(automation_id); 377 adapter->PerformAction(ui::AX_ACTION_SHOW_CONTEXT_MENU, data);
378 break;
379 }
380 case api::automation_internal::ACTION_TYPE_SETACCESSIBILITYFOCUS: {
381 adapter->PerformAction(ui::AX_ACTION_SET_ACCESSIBILITY_FOCUS, data);
392 break; 382 break;
393 } 383 }
394 default: 384 default:
395 NOTREACHED(); 385 NOTREACHED();
396 } 386 }
397 return RespondNow(NoArguments()); 387 return RespondNow(NoArguments());
398 } 388 }
399 389
400 ExtensionFunction::ResponseAction 390 ExtensionFunction::ResponseAction
401 AutomationInternalEnableDesktopFunction::Run() { 391 AutomationInternalEnableDesktopFunction::Run() {
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
462 if (!error.empty()) { 452 if (!error.empty()) {
463 Respond(Error(error)); 453 Respond(Error(error));
464 return; 454 return;
465 } 455 }
466 456
467 Respond( 457 Respond(
468 OneArgument(base::MakeUnique<base::FundamentalValue>(result_acc_obj_id))); 458 OneArgument(base::MakeUnique<base::FundamentalValue>(result_acc_obj_id)));
469 } 459 }
470 460
471 } // namespace extensions 461 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698