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