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_API_SOCKETS_SOCKETS_MANIFEST_PERMISSION_H_ 6 #define EXTENSIONS_COMMON_API_SOCKETS_SOCKETS_MANIFEST_PERMISSION_H_ 7 8 #include <set> 9 #include <vector> 10 11 #include "extensions/common/install_warning.h" 12 #include "extensions/common/permissions/manifest_permission.h" 13 #include "extensions/common/permissions/socket_permission_entry.h" 14 15 namespace content { 16 struct SocketPermissionRequest; 17 } 18 19 namespace extensions { 20 class Extension; 21 } 22 23 namespace extensions { 24 25 class SocketsManifestPermission : public ManifestPermission { 26 public: 27 typedef std::set<SocketPermissionEntry> SocketPermissionEntrySet; 28 SocketsManifestPermission(); 29 virtual ~SocketsManifestPermission(); 30 31 // Tries to construct the info based on |value|, as it would have appeared in 32 // the manifest. Sets |error| and returns an empty scoped_ptr on failure. 33 static scoped_ptr<SocketsManifestPermission> FromValue( 34 const base::Value& value, 35 base::string16* error); 36 37 bool CheckRequest(const Extension* extension, 38 const content::SocketPermissionRequest& request) const; 39 40 void AddPermission(const SocketPermissionEntry& entry); 41 42 // extensions::ManifestPermission overrides. 43 virtual std::string name() const OVERRIDE; 44 virtual std::string id() const OVERRIDE; 45 virtual bool HasMessages() const OVERRIDE; 46 virtual PermissionMessages GetMessages() const OVERRIDE; 47 virtual bool FromValue(const base::Value* value) OVERRIDE; 48 virtual scoped_ptr<base::Value> ToValue() const OVERRIDE; 49 virtual ManifestPermission* Clone() const OVERRIDE; 50 virtual ManifestPermission* Diff(const ManifestPermission* rhs) const 51 OVERRIDE; 52 virtual ManifestPermission* Union(const ManifestPermission* rhs) const 53 OVERRIDE; 54 virtual ManifestPermission* Intersect(const ManifestPermission* rhs) const 55 OVERRIDE; 56 virtual bool Contains(const ManifestPermission* rhs) const OVERRIDE; 57 virtual bool Equal(const ManifestPermission* rhs) const OVERRIDE; 58 virtual void Write(IPC::Message* m) const OVERRIDE; 59 virtual bool Read(const IPC::Message* m, PickleIterator* iter) OVERRIDE; 60 virtual void Log(std::string* log) const OVERRIDE; 61 62 const SocketPermissionEntrySet& entries() const { return permissions_; } 63 64 private: 65 bool AddAnyHostMessage(PermissionMessages& messages) const; 66 void AddSubdomainHostMessage(PermissionMessages& messages) const; 67 void AddSpecificHostMessage(PermissionMessages& messages) const; 68 void AddNetworkListMessage(PermissionMessages& messages) const; 69 70 SocketPermissionEntrySet permissions_; 71 }; 72 73 } // namespace extensions 74 75 #endif // EXTENSIONS_COMMON_API_SOCKETS_SOCKETS_MANIFEST_PERMISSION_H_ 76