1effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch// Copyright 2014 The Chromium Authors. All rights reserved. 2f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// found in the LICENSE file. 4f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 5effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#ifndef EXTENSIONS_COMMON_PERMISSIONS_SETTINGS_OVERRIDE_PERMISSION_H_ 6effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#define EXTENSIONS_COMMON_PERMISSIONS_SETTINGS_OVERRIDE_PERMISSION_H_ 7f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 8f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include <string> 9f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 10f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "extensions/common/permissions/api_permission.h" 11f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 12f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)namespace extensions { 13f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 14f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Takes care of creating custom permission messages for extensions that 15f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// override settings. 16f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class SettingsOverrideAPIPermission : public APIPermission { 17f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) public: 18effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch SettingsOverrideAPIPermission(const APIPermissionInfo* permission, 19effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch const std::string& setting_value); 20f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual ~SettingsOverrideAPIPermission(); 21f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 22f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // APIPermission overrides. 23f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual bool HasMessages() const OVERRIDE; 24f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual PermissionMessages GetMessages() const OVERRIDE; 25f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual bool Check(const APIPermission::CheckParam* param) const OVERRIDE; 26f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual bool Contains(const APIPermission* rhs) const OVERRIDE; 27f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual bool Equal(const APIPermission* rhs) const OVERRIDE; 28c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual bool FromValue( 29c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch const base::Value* value, 30c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch std::string* error, 31c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch std::vector<std::string>* unhandled_permissions) OVERRIDE; 32f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual scoped_ptr<base::Value> ToValue() const OVERRIDE; 33f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual APIPermission* Clone() const OVERRIDE; 34f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual APIPermission* Diff(const APIPermission* rhs) const OVERRIDE; 35f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual APIPermission* Union(const APIPermission* rhs) const OVERRIDE; 36f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual APIPermission* Intersect(const APIPermission* rhs) const OVERRIDE; 37f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void Write(IPC::Message* m) const OVERRIDE; 38f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual bool Read(const IPC::Message* m, PickleIterator* iter) OVERRIDE; 39f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void Log(std::string* log) const OVERRIDE; 40f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 41f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) private: 42f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) std::string setting_value_; 43f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}; 44f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 45f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} // namespace extensions 46f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 47effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#endif // EXTENSIONS_COMMON_PERMISSIONS_SETTINGS_OVERRIDE_PERMISSION_H_ 48