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

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

Issue 273423004: Migrate accessibility from RenderView to RenderFrame. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix win & android compile Created 6 years, 7 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 | Annotate | Revision Log
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 <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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698