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