| // Copyright (c) 2012 The Chromium Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #ifndef PPAPI_SHARED_IMPL_PPAPI_PERMISSIONS_H_ | |
| #define PPAPI_SHARED_IMPL_PPAPI_PERMISSIONS_H_ | |
| #include <stdint.h> | |
| #include "ppapi/shared_impl/ppapi_shared_export.h" | |
| namespace ppapi { | |
| enum Permission { | |
| // Placeholder/uninitialized permission. | |
| PERMISSION_NONE = 0, | |
| // Allows access to dev interfaces. These are experimental interfaces not | |
| // tied to any particular release channel. | |
| PERMISSION_DEV = 1 << 0, | |
| // Allows access to Browser-internal interfaces. | |
| PERMISSION_PRIVATE = 1 << 1, | |
| // Allows ability to bypass user-gesture checks for showing things like | |
| // file select dialogs. | |
| PERMISSION_BYPASS_USER_GESTURE = 1 << 2, | |
| // Testing-only interfaces. | |
| PERMISSION_TESTING = 1 << 3, | |
| // Flash-related interfaces. | |
| PERMISSION_FLASH = 1 << 4, | |
| // "Dev channel" interfaces. This is different than PERMISSION_DEV above; | |
| // these interfaces may only be used on Dev or Canary channel releases of | |
| // Chrome. | |
| PERMISSION_DEV_CHANNEL = 1 << 5, | |
| // PDF-related interfaces. | |
| PERMISSION_PDF = 1 << 6, | |
| // NOTE: If you add stuff be sure to update PERMISSION_ALL_BITS. | |
| // Meta permission for initializing plugins registered on the command line | |
| // that get all permissions. | |
| PERMISSION_ALL_BITS = PERMISSION_DEV | PERMISSION_PRIVATE | | |
| PERMISSION_BYPASS_USER_GESTURE | PERMISSION_TESTING | | |
| PERMISSION_FLASH | PERMISSION_DEV_CHANNEL | | |
| PERMISSION_PDF | |
| }; | |
| class PPAPI_SHARED_EXPORT PpapiPermissions { | |
| public: | |
| // Initializes the permissions struct with no permissions. | |
| PpapiPermissions(); | |
| // Initializes with the given permissions bits set. | |
| explicit PpapiPermissions(uint32_t perms); | |
| ~PpapiPermissions(); | |
| // Returns a permissions class with all features enabled. This is for testing | |
| // and manually registered plugins. | |
| static PpapiPermissions AllPermissions(); | |
| // Returns the effective permissions given the "base" permissions granted | |
| // to the given plugin and the current command line flags, which may enable | |
| // more features. | |
| static PpapiPermissions GetForCommandLine(uint32_t base_perms); | |
| bool HasPermission(Permission perm) const; | |
| // Returns the internal permission bits. Use for serialization only. | |
| uint32_t GetBits() const { return permissions_; } | |
| private: | |
| uint32_t permissions_; | |
| // Note: Copy & assign supported. | |
| }; | |
| } // namespace ppapi | |
| #endif // PPAPI_SHARED_IMPL_PPAPI_PERMISSIONS_H_ |