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 "chrome/browser/extensions/api/automation_internal/automation_util.h" | 9 #include "chrome/browser/extensions/api/automation_internal/automation_util.h" |
10 #include "chrome/browser/ui/browser.h" | 10 #include "chrome/browser/ui/browser.h" |
11 #include "chrome/browser/ui/tabs/tab_strip_model.h" | 11 #include "chrome/browser/ui/tabs/tab_strip_model.h" |
12 #include "chrome/common/extensions/api/automation_internal.h" | 12 #include "chrome/common/extensions/api/automation_internal.h" |
13 #include "chrome/common/extensions/manifest_handlers/automation.h" | 13 #include "chrome/common/extensions/manifest_handlers/automation.h" |
14 #include "content/public/browser/ax_event_notification_details.h" | 14 #include "content/public/browser/ax_event_notification_details.h" |
15 #include "content/public/browser/render_frame_host.h" | |
15 #include "content/public/browser/render_process_host.h" | 16 #include "content/public/browser/render_process_host.h" |
16 #include "content/public/browser/render_view_host.h" | |
17 #include "content/public/browser/render_widget_host.h" | 17 #include "content/public/browser/render_widget_host.h" |
18 #include "content/public/browser/render_widget_host_view.h" | 18 #include "content/public/browser/render_widget_host_view.h" |
19 #include "content/public/browser/web_contents.h" | 19 #include "content/public/browser/web_contents.h" |
20 | 20 |
21 #if defined(OS_CHROMEOS) | 21 #if defined(OS_CHROMEOS) |
22 #include "chrome/browser/ui/ash/accessibility/automation_manager_views.h" | 22 #include "chrome/browser/ui/ash/accessibility/automation_manager_views.h" |
23 #endif | 23 #endif |
24 | 24 |
25 namespace extensions { | 25 namespace extensions { |
26 class AutomationWebContentsObserver; | 26 class AutomationWebContentsObserver; |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
68 TabStripModel* tab_strip = current_browser->tab_strip_model(); | 68 TabStripModel* tab_strip = current_browser->tab_strip_model(); |
69 content::WebContents* contents = | 69 content::WebContents* contents = |
70 tab_strip->GetWebContentsAt(tab_strip->active_index()); | 70 tab_strip->GetWebContentsAt(tab_strip->active_index()); |
71 if (!contents) | 71 if (!contents) |
72 return RespondNow(Error("No active tab")); | 72 return RespondNow(Error("No active tab")); |
73 content::RenderWidgetHost* rwh = | 73 content::RenderWidgetHost* rwh = |
74 contents->GetRenderWidgetHostView()->GetRenderWidgetHost(); | 74 contents->GetRenderWidgetHostView()->GetRenderWidgetHost(); |
75 if (!rwh) | 75 if (!rwh) |
76 return RespondNow(Error("Could not enable accessibility for active tab")); | 76 return RespondNow(Error("Could not enable accessibility for active tab")); |
77 AutomationWebContentsObserver::CreateForWebContents(contents); | 77 AutomationWebContentsObserver::CreateForWebContents(contents); |
78 rwh->EnableTreeOnlyAccessibilityMode(); | 78 contents->EnableTreeOnlyAccessibilityMode(); |
79 scoped_ptr<base::ListValue> results = | 79 scoped_ptr<base::ListValue> results = |
80 api::automation_internal::EnableCurrentTab::Results::Create( | 80 api::automation_internal::EnableCurrentTab::Results::Create( |
81 rwh->GetProcess()->GetID(), rwh->GetRoutingID()); | 81 rwh->GetProcess()->GetID(), rwh->GetRoutingID()); |
82 return RespondNow(MultipleArguments(results.release())); | 82 return RespondNow(MultipleArguments(results.release())); |
83 } | 83 } |
84 | 84 |
85 ExtensionFunction::ResponseAction | 85 ExtensionFunction::ResponseAction |
86 AutomationInternalPerformActionFunction::Run() { | 86 AutomationInternalPerformActionFunction::Run() { |
87 using api::automation_internal::PerformAction::Params; | 87 using api::automation_internal::PerformAction::Params; |
88 scoped_ptr<Params> params(Params::Create(*args_)); | 88 scoped_ptr<Params> params(Params::Create(*args_)); |
89 EXTENSION_FUNCTION_VALIDATE(params.get()); | 89 EXTENSION_FUNCTION_VALIDATE(params.get()); |
90 | 90 |
91 content::RenderWidgetHost* rwh = | 91 content::RenderFrameHost* rfh = |
92 content::RenderWidgetHost::FromID(params->args.process_id, | 92 content::RenderFrameHost::FromID(params->args.process_id, |
93 params->args.routing_id); | 93 params->args.routing_id); |
94 if (!rfh) | |
95 return RespondNow(NoArguments()); | |
94 | 96 |
95 switch (params->args.action_type) { | 97 switch (params->args.action_type) { |
96 case api::automation_internal::ACTION_TYPE_DO_DEFAULT: | 98 case api::automation_internal::ACTION_TYPE_DO_DEFAULT: |
97 rwh->AccessibilityDoDefaultAction(params->args.automation_node_id); | 99 rfh->AccessibilityDoDefaultAction(params->args.automation_node_id); |
jam
2014/05/28 18:49:21
can you explain to me how this id is generated? I
dmazzoni
2014/05/28 18:59:33
Every accessibility node in Blink has an accessibi
jam
2014/05/28 21:10:31
I see, thanks for the explanation I understand thi
| |
98 break; | 100 break; |
99 case api::automation_internal::ACTION_TYPE_FOCUS: | 101 case api::automation_internal::ACTION_TYPE_FOCUS: |
100 rwh->AccessibilitySetFocus(params->args.automation_node_id); | 102 rfh->AccessibilitySetFocus(params->args.automation_node_id); |
101 break; | 103 break; |
102 case api::automation_internal::ACTION_TYPE_MAKE_VISIBLE: | 104 case api::automation_internal::ACTION_TYPE_MAKE_VISIBLE: |
103 rwh->AccessibilityScrollToMakeVisible(params->args.automation_node_id, | 105 rfh->AccessibilityScrollToMakeVisible(params->args.automation_node_id, |
104 gfx::Rect()); | 106 gfx::Rect()); |
105 break; | 107 break; |
106 case api::automation_internal::ACTION_TYPE_SET_SELECTION: { | 108 case api::automation_internal::ACTION_TYPE_SET_SELECTION: { |
107 extensions::api::automation_internal::SetSelectionParams selection_params; | 109 extensions::api::automation_internal::SetSelectionParams selection_params; |
108 EXTENSION_FUNCTION_VALIDATE( | 110 EXTENSION_FUNCTION_VALIDATE( |
109 extensions::api::automation_internal::SetSelectionParams::Populate( | 111 extensions::api::automation_internal::SetSelectionParams::Populate( |
110 params->opt_args.additional_properties, &selection_params)); | 112 params->opt_args.additional_properties, &selection_params)); |
111 rwh->AccessibilitySetTextSelection(params->args.automation_node_id, | 113 rfh->AccessibilitySetTextSelection(params->args.automation_node_id, |
112 selection_params.start_index, | 114 selection_params.start_index, |
113 selection_params.end_index); | 115 selection_params.end_index); |
114 break; | 116 break; |
115 } | 117 } |
116 default: | 118 default: |
117 NOTREACHED(); | 119 NOTREACHED(); |
118 } | 120 } |
119 return RespondNow(NoArguments()); | 121 return RespondNow(NoArguments()); |
120 } | 122 } |
121 | 123 |
122 ExtensionFunction::ResponseAction | 124 ExtensionFunction::ResponseAction |
123 AutomationInternalEnableDesktopFunction::Run() { | 125 AutomationInternalEnableDesktopFunction::Run() { |
124 #if defined(OS_CHROMEOS) | 126 #if defined(OS_CHROMEOS) |
125 const AutomationInfo* automation_info = AutomationInfo::Get(GetExtension()); | 127 const AutomationInfo* automation_info = AutomationInfo::Get(GetExtension()); |
126 if (!automation_info || !automation_info->desktop) | 128 if (!automation_info || !automation_info->desktop) |
127 return RespondNow(Error("desktop permission must be requested")); | 129 return RespondNow(Error("desktop permission must be requested")); |
128 | 130 |
129 AutomationManagerViews::GetInstance()->Enable(browser_context()); | 131 AutomationManagerViews::GetInstance()->Enable(browser_context()); |
130 return RespondNow(NoArguments()); | 132 return RespondNow(NoArguments()); |
131 #else | 133 #else |
132 return RespondNow(Error("getDesktop is unsupported by this platform")); | 134 return RespondNow(Error("getDesktop is unsupported by this platform")); |
133 #endif | 135 #endif |
134 } | 136 } |
135 | 137 |
136 } // namespace extensions | 138 } // namespace extensions |
OLD | NEW |