Index: extensions/renderer/dispatcher.cc |
diff --git a/extensions/renderer/dispatcher.cc b/extensions/renderer/dispatcher.cc |
index 86aa53373ec9371b21aa27215aaa6fef99b7ab39..429056c9a998cde4a8b943890f35ff2811ad782d 100644 |
--- a/extensions/renderer/dispatcher.cc |
+++ b/extensions/renderer/dispatcher.cc |
@@ -908,6 +908,8 @@ bool Dispatcher::OnControlMessageReceived(const IPC::Message& message) { |
IPC_MESSAGE_HANDLER(ExtensionMsg_TransferBlobs, OnTransferBlobs) |
IPC_MESSAGE_HANDLER(ExtensionMsg_Unloaded, OnUnloaded) |
IPC_MESSAGE_HANDLER(ExtensionMsg_UpdatePermissions, OnUpdatePermissions) |
+ IPC_MESSAGE_HANDLER(ExtensionMsg_UpdateDefaultPolicyHostRestrictions, |
+ OnUpdateDefaultPolicyHostRestrictions) |
IPC_MESSAGE_HANDLER(ExtensionMsg_UpdateTabSpecificPermissions, |
OnUpdateTabSpecificPermissions) |
IPC_MESSAGE_HANDLER(ExtensionMsg_ClearTabSpecificPermissions, |
@@ -1031,7 +1033,6 @@ void Dispatcher::OnLoaded( |
extension_load_errors_[param.id] = error; |
continue; |
} |
- |
RendererExtensionRegistry* extension_registry = |
RendererExtensionRegistry::Get(); |
// TODO(kalman): This test is deliberately not a CHECK (though I wish it |
@@ -1048,12 +1049,18 @@ void Dispatcher::OnLoaded( |
// consider making this a release CHECK. |
NOTREACHED(); |
} |
+ if (param.uses_default_policy_blocked_allowed_hosts) { |
+ extension->permissions_data()->SetUsesDefaultHostRestrictions(); |
+ } else { |
+ extension->permissions_data()->SetPolicyHostRestrictions( |
+ param.policy_blocked_hosts, param.policy_allowed_hosts); |
+ } |
} |
// Update the available bindings for all contexts. These may have changed if |
// an externally_connectable extension was loaded that can connect to an |
// open webpage. |
- UpdateBindings(""); |
+ UpdateBindings(std::string()); |
} |
void Dispatcher::OnMessageInvoke(const std::string& extension_id, |
@@ -1180,6 +1187,13 @@ void Dispatcher::OnUnloaded(const std::string& id) { |
// extension's URL just won't match anything anymore. |
} |
+void Dispatcher::OnUpdateDefaultPolicyHostRestrictions( |
+ const ExtensionMsg_UpdateDefaultPolicyHostRestrictions_Params& params) { |
+ PermissionsData::SetDefaultPolicyHostRestrictions( |
+ params.default_policy_blocked_hosts, params.default_policy_allowed_hosts); |
+ UpdateBindings(std::string()); |
+} |
+ |
void Dispatcher::OnUpdatePermissions( |
const ExtensionMsg_UpdatePermissions_Params& params) { |
const Extension* extension = |
@@ -1199,6 +1213,12 @@ void Dispatcher::OnUpdatePermissions( |
extension->permissions_data()->SetPermissions(std::move(active), |
std::move(withheld)); |
+ if (params.uses_default_policy_host_restrictions) { |
+ extension->permissions_data()->SetUsesDefaultHostRestrictions(); |
+ } else { |
+ extension->permissions_data()->SetPolicyHostRestrictions( |
+ params.policy_blocked_hosts, params.policy_allowed_hosts); |
+ } |
UpdateBindings(extension->id()); |
} |