14ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch// Copyright 2014 The Chromium Authors. All rights reserved. 2f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// found in the LICENSE file. 4f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 54ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch#include "extensions/common/api/sockets/sockets_manifest_data.h" 6f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 74ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch#include "extensions/common/api/sockets/sockets_manifest_permission.h" 8f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "extensions/common/manifest_constants.h" 9f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 10f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)namespace extensions { 11f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 12f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)SocketsManifestData::SocketsManifestData( 13f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) scoped_ptr<SocketsManifestPermission> permission) 14f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) : permission_(permission.Pass()) { 15f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) DCHECK(permission_); 16f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 17f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 18f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)SocketsManifestData::~SocketsManifestData() {} 19f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 20f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// static 214ad1aa43a48567659193a298fad74f55e00b3dd9Ben MurdochSocketsManifestData* SocketsManifestData::Get(const Extension* extension) { 22f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) return static_cast<SocketsManifestData*>( 23f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) extension->GetManifestData(manifest_keys::kSockets)); 24f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 25f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 26f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// static 27f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)bool SocketsManifestData::CheckRequest( 28f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const Extension* extension, 29f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const content::SocketPermissionRequest& request) { 30f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const SocketsManifestData* data = SocketsManifestData::Get(extension); 31f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) if (data) 32f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) return data->permission()->CheckRequest(extension, request); 33f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 34f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) return false; 35f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 36f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 37f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// static 38f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)scoped_ptr<SocketsManifestData> SocketsManifestData::FromValue( 39f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const base::Value& value, 40a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::string16* error) { 41f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) scoped_ptr<SocketsManifestPermission> permission = 42f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) SocketsManifestPermission::FromValue(value, error); 43f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) if (!permission) 44f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) return scoped_ptr<SocketsManifestData>(); 45f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 46f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) return scoped_ptr<SocketsManifestData>( 474ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch new SocketsManifestData(permission.Pass())).Pass(); 48f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 49f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 50f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} // namespace extensions 51