| Index: chrome/browser/extensions/extension_function_dispatcher.cc
|
| diff --git a/chrome/browser/extensions/extension_function_dispatcher.cc b/chrome/browser/extensions/extension_function_dispatcher.cc
|
| index 5d03e1fe74a0e7c3a73653574ea7657b3888fe72..e9ddef4a657a4fc2762f4ee0e4913c0eadea1e08 100644
|
| --- a/chrome/browser/extensions/extension_function_dispatcher.cc
|
| +++ b/chrome/browser/extensions/extension_function_dispatcher.cc
|
| @@ -20,6 +20,7 @@
|
| #include "chrome/browser/profile.h"
|
| #include "chrome/browser/renderer_host/render_process_host.h"
|
| #include "chrome/browser/renderer_host/render_view_host.h"
|
| +#include "chrome/common/render_messages.h"
|
| #include "chrome/common/result_codes.h"
|
| #include "chrome/common/url_constants.h"
|
|
|
| @@ -198,7 +199,10 @@ ExtensionFunctionDispatcher::ExtensionFunctionDispatcher(
|
| ALLOW_THIS_IN_INITIALIZER_LIST(peer_(new Peer(this))) {
|
| // TODO(erikkay) should we do something for these errors in Release?
|
| DCHECK(url.SchemeIs(chrome::kExtensionScheme));
|
| - DCHECK(profile()->GetExtensionsService()->GetExtensionByURL(url));
|
| +
|
| + Extension* extension =
|
| + profile()->GetExtensionsService()->GetExtensionByURL(url);
|
| + DCHECK(extension);
|
|
|
| all_instances()->insert(this);
|
|
|
| @@ -206,6 +210,12 @@ ExtensionFunctionDispatcher::ExtensionFunctionDispatcher(
|
| ExtensionProcessManager* epm = profile()->GetExtensionProcessManager();
|
| epm->RegisterExtensionProcess(extension_id(),
|
| render_view_host->process()->pid());
|
| +
|
| + // Update the extension permissions. Doing this each time we create an EFD
|
| + // ensures that new processes are informed of permissions for newly installed
|
| + // extensions.
|
| + render_view_host->Send(new ViewMsg_Extension_SetPermissions(
|
| + extension->id(), extension->api_permissions()));
|
| }
|
|
|
| ExtensionFunctionDispatcher::~ExtensionFunctionDispatcher() {
|
|
|