Chromium Code Reviews| Index: chrome/common/extensions/permissions/chrome_permission_message_rules.cc |
| diff --git a/chrome/common/extensions/permissions/chrome_permission_message_rules.cc b/chrome/common/extensions/permissions/chrome_permission_message_rules.cc |
| index 61a0e56a78b49730455cef02ffb92cc98ff57669..4a53148ac29bfe1ad03450d2626dd40d57d6cd67 100644 |
| --- a/chrome/common/extensions/permissions/chrome_permission_message_rules.cc |
| +++ b/chrome/common/extensions/permissions/chrome_permission_message_rules.cc |
| @@ -251,67 +251,21 @@ class USBDevicesFormatter : public ChromePermissionMessageFormatter { |
| // Convenience constructors to allow inline initialization of the permission |
| // ID sets. |
| +// TODO(treib): Once we're allowed to use uniform initialization (and |
| +// std::initializer_list), get rid of this helper. |
| class ChromePermissionMessageRule::PermissionIDSetInitializer |
| : public std::set<APIPermission::ID> { |
| public: |
| - PermissionIDSetInitializer() {} |
| - |
| - // Don't make the constructor explicit to make the usage convenient. |
| - PermissionIDSetInitializer(APIPermission::ID a) { // NOLINT(runtime/explicit) |
| - insert(a); |
| - } |
| - |
| - PermissionIDSetInitializer(APIPermission::ID a, APIPermission::ID b) |
| - : PermissionIDSetInitializer(a) { |
| - insert(b); |
| - } |
| - |
| - PermissionIDSetInitializer(APIPermission::ID a, |
| - APIPermission::ID b, |
| - APIPermission::ID c) |
| - : PermissionIDSetInitializer(a, b) { |
| - insert(c); |
| - } |
| - |
| - PermissionIDSetInitializer(APIPermission::ID a, |
| - APIPermission::ID b, |
| - APIPermission::ID c, |
| - APIPermission::ID d) |
| - : PermissionIDSetInitializer(a, b, c) { |
| - insert(d); |
| - } |
| - |
| - PermissionIDSetInitializer(APIPermission::ID a, |
| - APIPermission::ID b, |
| - APIPermission::ID c, |
| - APIPermission::ID d, |
| - APIPermission::ID e) |
| - : PermissionIDSetInitializer(a, b, c, d) { |
| - insert(e); |
| - } |
| - |
| - PermissionIDSetInitializer(APIPermission::ID a, |
| - APIPermission::ID b, |
| - APIPermission::ID c, |
| - APIPermission::ID d, |
| - APIPermission::ID e, |
| - APIPermission::ID f) |
| - : PermissionIDSetInitializer(a, b, c, d, e) { |
| - insert(f); |
| - } |
| - |
| - PermissionIDSetInitializer(APIPermission::ID a, |
| - APIPermission::ID b, |
| - APIPermission::ID c, |
| - APIPermission::ID d, |
| - APIPermission::ID e, |
| - APIPermission::ID f, |
| - APIPermission::ID g) |
| - : PermissionIDSetInitializer(a, b, c, d, e, f) { |
| - insert(g); |
| + template <typename... IDs> |
| + PermissionIDSetInitializer(IDs... ids) { |
| + ExpandHelper(insert(ids)...); |
| } |
| virtual ~PermissionIDSetInitializer() {} |
| + |
| + private: |
| + template <typename... Args> |
| + void ExpandHelper(Args&&...) {} |
|
Marc Treib
2015/09/02 10:43:55
This is the one slightly yucky part - we need this
|
| }; |
| ChromePermissionMessageRule::ChromePermissionMessageRule( |
| @@ -389,16 +343,17 @@ ChromePermissionMessageRule::GetAllRules() { |
| {IDS_EXTENSION_PROMPT_WARNING_DEBUGGER, {APIPermission::kDebugger}, {}}, |
| {IDS_EXTENSION_PROMPT_WARNING_FULL_ACCESS, |
| {APIPermission::kPlugin}, |
| - // TODO(treib): Add the other IDs implied by kFullAccess/kHostsAll. |
| - {APIPermission::kFullAccess, APIPermission::kHostsAll, |
| - APIPermission::kHostsAllReadOnly, APIPermission::kDeclarativeWebRequest, |
| - APIPermission::kTopSites, APIPermission::kTab}}, |
| + {APIPermission::kDeclarativeWebRequest, APIPermission::kFavicon, |
| + APIPermission::kFullAccess, APIPermission::kHostsAll, |
| + APIPermission::kHostsAllReadOnly, APIPermission::kProcesses, |
| + APIPermission::kTab, APIPermission::kTopSites, |
| + APIPermission::kWebNavigation}}, |
| {IDS_EXTENSION_PROMPT_WARNING_FULL_ACCESS, |
| {APIPermission::kFullAccess}, |
| - // TODO(treib): Add the other IDs implied by kHostsAll. |
| - {APIPermission::kHostsAll, APIPermission::kHostsAllReadOnly, |
| - APIPermission::kDeclarativeWebRequest, APIPermission::kTopSites, |
| - APIPermission::kTab}}, |
| + {APIPermission::kDeclarativeWebRequest, APIPermission::kFavicon, |
| + APIPermission::kHostsAll, APIPermission::kHostsAllReadOnly, |
| + APIPermission::kProcesses, APIPermission::kTab, |
| + APIPermission::kTopSites, APIPermission::kWebNavigation}}, |
| // Hosts permission messages. |
| // Full host access already allows DeclarativeWebRequest, reading the list |
| @@ -409,17 +364,23 @@ ChromePermissionMessageRule::GetAllRules() { |
| // message if both permissions are required. |
| {IDS_EXTENSION_PROMPT_WARNING_ALL_HOSTS, |
| {APIPermission::kHostsAll}, |
| - // TODO(treib): Add kHostReadWrite and kHostReadOnly. |
| {APIPermission::kDeclarativeWebRequest, APIPermission::kFavicon, |
| - APIPermission::kHostsAllReadOnly, APIPermission::kProcesses, |
| + APIPermission::kHostsAllReadOnly, APIPermission::kHostReadOnly, |
| + APIPermission::kHostReadWrite, APIPermission::kProcesses, |
| APIPermission::kTab, APIPermission::kTopSites, |
| APIPermission::kWebNavigation}}, |
| {IDS_EXTENSION_PROMPT_WARNING_ALL_HOSTS_READ_ONLY, |
| {APIPermission::kHostsAllReadOnly}, |
| - // TODO(treib): Add kHostReadOnly. |
| - {APIPermission::kFavicon, APIPermission::kProcesses, APIPermission::kTab, |
| + {APIPermission::kFavicon, APIPermission::kHostReadOnly, |
| + APIPermission::kProcesses, APIPermission::kTab, |
| APIPermission::kTopSites, APIPermission::kWebNavigation}}, |
| + {new CommaSeparatedListFormatter(IDS_EXTENSION_PROMPT_WARNING_1_HOST, |
| + IDS_EXTENSION_PROMPT_WARNING_2_HOSTS, |
| + IDS_EXTENSION_PROMPT_WARNING_3_HOSTS, |
| + IDS_EXTENSION_PROMPT_WARNING_HOSTS_LIST), |
| + {APIPermission::kHostReadWrite}, |
| + {}}, |
| {new CommaSeparatedListFormatter( |
| IDS_EXTENSION_PROMPT_WARNING_1_HOST_READ_ONLY, |
| IDS_EXTENSION_PROMPT_WARNING_2_HOSTS_READ_ONLY, |
| @@ -427,41 +388,39 @@ ChromePermissionMessageRule::GetAllRules() { |
| IDS_EXTENSION_PROMPT_WARNING_HOSTS_LIST_READ_ONLY), |
| {APIPermission::kHostReadOnly}, |
| {}}, |
| - {new CommaSeparatedListFormatter(IDS_EXTENSION_PROMPT_WARNING_1_HOST, |
| - IDS_EXTENSION_PROMPT_WARNING_2_HOSTS, |
| - IDS_EXTENSION_PROMPT_WARNING_3_HOSTS, |
| - IDS_EXTENSION_PROMPT_WARNING_HOSTS_LIST), |
| - {APIPermission::kHostReadWrite}, |
| - {}}, |
| // History-related permission messages. |
| // History already allows reading favicons, tab access and accessing the |
| // list of most frequently visited sites. |
| {IDS_EXTENSION_PROMPT_WARNING_HISTORY_WRITE_AND_SESSIONS, |
| - {APIPermission::kSessions, APIPermission::kHistory}, |
| + {APIPermission::kHistory, APIPermission::kSessions}, |
| {APIPermission::kFavicon, APIPermission::kProcesses, APIPermission::kTab, |
| APIPermission::kTopSites, APIPermission::kWebNavigation}}, |
| {IDS_EXTENSION_PROMPT_WARNING_HISTORY_READ_AND_SESSIONS, |
| - {APIPermission::kSessions, APIPermission::kTab}, |
| + {APIPermission::kTab, APIPermission::kSessions}, |
| {APIPermission::kFavicon, APIPermission::kProcesses, |
| APIPermission::kTopSites, APIPermission::kWebNavigation}}, |
| {IDS_EXTENSION_PROMPT_WARNING_HISTORY_WRITE, |
| {APIPermission::kHistory}, |
| {APIPermission::kFavicon, APIPermission::kProcesses, APIPermission::kTab, |
| APIPermission::kTopSites, APIPermission::kWebNavigation}}, |
| + // Note: kSessions allows reading history from other devices only if kTab |
| + // is also present. Therefore, there are no _AND_SESSIONS versions of |
| + // the other rules that generate the HISTORY_READ warning. |
| {IDS_EXTENSION_PROMPT_WARNING_HISTORY_READ, |
| {APIPermission::kTab}, |
| {APIPermission::kFavicon, APIPermission::kProcesses, |
| APIPermission::kTopSites, APIPermission::kWebNavigation}}, |
| - // TODO(treib): Should we have _AND_SESSIONS versions of these 2 as well? |
| {IDS_EXTENSION_PROMPT_WARNING_HISTORY_READ, |
| {APIPermission::kProcesses}, |
| - {}}, |
| + {APIPermission::kFavicon, APIPermission::kTopSites, |
| + APIPermission::kWebNavigation}}, |
| {IDS_EXTENSION_PROMPT_WARNING_HISTORY_READ, |
| {APIPermission::kWebNavigation}, |
| - {}}, |
| + {APIPermission::kFavicon, APIPermission::kTopSites}}, |
| {IDS_EXTENSION_PROMPT_WARNING_FAVICON, {APIPermission::kFavicon}, {}}, |
| {IDS_EXTENSION_PROMPT_WARNING_TOPSITES, {APIPermission::kTopSites}, {}}, |
| + |
| {IDS_EXTENSION_PROMPT_WARNING_DECLARATIVE_WEB_REQUEST, |
| {APIPermission::kDeclarativeWebRequest}, |
| {}}, |
| @@ -469,8 +428,8 @@ ChromePermissionMessageRule::GetAllRules() { |
| // Messages generated by the sockets permission. |
| {IDS_EXTENSION_PROMPT_WARNING_SOCKET_ANY_HOST, |
| {APIPermission::kSocketAnyHost}, |
| - // TODO(treib): Add kSocketDomainHosts and kSocketSpecificHosts. |
| - {}}, |
| + {APIPermission::kSocketDomainHosts, |
| + APIPermission::kSocketSpecificHosts}}, |
| {new SpaceSeparatedListFormatter( |
| IDS_EXTENSION_PROMPT_WARNING_SOCKET_HOSTS_IN_DOMAIN, |
| IDS_EXTENSION_PROMPT_WARNING_SOCKET_HOSTS_IN_DOMAINS), |
| @@ -526,21 +485,19 @@ ChromePermissionMessageRule::GetAllRules() { |
| {APIPermission::kAccessibilityFeaturesRead}, |
| {}}, |
| - // TODO(sashab): Add the missing combinations of media galleries |
| - // permissions so a valid permission is generated for all combinations. |
| + // Media galleries permissions. We don't have strings for every possible |
| + // combination, e.g. we don't bother with a special string for "write, but |
| + // not read" - just show the "read and write" string instead, etc. |
| {IDS_EXTENSION_PROMPT_WARNING_MEDIA_GALLERIES_READ_WRITE_DELETE, |
| {APIPermission::kMediaGalleriesAllGalleriesCopyTo, |
| - APIPermission::kMediaGalleriesAllGalleriesDelete, |
| - APIPermission::kMediaGalleriesAllGalleriesRead}, |
| - {}}, |
| + APIPermission::kMediaGalleriesAllGalleriesDelete}, |
| + {APIPermission::kMediaGalleriesAllGalleriesRead}}, |
| {IDS_EXTENSION_PROMPT_WARNING_MEDIA_GALLERIES_READ_WRITE, |
| - {APIPermission::kMediaGalleriesAllGalleriesCopyTo, |
| - APIPermission::kMediaGalleriesAllGalleriesRead}, |
| - {}}, |
| + {APIPermission::kMediaGalleriesAllGalleriesCopyTo}, |
| + {APIPermission::kMediaGalleriesAllGalleriesRead}}, |
| {IDS_EXTENSION_PROMPT_WARNING_MEDIA_GALLERIES_READ_DELETE, |
| - {APIPermission::kMediaGalleriesAllGalleriesDelete, |
| - APIPermission::kMediaGalleriesAllGalleriesRead}, |
| - {}}, |
| + {APIPermission::kMediaGalleriesAllGalleriesDelete}, |
| + {APIPermission::kMediaGalleriesAllGalleriesRead}}, |
| {IDS_EXTENSION_PROMPT_WARNING_MEDIA_GALLERIES_READ, |
| {APIPermission::kMediaGalleriesAllGalleriesRead}, |
| {}}, |
| @@ -629,7 +586,7 @@ ChromePermissionMessageRule::GetAllRules() { |
| {}}, |
| {IDS_EXTENSION_PROMPT_WARNING_INTERCEPT_ALL_KEYS, |
| {APIPermission::kInterceptAllKeys}, |
| - {}}, // TODO(treib): This should probably suppress kInput. |
| + {APIPermission::kInput}}, |
| {IDS_EXTENSION_PROMPT_WARNING_INPUT, {APIPermission::kInput}, {}}, |
| {IDS_EXTENSION_PROMPT_WARNING_MANAGEMENT, |
| {APIPermission::kManagement}, |