Start refractoring extension permissions into ExtensionPermissionSet.
BUG=84507
TEST=*Extension*
Review URL: http://codereview.chromium.org/7003098
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@90244 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/extensions/extension_service.cc b/chrome/browser/extensions/extension_service.cc
index b5b7ae9..a8973f6e 100644
--- a/chrome/browser/extensions/extension_service.cc
+++ b/chrome/browser/extensions/extension_service.cc
@@ -747,6 +747,8 @@
installer->set_install_source(pending_extension_info.install_source());
else if (extension)
installer->set_install_source(extension->location());
+ if (pending_extension_info.install_silently())
+ installer->set_allow_silent_install(true);
installer->set_delete_source(true);
installer->set_original_url(download_url);
installer->set_install_cause(extension_misc::INSTALL_CAUSE_UPDATE);
@@ -965,11 +967,8 @@
// We only maintain the granted permissions prefs for INTERNAL extensions.
CHECK_EQ(Extension::INTERNAL, extension->location());
- URLPatternSet effective_hosts = extension->GetEffectiveHostPermissions();
extension_prefs_->AddGrantedPermissions(extension->id(),
- extension->HasFullPermissions(),
- extension->api_permissions(),
- effective_hosts);
+ extension->permission_set());
}
void ExtensionService::GrantPermissionsAndEnableExtension(
@@ -1208,18 +1207,17 @@
base::Histogram* counter = base::LinearHistogram::FactoryGet(
histogram,
1,
- Extension::PermissionMessage::ID_ENUM_BOUNDARY,
- Extension::PermissionMessage::ID_ENUM_BOUNDARY + 1,
+ ExtensionPermissionMessage::kEnumBoundary,
+ ExtensionPermissionMessage::kEnumBoundary + 1,
base::Histogram::kUmaTargetedHistogramFlag);
- std::vector<Extension::PermissionMessage> permissions =
- e->GetPermissionMessages();
+ ExtensionPermissionMessages permissions = e->GetPermissionMessages();
if (permissions.empty()) {
- counter->Add(Extension::PermissionMessage::ID_NONE);
+ counter->Add(ExtensionPermissionMessage::kNone);
} else {
- std::vector<Extension::PermissionMessage>::iterator it;
- for (it = permissions.begin(); it != permissions.end(); ++it)
- counter->Add(it->message_id());
+ for (ExtensionPermissionMessages::iterator it = permissions.begin();
+ it != permissions.end(); ++it)
+ counter->Add(it->id());
}
}
@@ -1938,10 +1936,6 @@
// can upgrade without requiring this user's approval.
const Extension* old = GetExtensionByIdInternal(extension->id(),
true, true, false);
- bool granted_full_access;
- std::set<std::string> granted_apis;
- URLPatternSet granted_extent;
-
bool is_extension_upgrade = old != NULL;
bool is_privilege_increase = false;
@@ -1950,23 +1944,16 @@
if (extension->location() == Extension::INTERNAL) {
// Add all the recognized permissions if the granted permissions list
// hasn't been initialized yet.
- if (!extension_prefs_->GetGrantedPermissions(extension->id(),
- &granted_full_access,
- &granted_apis,
- &granted_extent)) {
- GrantPermissions(extension);
- CHECK(extension_prefs_->GetGrantedPermissions(extension->id(),
- &granted_full_access,
- &granted_apis,
- &granted_extent));
- }
+ scoped_ptr<ExtensionPermissionSet> granted_permissions(
+ extension_prefs_->GetGrantedPermissions(extension->id()));
+ CHECK(granted_permissions.get());
// Here, we check if an extension's privileges have increased in a manner
// that requires the user's approval. This could occur because the browser
// upgraded and recognized additional privileges, or an extension upgrades
// to a version that requires additional privileges.
- is_privilege_increase = Extension::IsPrivilegeIncrease(
- granted_full_access, granted_apis, granted_extent, extension);
+ is_privilege_increase =
+ granted_permissions->HasLessPrivilegesThan(extension->permission_set());
}
if (is_extension_upgrade) {
@@ -2023,7 +2010,6 @@
prompt->ShowPrompt();
return; // continues in SimpleExtensionLoadPrompt::InstallUI*
}
-
OnExtensionInstalled(extension);
}