Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(384)

Unified Diff: extensions/common/permissions/media_galleries_permission.cc

Issue 795543002: Added PermissionIDSet to APIPermissions (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@permissions_patch_1_static_initializer_fix
Patch Set: Removed unnecessary constructor and added tests for API permissions Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: extensions/common/permissions/media_galleries_permission.cc
diff --git a/extensions/common/permissions/media_galleries_permission.cc b/extensions/common/permissions/media_galleries_permission.cc
index df8f946a7e1394066e8d492472d855e22da8c953..e48d6f8c42713dd69aa1eaa4184882eb0d82dceb 100644
--- a/extensions/common/permissions/media_galleries_permission.cc
+++ b/extensions/common/permissions/media_galleries_permission.cc
@@ -110,10 +110,23 @@ bool MediaGalleriesPermission::FromValue(
return IsValidPermissionSet(has_read, has_copy_to, has_delete, error);
}
+PermissionIDSet MediaGalleriesPermission::GetPermissions() const {
+ DCHECK(HasMessages());
+ PermissionIDSet result;
+ AddMessagesAndPermissions(&result, NULL);
+ return result;
+}
+
PermissionMessages MediaGalleriesPermission::GetMessages() const {
DCHECK(HasMessages());
PermissionMessages result;
+ AddMessagesAndPermissions(NULL, &result);
+ return result;
+}
+void MediaGalleriesPermission::AddMessagesAndPermissions(
+ PermissionIDSet* permission_ids,
+ PermissionMessages* permission_messages) const {
bool has_all_auto_detected = false;
bool has_read = false;
bool has_copy_to = false;
@@ -133,39 +146,54 @@ PermissionMessages MediaGalleriesPermission::GetMessages() const {
if (!IsValidPermissionSet(has_read, has_copy_to, has_delete, NULL)) {
NOTREACHED();
- return result;
+ return;
}
// If |has_all_auto_detected| is false, then Chrome will prompt the user at
// runtime when the extension call the getMediaGalleries API.
if (!has_all_auto_detected)
- return result;
+ return;
// No access permission case.
if (!has_read)
- return result;
+ return;
// Separate PermissionMessage IDs for read, copyTo, and delete. Otherwise an
// extension can silently gain new access capabilities.
- result.push_back(PermissionMessage(
- PermissionMessage::kMediaGalleriesAllGalleriesRead,
- l10n_util::GetStringUTF16(
- IDS_EXTENSION_PROMPT_WARNING_MEDIA_GALLERIES_READ)));
+ if (permission_messages) {
+ permission_messages->push_back(PermissionMessage(
+ PermissionMessage::kMediaGalleriesAllGalleriesRead,
+ l10n_util::GetStringUTF16(
+ IDS_EXTENSION_PROMPT_WARNING_MEDIA_GALLERIES_READ)));
+ }
+ if (permission_ids) {
+ permission_ids->insert(APIPermission::kMediaGalleriesAllGalleriesRead);
+ }
// For copyTo and delete, the proper combined permission message will be
// derived in ChromePermissionMessageProvider::GetWarningMessages(), such
// that the user get 1 entry for all media galleries access permissions,
// rather than several separate entries.
if (has_copy_to) {
- result.push_back(PermissionMessage(
- PermissionMessage::kMediaGalleriesAllGalleriesCopyTo,
- base::string16()));
+ if (permission_messages) {
+ permission_messages->push_back(PermissionMessage(
+ PermissionMessage::kMediaGalleriesAllGalleriesCopyTo,
+ base::string16()));
+ }
+ if (permission_ids) {
+ permission_ids->insert(APIPermission::kMediaGalleriesAllGalleriesCopyTo);
+ }
}
if (has_delete) {
- result.push_back(PermissionMessage(
- PermissionMessage::kMediaGalleriesAllGalleriesDelete,
- base::string16()));
+ if (permission_messages) {
+ permission_messages->push_back(PermissionMessage(
+ PermissionMessage::kMediaGalleriesAllGalleriesDelete,
+ base::string16()));
+ }
+ if (permission_ids) {
+ permission_ids->insert(APIPermission::kMediaGalleriesAllGalleriesDelete);
+ }
}
- return result;
+ return;
}
} // namespace extensions

Powered by Google App Engine
This is Rietveld 408576698