1effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch// Copyright 2014 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#ifndef EXTENSIONS_COMMON_PERMISSIONS_MEDIA_GALLERIES_PERMISSION_H_ 6effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#define EXTENSIONS_COMMON_PERMISSIONS_MEDIA_GALLERIES_PERMISSION_H_ 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/basictypes.h" 94e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "extensions/common/permissions/api_permission.h" 10effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "extensions/common/permissions/media_galleries_permission_data.h" 11effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "extensions/common/permissions/set_disjunction_permission.h" 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace extensions { 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Media Galleries permissions are as follows: 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// <media-galleries-permission-pattern> 175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// := <access> | <access> 'allAutoDetected' | 'allAutoDetected' | 185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// <access> 'scan' | 'scan' 198bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)// <access> := 'read' | 'read' <access> | 'read' <secondary-access> 208bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)// <secondary-access> 21f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// := 'delete' | 'delete' <secondary-access> | 22f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// 'delete' <tertiary-access> 23f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// <tertiary-access> 24f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// := 'copyTo' | 'copyTo' <tertiary-access> 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class MediaGalleriesPermission 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) : public SetDisjunctionPermission<MediaGalleriesPermissionData, 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MediaGalleriesPermission> { 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) struct CheckParam : public APIPermission::CheckParam { 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) explicit CheckParam(const std::string& permission) 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) : permission(permission) {} 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::string permission; 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) }; 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) explicit MediaGalleriesPermission(const APIPermissionInfo* info); 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual ~MediaGalleriesPermission(); 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // SetDisjunctionPermission overrides. 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // MediaGalleriesPermission does additional checks to make sure the 40558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch // permissions do not contain unknown values. 41c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual bool FromValue( 42c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch const base::Value* value, 43c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch std::string* error, 44c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch std::vector<std::string>* unhandled_permissions) OVERRIDE; 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // APIPermission overrides. 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual PermissionMessages GetMessages() const OVERRIDE; 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Permission strings. 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static const char kAllAutoDetectedPermission[]; 515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) static const char kScanPermission[]; 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static const char kReadPermission[]; 53558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch static const char kCopyToPermission[]; 54f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) static const char kDeletePermission[]; 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace extensions 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 59effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#endif // EXTENSIONS_COMMON_PERMISSIONS_MEDIA_GALLERIES_PERMISSION_H_ 60