Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / chrome / common / extensions / api / bluetooth / bluetooth_manifest_permission.h
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 #ifndef CHROME_COMMON_EXTENSIONS_API_BLUETOOTH_BLUETOOTH_MANIFEST_PERMISSION_H_
6 #define CHROME_COMMON_EXTENSIONS_API_BLUETOOTH_BLUETOOTH_MANIFEST_PERMISSION_H_
7
8 #include <set>
9 #include <vector>
10
11 #include "extensions/common/install_warning.h"
12 #include "extensions/common/permissions/manifest_permission.h"
13
14 namespace extensions {
15 class Extension;
16 }
17
18 namespace extensions {
19 struct BluetoothPermissionRequest;
20 }
21
22 namespace extensions {
23
24 class BluetoothManifestPermission : public ManifestPermission {
25  public:
26   typedef std::set<std::string> BluetoothUuidSet;
27   BluetoothManifestPermission();
28   virtual ~BluetoothManifestPermission();
29
30   // Tries to construct the info based on |value|, as it would have appeared in
31   // the manifest. Sets |error| and returns an empty scoped_ptr on failure.
32   static scoped_ptr<BluetoothManifestPermission> FromValue(
33       const base::Value& value,
34       base::string16* error);
35
36   bool CheckRequest(const Extension* extension,
37                     const BluetoothPermissionRequest& request) const;
38   bool CheckSocketPermitted(const Extension* extension) const;
39   bool CheckLowEnergyPermitted(const Extension* extension) const;
40
41   void AddPermission(const std::string& uuid);
42
43   // extensions::ManifestPermission overrides.
44   virtual std::string name() const OVERRIDE;
45   virtual std::string id() const OVERRIDE;
46   virtual bool HasMessages() const OVERRIDE;
47   virtual PermissionMessages GetMessages() const OVERRIDE;
48   virtual bool FromValue(const base::Value* value) OVERRIDE;
49   virtual scoped_ptr<base::Value> ToValue() const OVERRIDE;
50   virtual ManifestPermission* Diff(const ManifestPermission* rhs)
51       const OVERRIDE;
52   virtual ManifestPermission* Union(const ManifestPermission* rhs)
53       const OVERRIDE;
54   virtual ManifestPermission* Intersect(const ManifestPermission* rhs)
55       const OVERRIDE;
56
57   const BluetoothUuidSet& uuids() const {
58     return uuids_;
59   }
60
61  private:
62   BluetoothUuidSet uuids_;
63   bool socket_;
64   bool low_energy_;
65 };
66
67 }  // namespace extensions
68
69 #endif  // CHROME_COMMON_EXTENSIONS_API_BLUETOOTH_BLUETOOTH_MANIFEST_PERMISSION_H_