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

Unified Diff: chrome/browser/extensions/extension_function_dispatcher.cc

Issue 164039: Add module-level permissions to extensions. (Closed)
Patch Set: final nits Created 11 years, 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | chrome/browser/extensions/extension_host.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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() {
« no previous file with comments | « no previous file | chrome/browser/extensions/extension_host.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698