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 EXTENSIONS_COMMON_API_BLUETOOTH_BLUETOOTH_MANIFEST_PERMISSION_H_ 6 #define EXTENSIONS_COMMON_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 // EXTENSIONS_COMMON_API_BLUETOOTH_BLUETOOTH_MANIFEST_PERMISSION_H_ 70