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 14namespace content { 15struct SocketPermissionRequest; 16} 17 18namespace extensions { 19class SocketsManifestPermission; 20} 21 22namespace extensions { 23 24// The parsed form of the "sockets" manifest entry. 25class 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