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#include "extensions/common/api/sockets/sockets_manifest_data.h"
6
7#include "extensions/common/api/sockets/sockets_manifest_permission.h"
8#include "extensions/common/manifest_constants.h"
9
10namespace extensions {
11
12SocketsManifestData::SocketsManifestData(
13    scoped_ptr<SocketsManifestPermission> permission)
14    : permission_(permission.Pass()) {
15  DCHECK(permission_);
16}
17
18SocketsManifestData::~SocketsManifestData() {}
19
20// static
21SocketsManifestData* SocketsManifestData::Get(const Extension* extension) {
22  return static_cast<SocketsManifestData*>(
23      extension->GetManifestData(manifest_keys::kSockets));
24}
25
26// static
27bool SocketsManifestData::CheckRequest(
28    const Extension* extension,
29    const content::SocketPermissionRequest& request) {
30  const SocketsManifestData* data = SocketsManifestData::Get(extension);
31  if (data)
32    return data->permission()->CheckRequest(extension, request);
33
34  return false;
35}
36
37// static
38scoped_ptr<SocketsManifestData> SocketsManifestData::FromValue(
39    const base::Value& value,
40    base::string16* error) {
41  scoped_ptr<SocketsManifestPermission> permission =
42      SocketsManifestPermission::FromValue(value, error);
43  if (!permission)
44    return scoped_ptr<SocketsManifestData>();
45
46  return scoped_ptr<SocketsManifestData>(
47             new SocketsManifestData(permission.Pass())).Pass();
48}
49
50}  // namespace extensions
51