| Index: chrome/browser/extensions/permissions_updater.cc
|
| diff --git a/chrome/browser/extensions/permissions_updater.cc b/chrome/browser/extensions/permissions_updater.cc
|
| index 953b25c0e24e34eded32f5c61c2c12d6c183e2a2..f902df455bb09e2961ced758a8e1e79e0b8535e3 100644
|
| --- a/chrome/browser/extensions/permissions_updater.cc
|
| +++ b/chrome/browser/extensions/permissions_updater.cc
|
| @@ -253,16 +253,29 @@ void PermissionsUpdater::WithholdImpliedAllHosts(const Extension* extension) {
|
| &active_explicit,
|
| &withheld_explicit);
|
|
|
| + URLPatternSet delta_explicit;
|
| + URLPatternSet::CreateDifference(
|
| + active->explicit_hosts(), active_explicit, &delta_explicit);
|
| + URLPatternSet delta_scriptable;
|
| + URLPatternSet::CreateDifference(
|
| + active->scriptable_hosts(), active_scriptable, &delta_scriptable);
|
| +
|
| SetPermissions(extension,
|
| new PermissionSet(active->apis(),
|
| active->manifest_permissions(),
|
| active_explicit,
|
| active_scriptable),
|
| - new PermissionSet(withheld->apis(),
|
| - withheld->manifest_permissions(),
|
| - withheld_explicit,
|
| - withheld_scriptable));
|
| - // TODO(rdevlin.cronin) We should notify the observers/renderer.
|
| + new PermissionSet(withheld->apis(),
|
| + withheld->manifest_permissions(),
|
| + withheld_explicit,
|
| + withheld_scriptable));
|
| +
|
| + scoped_refptr<const PermissionSet> delta(new PermissionSet(
|
| + APIPermissionSet(),
|
| + ManifestPermissionSet(),
|
| + delta_explicit,
|
| + delta_scriptable));
|
| + NotifyPermissionsUpdated(REMOVED, extension, delta.get());
|
| }
|
|
|
| void PermissionsUpdater::GrantWithheldImpliedAllHosts(
|
| @@ -284,6 +297,13 @@ void PermissionsUpdater::GrantWithheldImpliedAllHosts(
|
| withheld->scriptable_hosts(),
|
| &scriptable_hosts);
|
|
|
| + URLPatternSet delta_explicit;
|
| + URLPatternSet::CreateDifference(
|
| + explicit_hosts, active->explicit_hosts(), &delta_explicit);
|
| + URLPatternSet delta_scriptable;
|
| + URLPatternSet::CreateDifference(
|
| + scriptable_hosts, active->scriptable_hosts(), &delta_scriptable);
|
| +
|
| // Since we only withhold host permissions (so far), we know that withheld
|
| // permissions will be empty.
|
| SetPermissions(extension,
|
| @@ -292,7 +312,13 @@ void PermissionsUpdater::GrantWithheldImpliedAllHosts(
|
| explicit_hosts,
|
| scriptable_hosts),
|
| new PermissionSet());
|
| - // TODO(rdevlin.cronin) We should notify the observers/renderer.
|
| +
|
| + scoped_refptr<const PermissionSet> delta(new PermissionSet(
|
| + APIPermissionSet(),
|
| + ManifestPermissionSet(),
|
| + delta_explicit,
|
| + delta_scriptable));
|
| + NotifyPermissionsUpdated(ADDED, extension, delta.get());
|
| }
|
|
|
| void PermissionsUpdater::SetPermissions(
|
|
|