| 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 2a8b163a8a78ed5c5fba49042993e6e64c8ee000..4492e5c0c7256eb2d0a8647213b3316cebe1cdab 100644 | 
| --- a/chrome/common/extensions/permissions/chrome_permission_message_provider.cc | 
| +++ b/chrome/common/extensions/permissions/chrome_permission_message_provider.cc | 
| @@ -81,6 +81,14 @@ ChromePermissionMessageProvider::~ChromePermissionMessageProvider() { | 
| PermissionMessages ChromePermissionMessageProvider::GetPermissionMessages( | 
| const PermissionSet* permissions, | 
| Manifest::Type extension_type) const { | 
| +  PermissionMessages messages; | 
| +  if (permissions->HasEffectiveFullAccess()) { | 
| +    messages.push_back(PermissionMessage( | 
| +        PermissionMessage::kFullAccess, | 
| +        l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_FULL_ACCESS))); | 
| +    return messages; | 
| +  } | 
| + | 
| // 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; | 
| @@ -94,6 +102,9 @@ PermissionMessages ChromePermissionMessageProvider::GetPermissionMessages( | 
| // History already allows tabs access. | 
| kSuppressList.insert( | 
| {PermissionMessage::kBrowsingHistory, PermissionMessage::kTabs}); | 
| +  // History already allows access the list of most frequently visited sites. | 
| +  kSuppressList.insert( | 
| +      {PermissionMessage::kBrowsingHistory, PermissionMessage::kTopSites}); | 
| // 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. | 
| @@ -102,20 +113,17 @@ PermissionMessages ChromePermissionMessageProvider::GetPermissionMessages( | 
| // Full access already allows DeclarativeWebRequest. | 
| kSuppressList.insert({PermissionMessage::kHostsAll, | 
| PermissionMessage::kDeclarativeWebRequest}); | 
| +  // Full access implies reading the list of most frequently visited sites. | 
| +  kSuppressList.insert( | 
| +      {PermissionMessage::kHostsAll, PermissionMessage::kTopSites}); | 
| // 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()) { | 
| -    messages.push_back(PermissionMessage( | 
| -        PermissionMessage::kFullAccess, | 
| -        l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_FULL_ACCESS))); | 
| -    return messages; | 
| -  } | 
| +  // Tabs already allows reading the list of most frequently visited sites. | 
| +  kSuppressList.insert( | 
| +      {PermissionMessage::kTabs, PermissionMessage::kTopSites}); | 
|  | 
| PermissionMsgSet host_msgs = | 
| GetHostPermissionMessages(permissions, extension_type); | 
|  |