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_DATA_H_
      6 #define EXTENSIONS_COMMON_API_SOCKETS_SOCKETS_MANIFEST_DATA_H_
      7 
      8 #include <vector>
      9 
     10 #include "base/strings/string16.h"
     11 #include "extensions/common/extension.h"
     12 #include "extensions/common/manifest_handler.h"
     13 
     14 namespace content {
     15 struct SocketPermissionRequest;
     16 }
     17 
     18 namespace extensions {
     19 class SocketsManifestPermission;
     20 }
     21 
     22 namespace extensions {
     23 
     24 // The parsed form of the "sockets" manifest entry.
     25 class SocketsManifestData : public Extension::ManifestData {
     26  public:
     27   explicit SocketsManifestData(
     28       scoped_ptr<SocketsManifestPermission> permission);
     29   virtual ~SocketsManifestData();
     30 
     31   // Gets the SocketsManifestData for |extension|, or NULL if none was
     32   // specified.
     33   static SocketsManifestData* Get(const Extension* extension);
     34 
     35   static bool CheckRequest(const Extension* extension,
     36                            const content::SocketPermissionRequest& request);
     37 
     38   // Tries to construct the info based on |value|, as it would have appeared in
     39   // the manifest. Sets |error| and returns an empty scoped_ptr on failure.
     40   static scoped_ptr<SocketsManifestData> FromValue(const base::Value& value,
     41                                                    base::string16* error);
     42 
     43   const SocketsManifestPermission* permission() const {
     44     return permission_.get();
     45   }
     46 
     47  private:
     48   scoped_ptr<SocketsManifestPermission> permission_;
     49 };
     50 
     51 }  // namespace extensions
     52 
     53 #endif  // EXTENSIONS_COMMON_API_SOCKETS_SOCKETS_MANIFEST_DATA_H_
     54