Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / chrome / common / extensions / permissions / media_galleries_permission.h
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef CHROME_COMMON_EXTENSIONS_PERMISSIONS_MEDIA_GALLERIES_PERMISSION_H_
6 #define CHROME_COMMON_EXTENSIONS_PERMISSIONS_MEDIA_GALLERIES_PERMISSION_H_
7
8 #include "base/basictypes.h"
9 #include "chrome/common/extensions/permissions/media_galleries_permission_data.h"
10 #include "chrome/common/extensions/permissions/set_disjunction_permission.h"
11 #include "extensions/common/permissions/api_permission.h"
12
13 namespace extensions {
14
15 // Media Galleries permissions are as follows:
16 //   <media-galleries-permission-pattern>
17 //             := <access> | <access> 'allAutoDetected' | 'allAutoDetected' |
18 //                <access> 'scan' | 'scan'
19 //   <access>  := 'read' | 'read' <access> | 'read' <secondary-access>
20 //   <secondary-access>
21 //             := 'delete' | 'delete' <secondary-access> |
22 //                'delete' <tertiary-access>
23 //   <tertiary-access>
24 //             := 'copyTo' | 'copyTo' <tertiary-access>
25 class MediaGalleriesPermission
26   : public SetDisjunctionPermission<MediaGalleriesPermissionData,
27                                     MediaGalleriesPermission> {
28  public:
29   struct CheckParam : public APIPermission::CheckParam {
30     explicit CheckParam(const std::string& permission)
31       : permission(permission) {}
32     const std::string permission;
33   };
34
35   explicit MediaGalleriesPermission(const APIPermissionInfo* info);
36   virtual ~MediaGalleriesPermission();
37
38   // SetDisjunctionPermission overrides.
39   // MediaGalleriesPermission does additional checks to make sure the
40   // permissions do not contain unknown values.
41   virtual bool FromValue(const base::Value* value, std::string* error) OVERRIDE;
42
43   // APIPermission overrides.
44   virtual PermissionMessages GetMessages() const OVERRIDE;
45
46   // Permission strings.
47   static const char kAllAutoDetectedPermission[];
48   static const char kScanPermission[];
49   static const char kReadPermission[];
50   static const char kCopyToPermission[];
51   static const char kDeletePermission[];
52 };
53
54 }  // namespace extensions
55
56 #endif  // CHROME_COMMON_EXTENSIONS_PERMISSIONS_MEDIA_GALLERIES_PERMISSION_H_