| Index: chrome/browser/extensions/permissions_updater.cc
|
| diff --git a/chrome/browser/extensions/permissions_updater.cc b/chrome/browser/extensions/permissions_updater.cc
|
| index 9d4a7b6f9dcabf2084940fc0ab69304650d20910..f25fe9f43391bc1ba82e41b0f9b26b582d950924 100644
|
| --- a/chrome/browser/extensions/permissions_updater.cc
|
| +++ b/chrome/browser/extensions/permissions_updater.cc
|
| @@ -112,14 +112,23 @@ void PermissionsUpdater::InitializeActivePermissions(
|
| PermissionsParser::GetRequiredPermissions(extension),
|
| adjusted_active);
|
|
|
| - SetActivePermissions(extension, adjusted_active);
|
| + extension->permissions_data()->InitializePermissions(adjusted_active,
|
| + extension);
|
| + // We record the active permissions after PermissionsData finishes
|
| + // initializing, so that we properly record any withheld permissions.
|
| + // TODO(rdevlin.cronin) This is badly factored. We should do all the
|
| + // initialization in one place - either here, in PermissionsData, or in some
|
| + // other object.
|
| + ExtensionPrefs::Get(browser_context_)->SetActivePermissions(
|
| + extension->id(), extension->permissions_data()->active_permissions());
|
| }
|
|
|
| void PermissionsUpdater::SetActivePermissions(
|
| const Extension* extension, const PermissionSet* permissions) {
|
| ExtensionPrefs::Get(browser_context_)->SetActivePermissions(
|
| extension->id(), permissions);
|
| - extension->permissions_data()->SetActivePermissions(permissions);
|
| + extension->permissions_data()->SetPermissions(
|
| + permissions, extension->permissions_data()->withheld_permissions());
|
| }
|
|
|
| void PermissionsUpdater::DispatchEvent(
|
| @@ -168,12 +177,11 @@ void PermissionsUpdater::NotifyPermissionsUpdated(
|
| content::Details<UpdatedExtensionPermissionsInfo>(&info));
|
|
|
| ExtensionMsg_UpdatePermissions_Params params;
|
| - params.reason_id = static_cast<int>(reason);
|
| params.extension_id = extension->id();
|
| - params.apis = changed->apis();
|
| - params.manifest_permissions = changed->manifest_permissions();
|
| - params.explicit_hosts = changed->explicit_hosts();
|
| - params.scriptable_hosts = changed->scriptable_hosts();
|
| + params.active_permissions = ExtensionMsg_PermissionSetStruct(
|
| + extension->permissions_data()->active_permissions());
|
| + params.withheld_permissions = ExtensionMsg_PermissionSetStruct(
|
| + extension->permissions_data()->withheld_permissions());
|
|
|
| // Send the new permissions to the renderers.
|
| for (RenderProcessHost::iterator i(RenderProcessHost::AllHostsIterator());
|
|
|