| 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 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 198 | 198 |
| 199 base::WeakPtr<ExtensionFunctionDispatcher> dispatcher_; | 199 base::WeakPtr<ExtensionFunctionDispatcher> dispatcher_; |
| 200 content::RenderViewHost* render_view_host_; | 200 content::RenderViewHost* render_view_host_; |
| 201 base::WeakPtrFactory<UIThreadResponseCallbackWrapper> weak_ptr_factory_; | 201 base::WeakPtrFactory<UIThreadResponseCallbackWrapper> weak_ptr_factory_; |
| 202 | 202 |
| 203 DISALLOW_COPY_AND_ASSIGN(UIThreadResponseCallbackWrapper); | 203 DISALLOW_COPY_AND_ASSIGN(UIThreadResponseCallbackWrapper); |
| 204 }; | 204 }; |
| 205 | 205 |
| 206 WindowController* | 206 WindowController* |
| 207 ExtensionFunctionDispatcher::Delegate::GetExtensionWindowController() const { | 207 ExtensionFunctionDispatcher::Delegate::GetExtensionWindowController() const { |
| 208 return NULL; | 208 return nullptr; |
| 209 } | 209 } |
| 210 | 210 |
| 211 content::WebContents* | 211 content::WebContents* |
| 212 ExtensionFunctionDispatcher::Delegate::GetAssociatedWebContents() const { | 212 ExtensionFunctionDispatcher::Delegate::GetAssociatedWebContents() const { |
| 213 return NULL; | 213 return nullptr; |
| 214 } | 214 } |
| 215 | 215 |
| 216 content::WebContents* | 216 content::WebContents* |
| 217 ExtensionFunctionDispatcher::Delegate::GetVisibleWebContents() const { | 217 ExtensionFunctionDispatcher::Delegate::GetVisibleWebContents() const { |
| 218 return GetAssociatedWebContents(); | 218 return GetAssociatedWebContents(); |
| 219 } | 219 } |
| 220 | 220 |
| 221 void ExtensionFunctionDispatcher::GetAllFunctionNames( | 221 void ExtensionFunctionDispatcher::GetAllFunctionNames( |
| 222 std::vector<std::string>* names) { | 222 std::vector<std::string>* names) { |
| 223 ExtensionFunctionRegistry::GetInstance()->GetAllNames(names); | 223 ExtensionFunctionRegistry::GetInstance()->GetAllNames(names); |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 294 tracked_objects::ScopedProfile scoped_profile( | 294 tracked_objects::ScopedProfile scoped_profile( |
| 295 FROM_HERE_WITH_EXPLICIT_FUNCTION(function->name()), | 295 FROM_HERE_WITH_EXPLICIT_FUNCTION(function->name()), |
| 296 tracked_objects::ScopedProfile::ENABLED); | 296 tracked_objects::ScopedProfile::ENABLED); |
| 297 function->Run()->Execute(); | 297 function->Run()->Execute(); |
| 298 } else { | 298 } else { |
| 299 function->OnQuotaExceeded(violation_error); | 299 function->OnQuotaExceeded(violation_error); |
| 300 } | 300 } |
| 301 } | 301 } |
| 302 | 302 |
| 303 ExtensionFunctionDispatcher::ExtensionFunctionDispatcher( | 303 ExtensionFunctionDispatcher::ExtensionFunctionDispatcher( |
| 304 content::BrowserContext* browser_context, | 304 content::BrowserContext* browser_context) |
| 305 Delegate* delegate) | 305 : browser_context_(browser_context) { |
| 306 : browser_context_(browser_context), | |
| 307 delegate_(delegate) { | |
| 308 } | 306 } |
| 309 | 307 |
| 310 ExtensionFunctionDispatcher::~ExtensionFunctionDispatcher() { | 308 ExtensionFunctionDispatcher::~ExtensionFunctionDispatcher() { |
| 311 } | 309 } |
| 312 | 310 |
| 313 void ExtensionFunctionDispatcher::Dispatch( | 311 void ExtensionFunctionDispatcher::Dispatch( |
| 314 const ExtensionHostMsg_Request_Params& params, | 312 const ExtensionHostMsg_Request_Params& params, |
| 315 RenderViewHost* render_view_host) { | 313 RenderViewHost* render_view_host) { |
| 316 UIThreadResponseCallbackWrapperMap::const_iterator | 314 UIThreadResponseCallbackWrapperMap::const_iterator |
| 317 iter = ui_thread_response_callback_wrappers_.find(render_view_host); | 315 iter = ui_thread_response_callback_wrappers_.find(render_view_host); |
| (...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 433 } | 431 } |
| 434 | 432 |
| 435 void ExtensionFunctionDispatcher::OnExtensionFunctionCompleted( | 433 void ExtensionFunctionDispatcher::OnExtensionFunctionCompleted( |
| 436 const Extension* extension) { | 434 const Extension* extension) { |
| 437 if (extension) { | 435 if (extension) { |
| 438 ProcessManager::Get(browser_context_) | 436 ProcessManager::Get(browser_context_) |
| 439 ->DecrementLazyKeepaliveCount(extension); | 437 ->DecrementLazyKeepaliveCount(extension); |
| 440 } | 438 } |
| 441 } | 439 } |
| 442 | 440 |
| 441 WindowController* |
| 442 ExtensionFunctionDispatcher::GetExtensionWindowController() const { |
| 443 return delegate_ ? delegate_->GetExtensionWindowController() : nullptr; |
| 444 } |
| 445 |
| 446 content::WebContents* |
| 447 ExtensionFunctionDispatcher::GetAssociatedWebContents() const { |
| 448 return delegate_ ? delegate_->GetAssociatedWebContents() : nullptr; |
| 449 } |
| 450 |
| 451 content::WebContents* |
| 452 ExtensionFunctionDispatcher::GetVisibleWebContents() const { |
| 453 return delegate_ ? delegate_->GetVisibleWebContents() : |
| 454 GetAssociatedWebContents(); |
| 455 } |
| 456 |
| 443 // static | 457 // static |
| 444 bool ExtensionFunctionDispatcher::CheckPermissions( | 458 bool ExtensionFunctionDispatcher::CheckPermissions( |
| 445 ExtensionFunction* function, | 459 ExtensionFunction* function, |
| 446 const ExtensionHostMsg_Request_Params& params, | 460 const ExtensionHostMsg_Request_Params& params, |
| 447 const ExtensionFunction::ResponseCallback& callback) { | 461 const ExtensionFunction::ResponseCallback& callback) { |
| 448 if (!function->HasPermission()) { | 462 if (!function->HasPermission()) { |
| 449 LOG(ERROR) << "Permission denied for " << params.name; | 463 LOG(ERROR) << "Permission denied for " << params.name; |
| 450 SendAccessDenied(callback, function->histogram_value()); | 464 SendAccessDenied(callback, function->histogram_value()); |
| 451 return false; | 465 return false; |
| 452 } | 466 } |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 488 // static | 502 // static |
| 489 void ExtensionFunctionDispatcher::SendAccessDenied( | 503 void ExtensionFunctionDispatcher::SendAccessDenied( |
| 490 const ExtensionFunction::ResponseCallback& callback, | 504 const ExtensionFunction::ResponseCallback& callback, |
| 491 functions::HistogramValue histogram_value) { | 505 functions::HistogramValue histogram_value) { |
| 492 base::ListValue empty_list; | 506 base::ListValue empty_list; |
| 493 callback.Run(ExtensionFunction::FAILED, empty_list, | 507 callback.Run(ExtensionFunction::FAILED, empty_list, |
| 494 "Access to extension API denied.", histogram_value); | 508 "Access to extension API denied.", histogram_value); |
| 495 } | 509 } |
| 496 | 510 |
| 497 } // namespace extensions | 511 } // namespace extensions |
| OLD | NEW |