Move permission warning message handling from PermissionSet to PermissionMessageProvider.
This refactors PermissionSet to be closer to just a set of permissions and moves the understanding of permission message strings to a utility class.
BUG=162530
Review URL: https://codereview.chromium.org/27446002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@229565 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/extensions/api/permissions/permissions_api.cc b/chrome/browser/extensions/api/permissions/permissions_api.cc
index 9fc65368..cf23aa049 100644
--- a/chrome/browser/extensions/api/permissions/permissions_api.cc
+++ b/chrome/browser/extensions/api/permissions/permissions_api.cc
@@ -14,6 +14,7 @@
#include "chrome/common/extensions/extension.h"
#include "chrome/common/extensions/permissions/permissions_data.h"
#include "extensions/common/error_utils.h"
+#include "extensions/common/permissions/permission_message_provider.h"
#include "extensions/common/permissions/permissions_info.h"
#include "extensions/common/url_pattern_set.h"
#include "url/gurl.h"
@@ -205,8 +206,9 @@
// We don't need to show the prompt if there are no new warnings, or if
// we're skipping the confirmation UI. All extension types but INTERNAL
// are allowed to silently increase their permission level.
- bool has_no_warnings = requested_permissions_->GetWarningMessages(
- GetExtension()->GetType()).empty();
+ bool has_no_warnings =
+ PermissionMessageProvider::Get()->GetWarningMessages(
+ requested_permissions_, GetExtension()->GetType()).empty();
if (auto_confirm_for_tests == PROCEED || has_no_warnings ||
extension_->location() == Manifest::COMPONENT) {
InstallUIProceed();
diff --git a/chrome/browser/extensions/crx_installer.cc b/chrome/browser/extensions/crx_installer.cc
index 2526a535..5b45c47 100644
--- a/chrome/browser/extensions/crx_installer.cc
+++ b/chrome/browser/extensions/crx_installer.cc
@@ -48,6 +48,7 @@
#include "content/public/browser/resource_dispatcher_host.h"
#include "content/public/browser/user_metrics.h"
#include "extensions/common/manifest.h"
+#include "extensions/common/permissions/permission_message_provider.h"
#include "extensions/common/user_script.h"
#include "grit/chromium_strings.h"
#include "grit/generated_resources.h"
@@ -300,9 +301,10 @@
if (error.empty()) {
scoped_refptr<const PermissionSet> expected_permissions =
PermissionsData::GetActivePermissions(dummy_extension.get());
- valid = !(expected_permissions->HasLessPrivilegesThan(
- PermissionsData::GetActivePermissions(extension),
- extension->GetType()));
+ valid = !(PermissionMessageProvider::Get()->IsPrivilegeIncrease(
+ expected_permissions,
+ PermissionsData::GetActivePermissions(extension),
+ extension->GetType()));
}
}
}
diff --git a/chrome/browser/extensions/extension_disabled_ui.cc b/chrome/browser/extensions/extension_disabled_ui.cc
index 42767a1b..0192142 100644
--- a/chrome/browser/extensions/extension_disabled_ui.cc
+++ b/chrome/browser/extensions/extension_disabled_ui.cc
@@ -34,6 +34,7 @@
#include "content/public/browser/notification_observer.h"
#include "content/public/browser/notification_registrar.h"
#include "content/public/browser/notification_source.h"
+#include "extensions/common/permissions/permission_message_provider.h"
#include "grit/chromium_strings.h"
#include "grit/generated_resources.h"
#include "grit/theme_resources.h"
@@ -265,8 +266,8 @@
messages.push_back(l10n_util::GetStringUTF16(
IDS_EXTENSION_PROMPT_WILL_NOW_HAVE_ACCESS_TO));
std::vector<string16> permission_warnings =
- extension_->GetActivePermissions()->GetWarningMessages(
- extension_->GetType());
+ extensions::PermissionMessageProvider::Get()->GetWarningMessages(
+ extension_->GetActivePermissions(), extension_->GetType());
for (size_t i = 0; i < permission_warnings.size(); ++i) {
messages.push_back(l10n_util::GetStringFUTF16(
IDS_EXTENSION_PERMISSION_LINE, permission_warnings[i]));
diff --git a/chrome/browser/extensions/extension_install_prompt.cc b/chrome/browser/extensions/extension_install_prompt.cc
index ae201f1..66c7ab9 100644
--- a/chrome/browser/extensions/extension_install_prompt.cc
+++ b/chrome/browser/extensions/extension_install_prompt.cc
@@ -36,6 +36,7 @@
#include "extensions/common/extension_resource.h"
#include "extensions/common/manifest.h"
#include "extensions/common/manifest_constants.h"
+#include "extensions/common/permissions/permission_message_provider.h"
#include "extensions/common/url_pattern.h"
#include "grit/chromium_strings.h"
#include "grit/generated_resources.h"
@@ -801,9 +802,11 @@
Manifest::Type extension_type = extension_ ?
extension_->GetType() : Manifest::TYPE_UNKNOWN;
prompt_.SetPermissions(
- permissions_->GetWarningMessages(extension_type));
+ extensions::PermissionMessageProvider::Get()->
+ GetWarningMessages(permissions_, extension_type));
prompt_.SetPermissionsDetails(
- permissions_->GetWarningMessagesDetails(extension_type));
+ extensions::PermissionMessageProvider::Get()->
+ GetWarningMessagesDetails(permissions_, extension_type));
}
switch (prompt_.type()) {
diff --git a/chrome/browser/extensions/extension_service.cc b/chrome/browser/extensions/extension_service.cc
index 52df5fe..c560220 100644
--- a/chrome/browser/extensions/extension_service.cc
+++ b/chrome/browser/extensions/extension_service.cc
@@ -99,6 +99,7 @@
#include "extensions/common/error_utils.h"
#include "extensions/common/manifest.h"
#include "extensions/common/manifest_constants.h"
+#include "extensions/common/permissions/permission_message_provider.h"
#include "grit/generated_resources.h"
#include "net/base/registry_controlled_domains/registry_controlled_domain.h"
#include "sync/api/sync_change.h"
@@ -2214,8 +2215,11 @@
// 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 = granted_permissions->HasLessPrivilegesThan(
- extension->GetActivePermissions().get(), extension->GetType());
+ is_privilege_increase =
+ extensions::PermissionMessageProvider::Get()->IsPrivilegeIncrease(
+ granted_permissions,
+ extension->GetActivePermissions().get(),
+ extension->GetType());
}
if (is_extension_installed) {