1 // Copyright 2014 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 EXTENSIONS_COMMON_PERMISSIONS_SETTINGS_OVERRIDE_PERMISSION_H_ 6 #define EXTENSIONS_COMMON_PERMISSIONS_SETTINGS_OVERRIDE_PERMISSION_H_ 7 8 #include <string> 9 10 #include "extensions/common/permissions/api_permission.h" 11 12 namespace extensions { 13 14 // Takes care of creating custom permission messages for extensions that 15 // override settings. 16 class SettingsOverrideAPIPermission : public APIPermission { 17 public: 18 SettingsOverrideAPIPermission(const APIPermissionInfo* permission, 19 const std::string& setting_value); 20 virtual ~SettingsOverrideAPIPermission(); 21 22 // APIPermission overrides. 23 virtual bool HasMessages() const OVERRIDE; 24 virtual PermissionMessages GetMessages() const OVERRIDE; 25 virtual bool Check(const APIPermission::CheckParam* param) const OVERRIDE; 26 virtual bool Contains(const APIPermission* rhs) const OVERRIDE; 27 virtual bool Equal(const APIPermission* rhs) const OVERRIDE; 28 virtual bool FromValue( 29 const base::Value* value, 30 std::string* error, 31 std::vector<std::string>* unhandled_permissions) OVERRIDE; 32 virtual scoped_ptr<base::Value> ToValue() const OVERRIDE; 33 virtual APIPermission* Clone() const OVERRIDE; 34 virtual APIPermission* Diff(const APIPermission* rhs) const OVERRIDE; 35 virtual APIPermission* Union(const APIPermission* rhs) const OVERRIDE; 36 virtual APIPermission* Intersect(const APIPermission* rhs) const OVERRIDE; 37 virtual void Write(IPC::Message* m) const OVERRIDE; 38 virtual bool Read(const IPC::Message* m, PickleIterator* iter) OVERRIDE; 39 virtual void Log(std::string* log) const OVERRIDE; 40 41 private: 42 std::string setting_value_; 43 }; 44 45 } // namespace extensions 46 47 #endif // EXTENSIONS_COMMON_PERMISSIONS_SETTINGS_OVERRIDE_PERMISSION_H_ 48