Index: content/common/bluetooth/web_bluetooth_device_id.h |
diff --git a/content/common/bluetooth/web_bluetooth_device_id.h b/content/common/bluetooth/web_bluetooth_device_id.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..2de12a022dfc22bc981306944568b5316ca5df9d |
--- /dev/null |
+++ b/content/common/bluetooth/web_bluetooth_device_id.h |
@@ -0,0 +1,58 @@ |
+// 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_ |