Index: chrome/common/extensions/permissions/chrome_permission_message_provider.cc |
diff --git a/chrome/common/extensions/permissions/chrome_permission_message_provider.cc b/chrome/common/extensions/permissions/chrome_permission_message_provider.cc |
index 3e8c56f21d48f4cff1d1d97d32b818309ccf2bf8..f28180608dcae30229091b3a7527adfb858b1685 100644 |
--- a/chrome/common/extensions/permissions/chrome_permission_message_provider.cc |
+++ b/chrome/common/extensions/permissions/chrome_permission_message_provider.cc |
@@ -80,6 +80,33 @@ ChromePermissionMessageProvider::~ChromePermissionMessageProvider() { |
PermissionMessages ChromePermissionMessageProvider::GetPermissionMessages( |
const PermissionSet* permissions, |
Manifest::Type extension_type) const { |
+ // Some warnings are more generic and/or powerful and superseed other |
+ // warnings. In that case, the first message suppresses the second one. |
+ std::multimap<PermissionMessage::ID, PermissionMessage::ID> kSuppressList; |
+ kSuppressList.insert( |
+ {PermissionMessage::kBluetooth, PermissionMessage::kBluetoothDevices}); |
+ kSuppressList.insert( |
+ {PermissionMessage::kBookmarks, PermissionMessage::kOverrideBookmarksUI}); |
+ // History already allows reading favicons. |
+ kSuppressList.insert( |
+ {PermissionMessage::kBrowsingHistory, PermissionMessage::kFavicon}); |
+ // History already allows tabs access. |
+ kSuppressList.insert( |
+ {PermissionMessage::kBrowsingHistory, PermissionMessage::kTabs}); |
+ // A special hack: If kFileSystemWriteDirectory would be displayed, hide |
+ // kFileSystemDirectory as the write directory message implies it. |
+ // TODO(sammc): Remove this. See http://crbug.com/284849. |
+ kSuppressList.insert({PermissionMessage::kFileSystemWriteDirectory, |
+ PermissionMessage::kFileSystemDirectory}); |
+ // Full access already allows DeclarativeWebRequest. |
+ kSuppressList.insert({PermissionMessage::kHostsAll, |
+ PermissionMessage::kDeclarativeWebRequest}); |
+ // Full access already covers tabs access. |
+ kSuppressList.insert( |
+ {PermissionMessage::kHostsAll, PermissionMessage::kTabs}); |
+ // Tabs already allows reading favicons. |
+ kSuppressList.insert({PermissionMessage::kTabs, PermissionMessage::kFavicon}); |
+ |
PermissionMessages messages; |
if (permissions->HasEffectiveFullAccess()) { |
@@ -99,32 +126,13 @@ PermissionMessages ChromePermissionMessageProvider::GetPermissionMessages( |
messages.insert(messages.end(), manifest_permission_msgs.begin(), |
manifest_permission_msgs.end()); |
- // Some warnings are more generic and/or powerful and superseed other |
- // warnings. In that case, suppress the superseeded warning. |
- SuppressMessage(messages, |
- PermissionMessage::kBookmarks, |
- PermissionMessage::kOverrideBookmarksUI); |
- // Both tabs and history already allow reading favicons. |
- SuppressMessage(messages, |
- PermissionMessage::kTabs, |
- PermissionMessage::kFavicon); |
- SuppressMessage(messages, |
- PermissionMessage::kBrowsingHistory, |
- PermissionMessage::kFavicon); |
- // Warning for history permission already covers warning for tabs permission. |
- SuppressMessage(messages, |
- PermissionMessage::kBrowsingHistory, |
- PermissionMessage::kTabs); |
- // Warning for full access permission already covers warning for tabs |
- // permission. |
- SuppressMessage(messages, |
- PermissionMessage::kHostsAll, |
- PermissionMessage::kTabs); |
- // Warning for full access already covers warning for DeclarativeWebRequest |
- // permission. |
- SuppressMessage(messages, |
- PermissionMessage::kHostsAll, |
- PermissionMessage::kDeclarativeWebRequest); |
+ for (std::multimap<PermissionMessage::ID, |
+ PermissionMessage::ID>::const_iterator it = |
+ kSuppressList.begin(); |
+ it != kSuppressList.end(); |
+ ++it) { |
+ SuppressMessage(messages, it->first, it->second); |
+ } |
return messages; |
} |
@@ -136,10 +144,6 @@ std::vector<base::string16> ChromePermissionMessageProvider::GetWarningMessages( |
PermissionMessages messages = |
GetPermissionMessages(permissions, extension_type); |
- SuppressMessage(messages, |
- PermissionMessage::kBluetooth, |
- PermissionMessage::kBluetoothDevices); |
- |
for (PermissionMessages::const_iterator i = messages.begin(); |
i != messages.end(); ++i) { |
int id = i->id(); |
@@ -316,12 +320,6 @@ ChromePermissionMessageProvider::GetAPIPermissionMessages( |
} |
} |
- // A special hack: If kFileSystemWriteDirectory would be displayed, hide |
- // kFileSystemDirectory as the write directory message implies it. |
- // TODO(sammc): Remove this. See http://crbug.com/284849. |
- SuppressMessage(messages, |
- PermissionMessage::kFileSystemWriteDirectory, |
- PermissionMessage::kFileSystemDirectory); |
// A special hack: The warning message for declarativeWebRequest |
// permissions speaks about blocking parts of pages, which is a |
// subset of what the "<all_urls>" access allows. Therefore we |