Commit a859ef1c authored by meacer's avatar meacer Committed by Commit bot

Add a separate warning message for topSites permission.

The current warning is the generic "Read your browsing history"
warning. The new warning for topSites will be suppressed by
read only and read/write history warnings, and all hosts warning.

BUG=404334

Review URL: https://codereview.chromium.org/482953003

Cr-Commit-Position: refs/heads/master@{#292545}
parent d6f1e09b
...@@ -4316,6 +4316,9 @@ Make sure you do not expose any sensitive information. ...@@ -4316,6 +4316,9 @@ Make sure you do not expose any sensitive information.
<message name="IDS_EXTENSION_PROMPT_WARNING_MANAGEMENT" desc="Permisson string for access to extension management."> <message name="IDS_EXTENSION_PROMPT_WARNING_MANAGEMENT" desc="Permisson string for access to extension management.">
Manage your apps, extensions, and themes Manage your apps, extensions, and themes
</message> </message>
<message name="IDS_EXTENSION_PROMPT_WARNING_TOPSITES" desc="Permission string for access to the list of most frequently visited websites.">
Read a list of your most frequently visited websites
</message>
<message name="IDS_EXTENSION_PROMPT_WARNING_HISTORY_READ" desc="Permission string for access to browsing history."> <message name="IDS_EXTENSION_PROMPT_WARNING_HISTORY_READ" desc="Permission string for access to browsing history.">
Read your browsing history Read your browsing history
</message> </message>
......
...@@ -151,7 +151,7 @@ std::vector<APIPermissionInfo*> ChromeAPIPermissions::GetAllPermissions() ...@@ -151,7 +151,7 @@ std::vector<APIPermissionInfo*> ChromeAPIPermissions::GetAllPermissions()
{APIPermission::kTab, "tabs", APIPermissionInfo::kFlagNone, {APIPermission::kTab, "tabs", APIPermissionInfo::kFlagNone,
IDS_EXTENSION_PROMPT_WARNING_HISTORY_READ, PermissionMessage::kTabs}, IDS_EXTENSION_PROMPT_WARNING_HISTORY_READ, PermissionMessage::kTabs},
{APIPermission::kTopSites, "topSites", APIPermissionInfo::kFlagNone, {APIPermission::kTopSites, "topSites", APIPermissionInfo::kFlagNone,
IDS_EXTENSION_PROMPT_WARNING_HISTORY_READ, PermissionMessage::kTabs}, IDS_EXTENSION_PROMPT_WARNING_TOPSITES, PermissionMessage::kTopSites},
{APIPermission::kTts, "tts", 0, APIPermissionInfo::kFlagCannotBeOptional}, {APIPermission::kTts, "tts", 0, APIPermissionInfo::kFlagCannotBeOptional},
{APIPermission::kTtsEngine, "ttsEngine", {APIPermission::kTtsEngine, "ttsEngine",
APIPermissionInfo::kFlagCannotBeOptional, APIPermissionInfo::kFlagCannotBeOptional,
......
...@@ -81,6 +81,14 @@ ChromePermissionMessageProvider::~ChromePermissionMessageProvider() { ...@@ -81,6 +81,14 @@ ChromePermissionMessageProvider::~ChromePermissionMessageProvider() {
PermissionMessages ChromePermissionMessageProvider::GetPermissionMessages( PermissionMessages ChromePermissionMessageProvider::GetPermissionMessages(
const PermissionSet* permissions, const PermissionSet* permissions,
Manifest::Type extension_type) const { 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 // Some warnings are more generic and/or powerful and superseed other
// warnings. In that case, the first message suppresses the second one. // warnings. In that case, the first message suppresses the second one.
std::multimap<PermissionMessage::ID, PermissionMessage::ID> kSuppressList; std::multimap<PermissionMessage::ID, PermissionMessage::ID> kSuppressList;
...@@ -94,6 +102,9 @@ PermissionMessages ChromePermissionMessageProvider::GetPermissionMessages( ...@@ -94,6 +102,9 @@ PermissionMessages ChromePermissionMessageProvider::GetPermissionMessages(
// History already allows tabs access. // History already allows tabs access.
kSuppressList.insert( kSuppressList.insert(
{PermissionMessage::kBrowsingHistory, PermissionMessage::kTabs}); {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 // A special hack: If kFileSystemWriteDirectory would be displayed, hide
// kFileSystemDirectory as the write directory message implies it. // kFileSystemDirectory as the write directory message implies it.
// TODO(sammc): Remove this. See http://crbug.com/284849. // TODO(sammc): Remove this. See http://crbug.com/284849.
...@@ -102,20 +113,17 @@ PermissionMessages ChromePermissionMessageProvider::GetPermissionMessages( ...@@ -102,20 +113,17 @@ PermissionMessages ChromePermissionMessageProvider::GetPermissionMessages(
// Full access already allows DeclarativeWebRequest. // Full access already allows DeclarativeWebRequest.
kSuppressList.insert({PermissionMessage::kHostsAll, kSuppressList.insert({PermissionMessage::kHostsAll,
PermissionMessage::kDeclarativeWebRequest}); 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. // Full access already covers tabs access.
kSuppressList.insert( kSuppressList.insert(
{PermissionMessage::kHostsAll, PermissionMessage::kTabs}); {PermissionMessage::kHostsAll, PermissionMessage::kTabs});
// Tabs already allows reading favicons. // Tabs already allows reading favicons.
kSuppressList.insert({PermissionMessage::kTabs, PermissionMessage::kFavicon}); kSuppressList.insert({PermissionMessage::kTabs, PermissionMessage::kFavicon});
// Tabs already allows reading the list of most frequently visited sites.
PermissionMessages messages; kSuppressList.insert(
{PermissionMessage::kTabs, PermissionMessage::kTopSites});
if (permissions->HasEffectiveFullAccess()) {
messages.push_back(PermissionMessage(
PermissionMessage::kFullAccess,
l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_FULL_ACCESS)));
return messages;
}
PermissionMsgSet host_msgs = PermissionMsgSet host_msgs =
GetHostPermissionMessages(permissions, extension_type); GetHostPermissionMessages(permissions, extension_type);
......
...@@ -824,6 +824,7 @@ TEST(PermissionsTest, HiddenFileSystemPermissionMessages) { ...@@ -824,6 +824,7 @@ TEST(PermissionsTest, HiddenFileSystemPermissionMessages) {
TEST(PermissionsTest, SuppressedPermissionMessages) { TEST(PermissionsTest, SuppressedPermissionMessages) {
{ {
// Tabs warning suppresses favicon warning.
APIPermissionSet api_permissions; APIPermissionSet api_permissions;
api_permissions.insert(APIPermission::kTab); api_permissions.insert(APIPermission::kTab);
URLPatternSet hosts; URLPatternSet hosts;
...@@ -839,6 +840,7 @@ TEST(PermissionsTest, SuppressedPermissionMessages) { ...@@ -839,6 +840,7 @@ TEST(PermissionsTest, SuppressedPermissionMessages) {
EXPECT_EQ(PermissionMessage::kTabs, messages[0].id()); EXPECT_EQ(PermissionMessage::kTabs, messages[0].id());
} }
{ {
// History warning suppresses favicon warning.
APIPermissionSet api_permissions; APIPermissionSet api_permissions;
api_permissions.insert(APIPermission::kHistory); api_permissions.insert(APIPermission::kHistory);
URLPatternSet hosts; URLPatternSet hosts;
...@@ -854,6 +856,7 @@ TEST(PermissionsTest, SuppressedPermissionMessages) { ...@@ -854,6 +856,7 @@ TEST(PermissionsTest, SuppressedPermissionMessages) {
EXPECT_EQ(PermissionMessage::kBrowsingHistory, messages[0].id()); EXPECT_EQ(PermissionMessage::kBrowsingHistory, messages[0].id());
} }
{ {
// All sites warning suppresses tabs warning.
APIPermissionSet api_permissions; APIPermissionSet api_permissions;
URLPatternSet hosts; URLPatternSet hosts;
hosts.AddPattern(URLPattern(URLPattern::SCHEME_CHROMEUI, "*://*/*")); hosts.AddPattern(URLPattern(URLPattern::SCHEME_CHROMEUI, "*://*/*"));
...@@ -867,6 +870,21 @@ TEST(PermissionsTest, SuppressedPermissionMessages) { ...@@ -867,6 +870,21 @@ TEST(PermissionsTest, SuppressedPermissionMessages) {
EXPECT_EQ(PermissionMessage::kHostsAll, messages[0].id()); EXPECT_EQ(PermissionMessage::kHostsAll, messages[0].id());
} }
{ {
// All sites warning suppresses topSites warning.
APIPermissionSet api_permissions;
URLPatternSet hosts;
hosts.AddPattern(URLPattern(URLPattern::SCHEME_CHROMEUI, "*://*/*"));
api_permissions.insert(APIPermission::kTopSites);
scoped_refptr<PermissionSet> permissions(new PermissionSet(
api_permissions, ManifestPermissionSet(), hosts, URLPatternSet()));
PermissionMessages messages =
PermissionMessageProvider::Get()->GetPermissionMessages(
permissions, Manifest::TYPE_EXTENSION);
EXPECT_EQ(1u, messages.size());
EXPECT_EQ(PermissionMessage::kHostsAll, messages[0].id());
}
{
// All sites warning suppresses declarativeWebRequest warning.
APIPermissionSet api_permissions; APIPermissionSet api_permissions;
URLPatternSet hosts; URLPatternSet hosts;
hosts.AddPattern(URLPattern(URLPattern::SCHEME_CHROMEUI, "*://*/*")); hosts.AddPattern(URLPattern(URLPattern::SCHEME_CHROMEUI, "*://*/*"));
...@@ -880,6 +898,7 @@ TEST(PermissionsTest, SuppressedPermissionMessages) { ...@@ -880,6 +898,7 @@ TEST(PermissionsTest, SuppressedPermissionMessages) {
EXPECT_EQ(PermissionMessage::kHostsAll, messages[0].id()); EXPECT_EQ(PermissionMessage::kHostsAll, messages[0].id());
} }
{ {
// BrowsingHistory warning suppresses all history read/write warnings.
APIPermissionSet api_permissions; APIPermissionSet api_permissions;
api_permissions.insert(APIPermission::kHistory); api_permissions.insert(APIPermission::kHistory);
api_permissions.insert(APIPermission::kTab); api_permissions.insert(APIPermission::kTab);
...@@ -896,6 +915,7 @@ TEST(PermissionsTest, SuppressedPermissionMessages) { ...@@ -896,6 +915,7 @@ TEST(PermissionsTest, SuppressedPermissionMessages) {
EXPECT_EQ(PermissionMessage::kBrowsingHistory, messages[0].id()); EXPECT_EQ(PermissionMessage::kBrowsingHistory, messages[0].id());
} }
{ {
// Tabs warning suppresses all read-only history warnings.
APIPermissionSet api_permissions; APIPermissionSet api_permissions;
api_permissions.insert(APIPermission::kTab); api_permissions.insert(APIPermission::kTab);
api_permissions.insert(APIPermission::kTopSites); api_permissions.insert(APIPermission::kTopSites);
......
...@@ -88,6 +88,7 @@ class PermissionMessage { ...@@ -88,6 +88,7 @@ class PermissionMessage {
kIdentityEmail, kIdentityEmail,
kExperienceSamplingPrivate, kExperienceSamplingPrivate,
kCopresence, kCopresence,
kTopSites,
kEnumBoundary, kEnumBoundary,
}; };
COMPILE_ASSERT(PermissionMessage::kNone > PermissionMessage::kUnknown, COMPILE_ASSERT(PermissionMessage::kNone > PermissionMessage::kUnknown,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment