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_handler.h"
6
7#include "extensions/common/api/sockets/sockets_manifest_data.h"
8#include "extensions/common/api/sockets/sockets_manifest_permission.h"
9#include "extensions/common/extension.h"
10#include "extensions/common/manifest_constants.h"
11
12namespace extensions {
13
14SocketsManifestHandler::SocketsManifestHandler() {}
15
16SocketsManifestHandler::~SocketsManifestHandler() {}
17
18bool SocketsManifestHandler::Parse(Extension* extension,
19                                   base::string16* error) {
20  const base::Value* sockets = NULL;
21  CHECK(extension->manifest()->Get(manifest_keys::kSockets, &sockets));
22  scoped_ptr<SocketsManifestData> data =
23      SocketsManifestData::FromValue(*sockets, error);
24  if (!data)
25    return false;
26
27  extension->SetManifestData(manifest_keys::kSockets, data.release());
28  return true;
29}
30
31ManifestPermission* SocketsManifestHandler::CreatePermission() {
32  return new SocketsManifestPermission();
33}
34
35ManifestPermission* SocketsManifestHandler::CreateInitialRequiredPermission(
36    const Extension* extension) {
37  SocketsManifestData* data = SocketsManifestData::Get(extension);
38  if (data)
39    return data->permission()->Clone();
40  return NULL;
41}
42
43const std::vector<std::string> SocketsManifestHandler::Keys() const {
44  return SingleKey(manifest_keys::kSockets);
45}
46
47}  // namespace extensions
48