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 <vector> | 7 #include <vector> |
8 | 8 |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "chrome/browser/extensions/api/automation_internal/automation_util.h" | 10 #include "chrome/browser/extensions/api/automation_internal/automation_util.h" |
11 #include "chrome/browser/ui/browser.h" | 11 #include "chrome/browser/ui/browser.h" |
12 #include "chrome/browser/ui/tabs/tab_strip_model.h" | 12 #include "chrome/browser/ui/tabs/tab_strip_model.h" |
13 #include "chrome/common/chrome_switches.h" | 13 #include "chrome/common/chrome_switches.h" |
14 #include "chrome/common/extensions/api/automation_internal.h" | 14 #include "chrome/common/extensions/api/automation_internal.h" |
15 #include "content/public/browser/ax_event_notification_details.h" | 15 #include "content/public/browser/ax_event_notification_details.h" |
| 16 #include "content/public/browser/render_frame_host.h" |
16 #include "content/public/browser/render_process_host.h" | 17 #include "content/public/browser/render_process_host.h" |
17 #include "content/public/browser/render_view_host.h" | |
18 #include "content/public/browser/render_widget_host.h" | 18 #include "content/public/browser/render_widget_host.h" |
19 #include "content/public/browser/render_widget_host_view.h" | 19 #include "content/public/browser/render_widget_host_view.h" |
20 #include "content/public/browser/web_contents.h" | 20 #include "content/public/browser/web_contents.h" |
21 | 21 |
22 #if defined(OS_CHROMEOS) | 22 #if defined(OS_CHROMEOS) |
23 #include "chrome/browser/ui/ash/accessibility/automation_manager_views.h" | 23 #include "chrome/browser/ui/ash/accessibility/automation_manager_views.h" |
24 #endif | 24 #endif |
25 | 25 |
26 namespace extensions { | 26 namespace extensions { |
27 class AutomationWebContentsObserver; | 27 class AutomationWebContentsObserver; |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
80 if (!rwh) | 80 if (!rwh) |
81 return false; | 81 return false; |
82 | 82 |
83 results_ = api::automation_internal::EnableCurrentTab::Results::Create( | 83 results_ = api::automation_internal::EnableCurrentTab::Results::Create( |
84 rwh->GetProcess()->GetID(), rwh->GetRoutingID()); | 84 rwh->GetProcess()->GetID(), rwh->GetRoutingID()); |
85 | 85 |
86 SendResponse(true); | 86 SendResponse(true); |
87 | 87 |
88 AutomationWebContentsObserver::CreateForWebContents(contents); | 88 AutomationWebContentsObserver::CreateForWebContents(contents); |
89 | 89 |
90 rwh->EnableTreeOnlyAccessibilityMode(); | 90 contents->EnableTreeOnlyAccessibilityMode(); |
91 | 91 |
92 return true; | 92 return true; |
93 } | 93 } |
94 | 94 |
95 bool AutomationInternalPerformActionFunction::RunAsync() { | 95 bool AutomationInternalPerformActionFunction::RunAsync() { |
96 using api::automation_internal::PerformAction::Params; | 96 using api::automation_internal::PerformAction::Params; |
97 scoped_ptr<Params> params(Params::Create(*args_)); | 97 scoped_ptr<Params> params(Params::Create(*args_)); |
98 EXTENSION_FUNCTION_VALIDATE(params.get()); | 98 EXTENSION_FUNCTION_VALIDATE(params.get()); |
99 | 99 |
100 content::RenderWidgetHost* rwh = | 100 content::RenderFrameHost* rfh = |
101 content::RenderWidgetHost::FromID(params->args.process_id, | 101 content::RenderFrameHost::FromID(params->args.process_id, |
102 params->args.routing_id); | 102 params->args.routing_id); |
| 103 if (!rfh) |
| 104 return false; |
103 | 105 |
104 switch (params->args.action_type) { | 106 switch (params->args.action_type) { |
105 case api::automation_internal::ACTION_TYPE_DO_DEFAULT: | 107 case api::automation_internal::ACTION_TYPE_DO_DEFAULT: |
106 rwh->AccessibilityDoDefaultAction(params->args.automation_node_id); | 108 rfh->AccessibilityDoDefaultAction(params->args.automation_node_id); |
107 break; | 109 break; |
108 case api::automation_internal::ACTION_TYPE_FOCUS: | 110 case api::automation_internal::ACTION_TYPE_FOCUS: |
109 rwh->AccessibilitySetFocus(params->args.automation_node_id); | 111 rfh->AccessibilitySetFocus(params->args.automation_node_id); |
110 break; | 112 break; |
111 case api::automation_internal::ACTION_TYPE_MAKE_VISIBLE: | 113 case api::automation_internal::ACTION_TYPE_MAKE_VISIBLE: |
112 rwh->AccessibilityScrollToMakeVisible(params->args.automation_node_id, | 114 rfh->AccessibilityScrollToMakeVisible(params->args.automation_node_id, |
113 gfx::Rect()); | 115 gfx::Rect()); |
114 break; | 116 break; |
115 case api::automation_internal::ACTION_TYPE_SET_SELECTION: { | 117 case api::automation_internal::ACTION_TYPE_SET_SELECTION: { |
116 extensions::api::automation_internal::SetSelectionParams selection_params; | 118 extensions::api::automation_internal::SetSelectionParams selection_params; |
117 EXTENSION_FUNCTION_VALIDATE( | 119 EXTENSION_FUNCTION_VALIDATE( |
118 extensions::api::automation_internal::SetSelectionParams::Populate( | 120 extensions::api::automation_internal::SetSelectionParams::Populate( |
119 params->opt_args.additional_properties, &selection_params)); | 121 params->opt_args.additional_properties, &selection_params)); |
120 rwh->AccessibilitySetTextSelection(params->args.automation_node_id, | 122 rfh->AccessibilitySetTextSelection(params->args.automation_node_id, |
121 selection_params.start_index, | 123 selection_params.start_index, |
122 selection_params.end_index); | 124 selection_params.end_index); |
123 break; | 125 break; |
124 } | 126 } |
125 default: | 127 default: |
126 NOTREACHED(); | 128 NOTREACHED(); |
127 } | 129 } |
128 return true; | 130 return true; |
129 } | 131 } |
130 | 132 |
131 bool AutomationInternalEnableDesktopFunction::RunAsync() { | 133 bool AutomationInternalEnableDesktopFunction::RunAsync() { |
132 if (!CommandLine::ForCurrentProcess()->HasSwitch( | 134 if (!CommandLine::ForCurrentProcess()->HasSwitch( |
133 switches::kEnableAutomationAPI)) { | 135 switches::kEnableAutomationAPI)) { |
134 return false; | 136 return false; |
135 } | 137 } |
136 | 138 |
137 #if defined(OS_CHROMEOS) | 139 #if defined(OS_CHROMEOS) |
138 AutomationManagerViews::GetInstance()->Enable(browser_context()); | 140 AutomationManagerViews::GetInstance()->Enable(browser_context()); |
139 #else | 141 #else |
140 error_ = "getDesktop is unsupported by this platform"; | 142 error_ = "getDesktop is unsupported by this platform"; |
141 #endif | 143 #endif |
142 | 144 |
143 return true; | 145 return true; |
144 } | 146 } |
145 | 147 |
146 } // namespace extensions | 148 } // namespace extensions |
OLD | NEW |