| 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
|
|
|