Home | History | Annotate | Download | only in bluetooth
      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_DATA_H_
      6 #define EXTENSIONS_COMMON_API_BLUETOOTH_BLUETOOTH_MANIFEST_DATA_H_
      7 
      8 #include <vector>
      9 
     10 #include "base/strings/string16.h"
     11 #include "extensions/common/extension.h"
     12 #include "extensions/common/manifest_handler.h"
     13 
     14 namespace extensions {
     15 class BluetoothManifestPermission;
     16 struct BluetoothPermissionRequest;
     17 }
     18 
     19 namespace extensions {
     20 
     21 // The parsed form of the "bluetooth" manifest entry.
     22 class BluetoothManifestData : public Extension::ManifestData {
     23  public:
     24   explicit BluetoothManifestData(
     25       scoped_ptr<BluetoothManifestPermission> permission);
     26   virtual ~BluetoothManifestData();
     27 
     28   // Gets the BluetoothManifestData for |extension|, or NULL if none was
     29   // specified.
     30   static BluetoothManifestData* Get(const Extension* extension);
     31 
     32   static bool CheckRequest(const Extension* extension,
     33                            const BluetoothPermissionRequest& request);
     34 
     35   static bool CheckSocketPermitted(const Extension* extension);
     36   static bool CheckLowEnergyPermitted(const Extension* extension);
     37 
     38   // Tries to construct the info based on |value|, as it would have appeared in
     39   // the manifest. Sets |error| and returns an empty scoped_ptr on failure.
     40   static scoped_ptr<BluetoothManifestData> FromValue(const base::Value& value,
     41                                                      base::string16* error);
     42 
     43   const BluetoothManifestPermission* permission() const {
     44     return permission_.get();
     45   }
     46 
     47  private:
     48   scoped_ptr<BluetoothManifestPermission> permission_;
     49 };
     50 
     51 // Used for checking bluetooth permission.
     52 struct BluetoothPermissionRequest {
     53   explicit BluetoothPermissionRequest(const std::string& uuid);
     54   ~BluetoothPermissionRequest();
     55 
     56   std::string uuid;
     57 };
     58 
     59 }  // namespace extensions
     60 
     61 #endif  // EXTENSIONS_COMMON_API_BLUETOOTH_BLUETOOTH_MANIFEST_DATA_H_
     62