Home | History | Annotate | Download | only in sockets
      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* Diff(const ManifestPermission* rhs) const
     50       OVERRIDE;
     51   virtual ManifestPermission* Union(const ManifestPermission* rhs) const
     52       OVERRIDE;
     53   virtual ManifestPermission* Intersect(const ManifestPermission* rhs) const
     54       OVERRIDE;
     55 
     56   const SocketPermissionEntrySet& entries() const { return permissions_; }
     57 
     58  private:
     59   bool AddAnyHostMessage(PermissionMessages& messages) const;
     60   void AddSubdomainHostMessage(PermissionMessages& messages) const;
     61   void AddSpecificHostMessage(PermissionMessages& messages) const;
     62   void AddNetworkListMessage(PermissionMessages& messages) const;
     63 
     64   SocketPermissionEntrySet permissions_;
     65 };
     66 
     67 }  // namespace extensions
     68 
     69 #endif  // EXTENSIONS_COMMON_API_SOCKETS_SOCKETS_MANIFEST_PERMISSION_H_
     70