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 "extensions/browser/extension_function_dispatcher.h" | 5 #include "extensions/browser/extension_function_dispatcher.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/json/json_string_value_serializer.h" | 8 #include "base/json/json_string_value_serializer.h" |
9 #include "base/lazy_instance.h" | 9 #include "base/lazy_instance.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
190 | 190 |
191 base::WeakPtr<ExtensionFunctionDispatcher> dispatcher_; | 191 base::WeakPtr<ExtensionFunctionDispatcher> dispatcher_; |
192 content::RenderViewHost* render_view_host_; | 192 content::RenderViewHost* render_view_host_; |
193 base::WeakPtrFactory<UIThreadResponseCallbackWrapper> weak_ptr_factory_; | 193 base::WeakPtrFactory<UIThreadResponseCallbackWrapper> weak_ptr_factory_; |
194 | 194 |
195 DISALLOW_COPY_AND_ASSIGN(UIThreadResponseCallbackWrapper); | 195 DISALLOW_COPY_AND_ASSIGN(UIThreadResponseCallbackWrapper); |
196 }; | 196 }; |
197 | 197 |
198 WindowController* | 198 WindowController* |
199 ExtensionFunctionDispatcher::Delegate::GetExtensionWindowController() const { | 199 ExtensionFunctionDispatcher::Delegate::GetExtensionWindowController() const { |
200 return NULL; | 200 return nullptr; |
201 } | 201 } |
202 | 202 |
203 content::WebContents* | 203 content::WebContents* |
204 ExtensionFunctionDispatcher::Delegate::GetAssociatedWebContents() const { | 204 ExtensionFunctionDispatcher::Delegate::GetAssociatedWebContents() const { |
205 return NULL; | 205 return nullptr; |
206 } | 206 } |
207 | 207 |
208 content::WebContents* | 208 content::WebContents* |
209 ExtensionFunctionDispatcher::Delegate::GetVisibleWebContents() const { | 209 ExtensionFunctionDispatcher::Delegate::GetVisibleWebContents() const { |
210 return GetAssociatedWebContents(); | 210 return GetAssociatedWebContents(); |
211 } | 211 } |
212 | 212 |
213 void ExtensionFunctionDispatcher::GetAllFunctionNames( | 213 void ExtensionFunctionDispatcher::GetAllFunctionNames( |
214 std::vector<std::string>* names) { | 214 std::vector<std::string>* names) { |
215 ExtensionFunctionRegistry::GetInstance()->GetAllNames(names); | 215 ExtensionFunctionRegistry::GetInstance()->GetAllNames(names); |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
290 } | 290 } |
291 | 291 |
292 ExtensionFunctionDispatcher::~ExtensionFunctionDispatcher() { | 292 ExtensionFunctionDispatcher::~ExtensionFunctionDispatcher() { |
293 } | 293 } |
294 | 294 |
295 void ExtensionFunctionDispatcher::Dispatch( | 295 void ExtensionFunctionDispatcher::Dispatch( |
296 const ExtensionHostMsg_Request_Params& params, | 296 const ExtensionHostMsg_Request_Params& params, |
297 RenderViewHost* render_view_host) { | 297 RenderViewHost* render_view_host) { |
298 UIThreadResponseCallbackWrapperMap::const_iterator | 298 UIThreadResponseCallbackWrapperMap::const_iterator |
299 iter = ui_thread_response_callback_wrappers_.find(render_view_host); | 299 iter = ui_thread_response_callback_wrappers_.find(render_view_host); |
300 UIThreadResponseCallbackWrapper* callback_wrapper = NULL; | 300 UIThreadResponseCallbackWrapper* callback_wrapper = nullptr; |
301 if (iter == ui_thread_response_callback_wrappers_.end()) { | 301 if (iter == ui_thread_response_callback_wrappers_.end()) { |
302 callback_wrapper = new UIThreadResponseCallbackWrapper(AsWeakPtr(), | 302 callback_wrapper = new UIThreadResponseCallbackWrapper(AsWeakPtr(), |
303 render_view_host); | 303 render_view_host); |
304 ui_thread_response_callback_wrappers_[render_view_host] = callback_wrapper; | 304 ui_thread_response_callback_wrappers_[render_view_host] = callback_wrapper; |
305 } else { | 305 } else { |
306 callback_wrapper = iter->second; | 306 callback_wrapper = iter->second; |
307 } | 307 } |
308 | 308 |
309 DispatchWithCallbackInternal( | 309 DispatchWithCallbackInternal( |
310 params, render_view_host, NULL, | 310 params, |
| 311 render_view_host, |
| 312 nullptr, |
311 callback_wrapper->CreateCallback(params.request_id)); | 313 callback_wrapper->CreateCallback(params.request_id)); |
312 } | 314 } |
313 | 315 |
314 void ExtensionFunctionDispatcher::DispatchWithCallbackInternal( | 316 void ExtensionFunctionDispatcher::DispatchWithCallbackInternal( |
315 const ExtensionHostMsg_Request_Params& params, | 317 const ExtensionHostMsg_Request_Params& params, |
316 RenderViewHost* render_view_host, | 318 RenderViewHost* render_view_host, |
317 content::RenderFrameHost* render_frame_host, | 319 content::RenderFrameHost* render_frame_host, |
318 const ExtensionFunction::ResponseCallback& callback) { | 320 const ExtensionFunction::ResponseCallback& callback) { |
319 DCHECK(render_view_host || render_frame_host); | 321 DCHECK(render_view_host || render_frame_host); |
320 // TODO(yzshen): There is some shared logic between this method and | 322 // TODO(yzshen): There is some shared logic between this method and |
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
437 int requesting_process_id, | 439 int requesting_process_id, |
438 const ProcessMap& process_map, | 440 const ProcessMap& process_map, |
439 ExtensionAPI* api, | 441 ExtensionAPI* api, |
440 void* profile_id, | 442 void* profile_id, |
441 const ExtensionFunction::ResponseCallback& callback) { | 443 const ExtensionFunction::ResponseCallback& callback) { |
442 ExtensionFunction* function = | 444 ExtensionFunction* function = |
443 ExtensionFunctionRegistry::GetInstance()->NewFunction(params.name); | 445 ExtensionFunctionRegistry::GetInstance()->NewFunction(params.name); |
444 if (!function) { | 446 if (!function) { |
445 LOG(ERROR) << "Unknown Extension API - " << params.name; | 447 LOG(ERROR) << "Unknown Extension API - " << params.name; |
446 SendAccessDenied(callback); | 448 SendAccessDenied(callback); |
447 return NULL; | 449 return nullptr; |
448 } | 450 } |
449 | 451 |
450 function->SetArgs(¶ms.arguments); | 452 function->SetArgs(¶ms.arguments); |
451 function->set_source_url(params.source_url); | 453 function->set_source_url(params.source_url); |
452 function->set_request_id(params.request_id); | 454 function->set_request_id(params.request_id); |
453 function->set_has_callback(params.has_callback); | 455 function->set_has_callback(params.has_callback); |
454 function->set_user_gesture(params.user_gesture); | 456 function->set_user_gesture(params.user_gesture); |
455 function->set_extension(extension); | 457 function->set_extension(extension); |
456 function->set_profile_id(profile_id); | 458 function->set_profile_id(profile_id); |
457 function->set_response_callback(callback); | 459 function->set_response_callback(callback); |
458 function->set_source_tab_id(params.source_tab_id); | 460 function->set_source_tab_id(params.source_tab_id); |
459 function->set_source_context_type( | 461 function->set_source_context_type( |
460 process_map.GetMostLikelyContextType(extension, requesting_process_id)); | 462 process_map.GetMostLikelyContextType(extension, requesting_process_id)); |
461 | 463 |
462 return function; | 464 return function; |
463 } | 465 } |
464 | 466 |
465 // static | 467 // static |
466 void ExtensionFunctionDispatcher::SendAccessDenied( | 468 void ExtensionFunctionDispatcher::SendAccessDenied( |
467 const ExtensionFunction::ResponseCallback& callback) { | 469 const ExtensionFunction::ResponseCallback& callback) { |
468 base::ListValue empty_list; | 470 base::ListValue empty_list; |
469 callback.Run(ExtensionFunction::FAILED, empty_list, | 471 callback.Run(ExtensionFunction::FAILED, empty_list, |
470 "Access to extension API denied."); | 472 "Access to extension API denied."); |
471 } | 473 } |
472 | 474 |
473 } // namespace extensions | 475 } // namespace extensions |
OLD | NEW |