// 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 "base/basictypes.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, // 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 }; class PPAPI_SHARED_EXPORT PpapiPermissions { public: // Initializes the permissions struct with no permissions. PpapiPermissions(); // Initializes with the given permissions bits set. explicit PpapiPermissions(uint32 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 base_perms); bool HasPermission(Permission perm) const; // Returns the internal permission bits. Use for serialization only. uint32 GetBits() const { return permissions_; } private: uint32 permissions_; // Note: Copy & assign supported. }; } // namespace ppapi #endif // PPAPI_SHARED_IMPL_PPAPI_PERMISSIONS_H_