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_data.h"
6
7#include "extensions/common/api/bluetooth/bluetooth_manifest_permission.h"
8#include "extensions/common/manifest_constants.h"
9
10namespace extensions {
11
12BluetoothManifestData::BluetoothManifestData(
13    scoped_ptr<BluetoothManifestPermission> permission)
14    : permission_(permission.Pass()) {
15  DCHECK(permission_);
16}
17
18BluetoothManifestData::~BluetoothManifestData() {}
19
20// static
21BluetoothManifestData* BluetoothManifestData::Get(const Extension* extension) {
22  return static_cast<BluetoothManifestData*>(
23      extension->GetManifestData(manifest_keys::kBluetooth));
24}
25
26// static
27bool BluetoothManifestData::CheckRequest(
28    const Extension* extension,
29    const BluetoothPermissionRequest& request) {
30  const BluetoothManifestData* data = BluetoothManifestData::Get(extension);
31  return data && data->permission()->CheckRequest(extension, request);
32}
33
34// static
35bool BluetoothManifestData::CheckSocketPermitted(
36    const Extension* extension) {
37  const BluetoothManifestData* data = BluetoothManifestData::Get(extension);
38  return data && data->permission()->CheckSocketPermitted(extension);
39}
40
41// static
42bool BluetoothManifestData::CheckLowEnergyPermitted(
43    const Extension* extension) {
44  const BluetoothManifestData* data = BluetoothManifestData::Get(extension);
45  return data && data->permission()->CheckLowEnergyPermitted(extension);
46}
47
48// static
49scoped_ptr<BluetoothManifestData> BluetoothManifestData::FromValue(
50    const base::Value& value,
51    base::string16* error) {
52  scoped_ptr<BluetoothManifestPermission> permission =
53      BluetoothManifestPermission::FromValue(value, error);
54  if (!permission)
55    return scoped_ptr<BluetoothManifestData>();
56
57  return scoped_ptr<BluetoothManifestData>(
58             new BluetoothManifestData(permission.Pass())).Pass();
59}
60
61BluetoothPermissionRequest::BluetoothPermissionRequest(
62    const std::string& uuid)
63    : uuid(uuid) {}
64
65BluetoothPermissionRequest::~BluetoothPermissionRequest() {}
66
67}  // namespace extensions
68