Index: device/u2f/u2f_enumerate.h |
diff --git a/device/u2f/u2f_enumerate.h b/device/u2f/u2f_enumerate.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..5f7fe683894f31b2b44ecdd90e9a1dc52b84ebb2 |
--- /dev/null |
+++ b/device/u2f/u2f_enumerate.h |
@@ -0,0 +1,54 @@ |
+// Copyright 2017 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 DEVICE_U2F_U2F_ENUMERATE_H_ |
+#define DEVICE_U2F_U2F_ENUMERATE_H_ |
+ |
+#include <list> |
+ |
+#include "base/scoped_observer.h" |
+#include "device/hid/hid_device_filter.h" |
+#include "device/hid/hid_service.h" |
+ |
+namespace device { |
+class U2fDevice; |
+ |
+class U2fEnumerate : HidService::Observer { |
+ public: |
+ using U2fEnumerateCallback = |
+ base::OnceCallback<void(std::list<std::unique_ptr<U2fDevice>>)>; |
+ using U2fDeviceAddedCallback = |
+ base::RepeatingCallback<void(std::unique_ptr<U2fDevice>)>; |
+ using U2fDeviceRemovedCallback = |
+ base::RepeatingCallback<void(std::unique_ptr<U2fDevice>)>; |
+ |
+ U2fEnumerate(); |
+ ~U2fEnumerate(); |
+ |
+ void EnumerateU2fDevices(U2fEnumerateCallback enumerate_cb); |
+ void set_device_added_callback( |
+ const U2fDeviceAddedCallback& device_added_cb) { |
+ device_added_cb_ = device_added_cb; |
+ } |
+ void set_device_removed_callback( |
+ const U2fDeviceRemovedCallback& device_removed_cb) { |
+ device_removed_cb_ = device_removed_cb; |
+ } |
+ |
+ private: |
+ void OnHidEnumerationComplete( |
+ U2fEnumerate::U2fEnumerateCallback callback, |
+ const std::vector<scoped_refptr<HidDeviceInfo>>& devices); |
+ void OnDeviceAdded(scoped_refptr<HidDeviceInfo> device_info) override; |
+ void OnDeviceRemoved(scoped_refptr<HidDeviceInfo> device_info) override; |
+ |
+ HidDeviceFilter filter_; |
+ U2fDeviceAddedCallback device_added_cb_; |
+ U2fDeviceRemovedCallback device_removed_cb_; |
+ ScopedObserver<HidService, HidService::Observer> hid_service_observer_; |
+ base::WeakPtrFactory<U2fEnumerate> weak_factory_; |
+}; |
+ |
+} // namespace device |
+#endif // DEVICE_U2F_U2F_ENUMERATE_H_ |