| Index: chrome/browser/extensions/permissions_updater.cc
|
| diff --git a/chrome/browser/extensions/permissions_updater.cc b/chrome/browser/extensions/permissions_updater.cc
|
| index 385d5e9b95e7f2518a93e6dd8da62308792ad452..f4c2eb7de0834b6b4036aed4a8d1b37ed92c3d6c 100644
|
| --- a/chrome/browser/extensions/permissions_updater.cc
|
| +++ b/chrome/browser/extensions/permissions_updater.cc
|
| @@ -164,11 +164,23 @@ void PermissionsUpdater::GrantActivePermissions(const Extension* extension) {
|
| }
|
|
|
| void PermissionsUpdater::InitializePermissions(const Extension* extension) {
|
| - scoped_refptr<const PermissionSet> active_permissions =
|
| - ExtensionPrefs::Get(browser_context_)
|
| - ->GetActivePermissions(extension->id());
|
| - scoped_refptr<const PermissionSet> bounded_active =
|
| - GetBoundedActivePermissions(extension, active_permissions);
|
| + InitializePermissions(extension, INIT_FLAG_NONE);
|
| +}
|
| +
|
| +void PermissionsUpdater::InitializePermissions(const Extension* extension,
|
| + InitFlag init_flag) {
|
| + scoped_refptr<const PermissionSet> active_permissions(NULL);
|
| + scoped_refptr<const PermissionSet> bounded_active(NULL);
|
| + // If |extension| is a transient dummy extension, we do not want to look for
|
| + // it in preferences.
|
| + if (init_flag & INIT_FLAG_TRANSIENT) {
|
| + bounded_active = active_permissions =
|
| + extension->permissions_data()->active_permissions();
|
| + } else {
|
| + active_permissions = ExtensionPrefs::Get(browser_context_)
|
| + ->GetActivePermissions(extension->id());
|
| + bounded_active = GetBoundedActivePermissions(extension, active_permissions);
|
| + }
|
|
|
| // Withhold permissions only if the switch applies to this extension and the
|
| // extension doesn't have the preference to allow scripting on all urls.
|
| @@ -214,7 +226,11 @@ void PermissionsUpdater::InitializePermissions(const Extension* extension) {
|
| ManifestPermissionSet(),
|
| withheld_explicit_hosts,
|
| withheld_scriptable_hosts);
|
| - SetPermissions(extension, bounded_active, withheld);
|
| +
|
| + if (init_flag & INIT_FLAG_TRANSIENT)
|
| + SetPermissionsWithoutPrefs(extension, bounded_active, withheld);
|
| + else
|
| + SetPermissions(extension, bounded_active, withheld);
|
| }
|
|
|
| void PermissionsUpdater::WithholdImpliedAllHosts(const Extension* extension) {
|
| @@ -290,6 +306,16 @@ void PermissionsUpdater::SetPermissions(
|
| extension->id(), active.get());
|
| }
|
|
|
| +void PermissionsUpdater::SetPermissionsWithoutPrefs(
|
| + const Extension* extension,
|
| + const scoped_refptr<const PermissionSet>& active,
|
| + scoped_refptr<const PermissionSet> withheld) {
|
| + withheld = withheld.get()
|
| + ? withheld
|
| + : extension->permissions_data()->withheld_permissions();
|
| + extension->permissions_data()->SetPermissions(active, withheld);
|
| +}
|
| +
|
| void PermissionsUpdater::DispatchEvent(
|
| const std::string& extension_id,
|
| const char* event_name,
|
|
|