| OLD | NEW |
| 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 19 matching lines...) Expand all Loading... |
| 30 #include "content/public/browser/browser_plugin_guest_manager.h" | 30 #include "content/public/browser/browser_plugin_guest_manager.h" |
| 31 #include "content/public/browser/render_frame_host.h" | 31 #include "content/public/browser/render_frame_host.h" |
| 32 #include "content/public/browser/render_view_host.h" | 32 #include "content/public/browser/render_view_host.h" |
| 33 #include "content/public/browser/render_widget_host.h" | 33 #include "content/public/browser/render_widget_host.h" |
| 34 #include "content/public/browser/render_widget_host_view.h" | 34 #include "content/public/browser/render_widget_host_view.h" |
| 35 #include "content/public/browser/web_contents.h" | 35 #include "content/public/browser/web_contents.h" |
| 36 #include "content/public/browser/web_contents_observer.h" | 36 #include "content/public/browser/web_contents_observer.h" |
| 37 #include "content/public/browser/web_contents_user_data.h" | 37 #include "content/public/browser/web_contents_user_data.h" |
| 38 #include "extensions/common/extension_messages.h" | 38 #include "extensions/common/extension_messages.h" |
| 39 #include "extensions/common/permissions/permissions_data.h" | 39 #include "extensions/common/permissions/permissions_data.h" |
| 40 #include "ui/accessibility/ax_action_data.h" | |
| 41 | 40 |
| 42 #if defined(USE_AURA) | 41 #if defined(USE_AURA) |
| 43 #include "chrome/browser/ui/aura/accessibility/automation_manager_aura.h" | 42 #include "chrome/browser/ui/aura/accessibility/automation_manager_aura.h" |
| 44 #endif | 43 #endif |
| 45 | 44 |
| 46 namespace extensions { | 45 namespace extensions { |
| 47 class AutomationWebContentsObserver; | 46 class AutomationWebContentsObserver; |
| 48 } // namespace extensions | 47 } // namespace extensions |
| 49 | 48 |
| 50 DEFINE_WEB_CONTENTS_USER_DATA_KEY(extensions::AutomationWebContentsObserver); | 49 DEFINE_WEB_CONTENTS_USER_DATA_KEY(extensions::AutomationWebContentsObserver); |
| (...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 156 | 155 |
| 157 // Helper class that implements an action adapter for a |RenderFrameHost|. | 156 // Helper class that implements an action adapter for a |RenderFrameHost|. |
| 158 class RenderFrameHostActionAdapter : public AutomationActionAdapter { | 157 class RenderFrameHostActionAdapter : public AutomationActionAdapter { |
| 159 public: | 158 public: |
| 160 explicit RenderFrameHostActionAdapter(content::RenderFrameHost* rfh) | 159 explicit RenderFrameHostActionAdapter(content::RenderFrameHost* rfh) |
| 161 : rfh_(rfh) {} | 160 : rfh_(rfh) {} |
| 162 | 161 |
| 163 virtual ~RenderFrameHostActionAdapter() {} | 162 virtual ~RenderFrameHostActionAdapter() {} |
| 164 | 163 |
| 165 // AutomationActionAdapter implementation. | 164 // AutomationActionAdapter implementation. |
| 166 void PerformAction(const ui::AXActionData& data) override { | 165 void DoDefault(int32_t id) override { |
| 167 rfh_->AccessibilityPerformAction(data); | 166 rfh_->AccessibilityDoDefaultAction(id); |
| 167 } |
| 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); |
| 168 } | 185 } |
| 169 | 186 |
| 170 private: | 187 private: |
| 171 content::RenderFrameHost* rfh_; | 188 content::RenderFrameHost* rfh_; |
| 172 | 189 |
| 173 DISALLOW_COPY_AND_ASSIGN(RenderFrameHostActionAdapter); | 190 DISALLOW_COPY_AND_ASSIGN(RenderFrameHostActionAdapter); |
| 174 }; | 191 }; |
| 175 | 192 |
| 176 } // namespace | 193 } // namespace |
| 177 | 194 |
| (...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 342 } | 359 } |
| 343 | 360 |
| 344 RenderFrameHostActionAdapter adapter(rfh); | 361 RenderFrameHostActionAdapter adapter(rfh); |
| 345 return RouteActionToAdapter(params.get(), &adapter); | 362 return RouteActionToAdapter(params.get(), &adapter); |
| 346 } | 363 } |
| 347 | 364 |
| 348 ExtensionFunction::ResponseAction | 365 ExtensionFunction::ResponseAction |
| 349 AutomationInternalPerformActionFunction::RouteActionToAdapter( | 366 AutomationInternalPerformActionFunction::RouteActionToAdapter( |
| 350 api::automation_internal::PerformAction::Params* params, | 367 api::automation_internal::PerformAction::Params* params, |
| 351 AutomationActionAdapter* adapter) { | 368 AutomationActionAdapter* adapter) { |
| 352 ui::AXActionData action; | 369 int32_t automation_id = params->args.automation_node_id; |
| 353 action.target_node_id = params->args.automation_node_id; | |
| 354 switch (params->args.action_type) { | 370 switch (params->args.action_type) { |
| 355 case api::automation_internal::ACTION_TYPE_DODEFAULT: | 371 case api::automation_internal::ACTION_TYPE_DODEFAULT: |
| 356 action.action = ui::AX_ACTION_DO_DEFAULT; | 372 adapter->DoDefault(automation_id); |
| 357 adapter->PerformAction(action); | |
| 358 break; | 373 break; |
| 359 case api::automation_internal::ACTION_TYPE_FOCUS: | 374 case api::automation_internal::ACTION_TYPE_FOCUS: |
| 360 action.action = ui::AX_ACTION_SET_FOCUS; | 375 adapter->Focus(automation_id); |
| 361 adapter->PerformAction(action); | |
| 362 break; | 376 break; |
| 363 case api::automation_internal::ACTION_TYPE_MAKEVISIBLE: | 377 case api::automation_internal::ACTION_TYPE_MAKEVISIBLE: |
| 364 action.action = ui::AX_ACTION_SCROLL_TO_MAKE_VISIBLE; | 378 adapter->MakeVisible(automation_id); |
| 365 adapter->PerformAction(action); | |
| 366 break; | 379 break; |
| 367 case api::automation_internal::ACTION_TYPE_SETSELECTION: { | 380 case api::automation_internal::ACTION_TYPE_SETSELECTION: { |
| 368 api::automation_internal::SetSelectionParams selection_params; | 381 api::automation_internal::SetSelectionParams selection_params; |
| 369 EXTENSION_FUNCTION_VALIDATE( | 382 EXTENSION_FUNCTION_VALIDATE( |
| 370 api::automation_internal::SetSelectionParams::Populate( | 383 api::automation_internal::SetSelectionParams::Populate( |
| 371 params->opt_args.additional_properties, &selection_params)); | 384 params->opt_args.additional_properties, &selection_params)); |
| 372 action.anchor_node_id = params->args.automation_node_id; | 385 adapter->SetSelection(automation_id, selection_params.anchor_offset, |
| 373 action.anchor_offset = selection_params.anchor_offset; | 386 selection_params.focus_node_id, |
| 374 action.focus_node_id = selection_params.focus_node_id; | 387 selection_params.focus_offset); |
| 375 action.focus_offset = selection_params.focus_offset; | |
| 376 action.action = ui::AX_ACTION_SET_SELECTION; | |
| 377 adapter->PerformAction(action); | |
| 378 break; | 388 break; |
| 379 } | 389 } |
| 380 case api::automation_internal::ACTION_TYPE_SHOWCONTEXTMENU: { | 390 case api::automation_internal::ACTION_TYPE_SHOWCONTEXTMENU: { |
| 381 action.action = ui::AX_ACTION_SHOW_CONTEXT_MENU; | 391 adapter->ShowContextMenu(automation_id); |
| 382 adapter->PerformAction(action); | |
| 383 break; | |
| 384 } | |
| 385 case api::automation_internal::ACTION_TYPE_SETACCESSIBILITYFOCUS: { | |
| 386 action.action = ui::AX_ACTION_SET_ACCESSIBILITY_FOCUS; | |
| 387 adapter->PerformAction(action); | |
| 388 break; | 392 break; |
| 389 } | 393 } |
| 390 default: | 394 default: |
| 391 NOTREACHED(); | 395 NOTREACHED(); |
| 392 } | 396 } |
| 393 return RespondNow(NoArguments()); | 397 return RespondNow(NoArguments()); |
| 394 } | 398 } |
| 395 | 399 |
| 396 ExtensionFunction::ResponseAction | 400 ExtensionFunction::ResponseAction |
| 397 AutomationInternalEnableDesktopFunction::Run() { | 401 AutomationInternalEnableDesktopFunction::Run() { |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 458 if (!error.empty()) { | 462 if (!error.empty()) { |
| 459 Respond(Error(error)); | 463 Respond(Error(error)); |
| 460 return; | 464 return; |
| 461 } | 465 } |
| 462 | 466 |
| 463 Respond( | 467 Respond( |
| 464 OneArgument(base::MakeUnique<base::FundamentalValue>(result_acc_obj_id))); | 468 OneArgument(base::MakeUnique<base::FundamentalValue>(result_acc_obj_id))); |
| 465 } | 469 } |
| 466 | 470 |
| 467 } // namespace extensions | 471 } // namespace extensions |
| OLD | NEW |