Index: chrome/renderer/extensions/dispatcher.cc |
diff --git a/chrome/renderer/extensions/dispatcher.cc b/chrome/renderer/extensions/dispatcher.cc |
index efec6f00ec2d69b78286151e5e256552e423d5b4..97f25ca0ab1d4d56bc34127298f36d57e32e0b30 100644 |
--- a/chrome/renderer/extensions/dispatcher.cc |
+++ b/chrome/renderer/extensions/dispatcher.cc |
@@ -529,7 +529,6 @@ void Dispatcher::WebKitInitialized() { |
iter != active_extension_ids_.end(); ++iter) { |
const Extension* extension = extensions_.GetByID(*iter); |
CHECK(extension); |
- InitOriginPermissions(extension); |
} |
EnableCustomElementWhiteList(); |
@@ -1133,6 +1132,9 @@ void Dispatcher::DidCreateScriptContext( |
new ChromeV8Context(v8_context, frame, extension, context_type); |
v8_context_set_.Add(context); |
+ if (extension) |
+ InitOriginPermissions(extension, context_type); |
+ |
{ |
scoped_ptr<ModuleSystem> module_system(new ModuleSystem(context, |
&source_map_)); |
@@ -1341,17 +1343,18 @@ void Dispatcher::OnActivateExtension(const std::string& extension_id) { |
UpdateActiveExtensions(); |
if (is_webkit_initialized_) { |
- InitOriginPermissions(extension); |
DOMActivityLogger::AttachToWorld(DOMActivityLogger::kMainWorldId, |
extension_id); |
} |
} |
-void Dispatcher::InitOriginPermissions(const Extension* extension) { |
+void Dispatcher::InitOriginPermissions(const Extension* extension, |
+ Feature::Context context_type) { |
// TODO(jstritar): We should try to remove this special case. Also, these |
// whitelist entries need to be updated when the kManagement permission |
// changes. |
- if (extension->HasAPIPermission(APIPermission::kManagement)) { |
+ if (context_type == Feature::BLESSED_EXTENSION_CONTEXT && |
+ extension->HasAPIPermission(APIPermission::kManagement)) { |
WebSecurityPolicy::addOriginAccessWhitelistEntry( |
extension->url(), |
WebString::fromUTF8(content::kChromeUIScheme), |
@@ -1362,7 +1365,7 @@ void Dispatcher::InitOriginPermissions(const Extension* extension) { |
AddOrRemoveOriginPermissions( |
UpdatedExtensionPermissionsInfo::ADDED, |
extension, |
- extension->GetActivePermissions()->explicit_hosts()); |
+ PermissionsData::GetEffectiveHostPermissions(extension)); |
} |
void Dispatcher::AddOrRemoveOriginPermissions( |