| // Copyright 2016 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CONTENT_COMMON_BLUETOOTH_WEB_BLUETOOTH_DEVICE_ID_H_ |
| #define CONTENT_COMMON_BLUETOOTH_WEB_BLUETOOTH_DEVICE_ID_H_ |
| |
| #include <string> |
| |
| #include "content/common/content_export.h" |
| |
| namespace content { |
| |
| // Used to uniquely identify a Bluetooth Device for an Origin. |
| // A WebBluetoothDeviceId is generated by base64-encoding a 128bit |
| // string. |
| class CONTENT_EXPORT WebBluetoothDeviceId { |
| public: |
| // Default constructor that creates an invalid id. We implement it so that |
| // instances of this class in a container, e.g. std::unordered_map, can be |
| // accessed through the [] operator. Trying to call any function of the |
| // resulting object will DCHECK-fail. |
| WebBluetoothDeviceId(); |
| |
| // DCHECKS that |device_id| is valid. |
| explicit WebBluetoothDeviceId(std::string device_id); |
| ~WebBluetoothDeviceId(); |
| |
| // Returns the string that represents this WebBluetoothDeviceId. |
| const std::string& str() const; |
| |
| // The returned WebBluetoothDeviceId is generated by creating a random 128bit |
| // string and base64-encoding it. |
| static WebBluetoothDeviceId Create(); |
| |
| // Returns true if base64-decoding |device_id| results in a 128bit string. |
| static bool IsValid(const std::string& device_id); |
| |
| bool operator==(const WebBluetoothDeviceId& device_id) const; |
| bool operator!=(const WebBluetoothDeviceId& device_id) const; |
| |
| private: |
| std::string device_id_; |
| }; |
| |
| // This is required by gtest to print a readable output on test failures. |
| CONTENT_EXPORT std::ostream& operator<<(std::ostream& out, |
| const WebBluetoothDeviceId& device_id); |
| |
| struct WebBluetoothDeviceIdHash { |
| size_t operator()(const WebBluetoothDeviceId& device_id) const { |
| return std::hash<std::string>()(device_id.str()); |
| } |
| }; |
| |
| } // namespace content |
| |
| #endif // CONTENT_COMMON_BLUETOOTH_WEB_BLUETOOTH_DEVICE_ID_H_ |