| Index: chrome/common/extensions/permissions/media_galleries_permission.cc
|
| ===================================================================
|
| --- chrome/common/extensions/permissions/media_galleries_permission.cc (revision 247036)
|
| +++ chrome/common/extensions/permissions/media_galleries_permission.cc (working copy)
|
| @@ -17,11 +17,22 @@
|
|
|
| // copyTo permission requires delete permission as a prerequisite.
|
| // delete permission requires read permission as a prerequisite.
|
| -bool IsValidPermissionSet(bool has_read, bool has_copy_to, bool has_delete) {
|
| - if (has_copy_to)
|
| - return has_read && has_delete;
|
| - if (has_delete)
|
| - return has_read;
|
| +bool IsValidPermissionSet(bool has_read, bool has_copy_to, bool has_delete,
|
| + std::string* error) {
|
| + if (has_copy_to) {
|
| + if (has_read && has_delete)
|
| + return true;
|
| + if (error)
|
| + *error = "copyTo permission requires read and delete permissions";
|
| + return false;
|
| + }
|
| + if (has_delete) {
|
| + if (has_read)
|
| + return true;
|
| + if (error)
|
| + *error = "delete permission requires read permission";
|
| + return false;
|
| + }
|
| return true;
|
| }
|
|
|
| @@ -44,9 +55,11 @@
|
| MediaGalleriesPermission::~MediaGalleriesPermission() {
|
| }
|
|
|
| -bool MediaGalleriesPermission::FromValue(const base::Value* value) {
|
| +bool MediaGalleriesPermission::FromValue(const base::Value* value,
|
| + std::string* error) {
|
| if (!SetDisjunctionPermission<MediaGalleriesPermissionData,
|
| - MediaGalleriesPermission>::FromValue(value)) {
|
| + MediaGalleriesPermission>::FromValue(value,
|
| + error)) {
|
| return false;
|
| }
|
|
|
| @@ -78,7 +91,7 @@
|
| return false;
|
| }
|
|
|
| - return IsValidPermissionSet(has_read, has_copy_to, has_delete);
|
| + return IsValidPermissionSet(has_read, has_copy_to, has_delete, error);
|
| }
|
|
|
| PermissionMessages MediaGalleriesPermission::GetMessages() const {
|
| @@ -102,7 +115,7 @@
|
| has_delete = true;
|
| }
|
|
|
| - if (!IsValidPermissionSet(has_read, has_copy_to, has_delete)) {
|
| + if (!IsValidPermissionSet(has_read, has_copy_to, has_delete, NULL)) {
|
| NOTREACHED();
|
| return result;
|
| }
|
|
|