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

Side by Side Diff: chrome/browser/ui/ash/ash_keyboard_controller_proxy.cc

Issue 1169223002: [Extensions] Clean up the handling of ExtensionHostMsg_Request (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Latest master Created 5 years, 6 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 (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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/ui/ash/ash_keyboard_controller_proxy.h" 5 #include "chrome/browser/ui/ash/ash_keyboard_controller_proxy.h"
6 6
7 #include "ash/display/display_controller.h" 7 #include "ash/display/display_controller.h"
8 #include "ash/shell.h" 8 #include "ash/shell.h"
9 #include "chrome/browser/extensions/chrome_extension_web_contents_observer.h" 9 #include "chrome/browser/extensions/chrome_extension_web_contents_observer.h"
10 #include "chrome/browser/media/media_capture_devices_dispatcher.h" 10 #include "chrome/browser/media/media_capture_devices_dispatcher.h"
11 #include "content/public/browser/host_zoom_map.h" 11 #include "content/public/browser/host_zoom_map.h"
12 #include "content/public/browser/render_process_host.h" 12 #include "content/public/browser/render_process_host.h"
13 #include "content/public/browser/render_view_host.h" 13 #include "content/public/browser/render_view_host.h"
14 #include "content/public/browser/site_instance.h" 14 #include "content/public/browser/site_instance.h"
15 #include "content/public/browser/web_contents.h" 15 #include "content/public/browser/web_contents.h"
16 #include "extensions/browser/event_router.h" 16 #include "extensions/browser/event_router.h"
17 #include "extensions/browser/extension_function_dispatcher.h"
18 #include "extensions/browser/extension_registry.h" 17 #include "extensions/browser/extension_registry.h"
19 #include "extensions/browser/view_type_utils.h" 18 #include "extensions/browser/view_type_utils.h"
20 #include "extensions/common/api/virtual_keyboard_private.h" 19 #include "extensions/common/api/virtual_keyboard_private.h"
21 #include "extensions/common/constants.h" 20 #include "extensions/common/constants.h"
22 #include "extensions/common/extension_messages.h" 21 #include "extensions/common/extension_messages.h"
23 #include "ipc/ipc_message_macros.h" 22 #include "ipc/ipc_message_macros.h"
24 #include "ui/aura/client/aura_constants.h" 23 #include "ui/aura/client/aura_constants.h"
25 #include "ui/aura/window.h" 24 #include "ui/aura/window.h"
26 #include "ui/aura/window_event_dispatcher.h" 25 #include "ui/aura/window_event_dispatcher.h"
27 #include "ui/compositor/scoped_layer_animation_settings.h" 26 #include "ui/compositor/scoped_layer_animation_settings.h"
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
111 110
112 AshKeyboardControllerProxy::AshKeyboardControllerProxy( 111 AshKeyboardControllerProxy::AshKeyboardControllerProxy(
113 content::BrowserContext* context) 112 content::BrowserContext* context)
114 : keyboard::KeyboardControllerProxy(context) { 113 : keyboard::KeyboardControllerProxy(context) {
115 } 114 }
116 115
117 AshKeyboardControllerProxy::~AshKeyboardControllerProxy() { 116 AshKeyboardControllerProxy::~AshKeyboardControllerProxy() {
118 DCHECK(!keyboard_controller_); 117 DCHECK(!keyboard_controller_);
119 } 118 }
120 119
121 void AshKeyboardControllerProxy::OnRequest(
122 const ExtensionHostMsg_Request_Params& params) {
123 extension_function_dispatcher_->Dispatch(
124 params, web_contents()->GetRenderViewHost());
125 }
126
127 ui::InputMethod* AshKeyboardControllerProxy::GetInputMethod() { 120 ui::InputMethod* AshKeyboardControllerProxy::GetInputMethod() {
128 aura::Window* root_window = ash::Shell::GetInstance()->GetPrimaryRootWindow(); 121 aura::Window* root_window = ash::Shell::GetInstance()->GetPrimaryRootWindow();
129 DCHECK(root_window); 122 DCHECK(root_window);
130 return root_window->GetProperty(aura::client::kRootWindowInputMethodKey); 123 return root_window->GetProperty(aura::client::kRootWindowInputMethodKey);
131 } 124 }
132 125
133 void AshKeyboardControllerProxy::RequestAudioInput( 126 void AshKeyboardControllerProxy::RequestAudioInput(
134 content::WebContents* web_contents, 127 content::WebContents* web_contents,
135 const content::MediaStreamRequest& request, 128 const content::MediaStreamRequest& request,
136 const content::MediaResponseCallback& callback) { 129 const content::MediaResponseCallback& callback) {
137 const extensions::Extension* extension = NULL; 130 const extensions::Extension* extension = NULL;
138 GURL origin(request.security_origin); 131 GURL origin(request.security_origin);
139 if (origin.SchemeIs(extensions::kExtensionScheme)) { 132 if (origin.SchemeIs(extensions::kExtensionScheme)) {
140 const extensions::ExtensionRegistry* registry = 133 const extensions::ExtensionRegistry* registry =
141 extensions::ExtensionRegistry::Get(browser_context()); 134 extensions::ExtensionRegistry::Get(browser_context());
142 extension = registry->enabled_extensions().GetByID(origin.host()); 135 extension = registry->enabled_extensions().GetByID(origin.host());
143 DCHECK(extension); 136 DCHECK(extension);
144 } 137 }
145 138
146 MediaCaptureDevicesDispatcher::GetInstance()->ProcessMediaAccessRequest( 139 MediaCaptureDevicesDispatcher::GetInstance()->ProcessMediaAccessRequest(
147 web_contents, request, callback, extension); 140 web_contents, request, callback, extension);
148 } 141 }
149 142
150 void AshKeyboardControllerProxy::SetupWebContents( 143 void AshKeyboardControllerProxy::SetupWebContents(
151 content::WebContents* contents) { 144 content::WebContents* contents) {
152 extension_function_dispatcher_.reset(
153 new extensions::ExtensionFunctionDispatcher(browser_context(), this));
154 extensions::SetViewType(contents, extensions::VIEW_TYPE_VIRTUAL_KEYBOARD); 145 extensions::SetViewType(contents, extensions::VIEW_TYPE_VIRTUAL_KEYBOARD);
155 extensions::ChromeExtensionWebContentsObserver::CreateForWebContents( 146 extensions::ChromeExtensionWebContentsObserver::CreateForWebContents(
156 contents); 147 contents);
157 Observe(contents); 148 Observe(contents);
158 } 149 }
159 150
160 extensions::WindowController*
161 AshKeyboardControllerProxy::GetExtensionWindowController() const {
162 // The keyboard doesn't have a window controller.
163 return NULL;
164 }
165
166 void AshKeyboardControllerProxy::SetController( 151 void AshKeyboardControllerProxy::SetController(
167 keyboard::KeyboardController* controller) { 152 keyboard::KeyboardController* controller) {
168 // During KeyboardController destruction, controller can be set to null. 153 // During KeyboardController destruction, controller can be set to null.
169 if (!controller) { 154 if (!controller) {
170 DCHECK(keyboard_controller_); 155 DCHECK(keyboard_controller_);
171 keyboard_controller_->RemoveObserver(observer_.get()); 156 keyboard_controller_->RemoveObserver(observer_.get());
172 keyboard_controller_ = nullptr; 157 keyboard_controller_ = nullptr;
173 return; 158 return;
174 } 159 }
175 keyboard_controller_ = controller; 160 keyboard_controller_ = controller;
176 observer_.reset(new AshKeyboardControllerObserver(browser_context())); 161 observer_.reset(new AshKeyboardControllerObserver(browser_context()));
177 keyboard_controller_->AddObserver(observer_.get()); 162 keyboard_controller_->AddObserver(observer_.get());
178 } 163 }
179 164
180 content::WebContents*
181 AshKeyboardControllerProxy::GetAssociatedWebContents() const {
182 return web_contents();
183 }
184
185 bool AshKeyboardControllerProxy::OnMessageReceived(
186 const IPC::Message& message) {
187 bool handled = true;
188 IPC_BEGIN_MESSAGE_MAP(AshKeyboardControllerProxy, message)
189 IPC_MESSAGE_HANDLER(ExtensionHostMsg_Request, OnRequest)
190 IPC_MESSAGE_UNHANDLED(handled = false)
191 IPC_END_MESSAGE_MAP()
192 return handled;
193 }
194
195 void AshKeyboardControllerProxy::RenderViewCreated( 165 void AshKeyboardControllerProxy::RenderViewCreated(
196 content::RenderViewHost* render_view_host) { 166 content::RenderViewHost* render_view_host) {
197 content::HostZoomMap* zoom_map = 167 content::HostZoomMap* zoom_map =
198 content::HostZoomMap::GetDefaultForBrowserContext(browser_context()); 168 content::HostZoomMap::GetDefaultForBrowserContext(browser_context());
199 DCHECK(zoom_map); 169 DCHECK(zoom_map);
200 int render_process_id = render_view_host->GetProcess()->GetID(); 170 int render_process_id = render_view_host->GetProcess()->GetID();
201 int render_view_id = render_view_host->GetRoutingID(); 171 int render_view_id = render_view_host->GetRoutingID();
202 zoom_map->SetTemporaryZoomLevel(render_process_id, render_view_id, 0); 172 zoom_map->SetTemporaryZoomLevel(render_process_id, render_view_id, 0);
203 } 173 }
204 174
(...skipping 24 matching lines...) Expand all
229 virtual_keyboard_private::ToString( 199 virtual_keyboard_private::ToString(
230 TextInputTypeToGeneratedInputTypeEnum(type))); 200 TextInputTypeToGeneratedInputTypeEnum(type)));
231 event_args->Append(input_context.release()); 201 event_args->Append(input_context.release());
232 202
233 scoped_ptr<extensions::Event> event(new extensions::Event( 203 scoped_ptr<extensions::Event> event(new extensions::Event(
234 virtual_keyboard_private::OnTextInputBoxFocused::kEventName, 204 virtual_keyboard_private::OnTextInputBoxFocused::kEventName,
235 event_args.Pass())); 205 event_args.Pass()));
236 event->restrict_to_browser_context = browser_context(); 206 event->restrict_to_browser_context = browser_context();
237 router->DispatchEventToExtension(kVirtualKeyboardExtensionID, event.Pass()); 207 router->DispatchEventToExtension(kVirtualKeyboardExtensionID, event.Pass());
238 } 208 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698