| Index: device/devices_app/usb/device_manager_impl.h
|
| diff --git a/device/devices_app/usb/device_manager_impl.h b/device/devices_app/usb/device_manager_impl.h
|
| index 69b991e99a284afee050132d55565159ac47d6cd..b84f2544e0cbd0c6188db3ac866209fe08565903 100644
|
| --- a/device/devices_app/usb/device_manager_impl.h
|
| +++ b/device/devices_app/usb/device_manager_impl.h
|
| @@ -14,9 +14,10 @@
|
| #include "base/memory/scoped_ptr.h"
|
| #include "base/memory/weak_ptr.h"
|
| #include "device/devices_app/usb/public/interfaces/device_manager.mojom.h"
|
| +#include "device/devices_app/usb/public/interfaces/permission_provider.mojom.h"
|
| #include "third_party/mojo/src/mojo/public/cpp/bindings/array.h"
|
| +#include "third_party/mojo/src/mojo/public/cpp/bindings/binding.h"
|
| #include "third_party/mojo/src/mojo/public/cpp/bindings/interface_request.h"
|
| -#include "third_party/mojo/src/mojo/public/cpp/bindings/strong_binding.h"
|
|
|
| namespace base {
|
| class SequencedTaskRunner;
|
| @@ -38,11 +39,13 @@ class DeviceManagerImpl : public DeviceManager {
|
| public:
|
| DeviceManagerImpl(
|
| mojo::InterfaceRequest<DeviceManager> request,
|
| - scoped_ptr<DeviceManagerDelegate> delegate,
|
| + PermissionProviderPtr permission_provider,
|
| scoped_refptr<base::SequencedTaskRunner> service_task_runner);
|
| ~DeviceManagerImpl() override;
|
|
|
| - void set_connection_error_handler(const mojo::Closure& error_handler);
|
| + void set_connection_error_handler(const mojo::Closure& error_handler) {
|
| + connection_error_handler_ = error_handler;
|
| + }
|
|
|
| private:
|
| class ServiceThreadHelper;
|
| @@ -55,20 +58,25 @@ class DeviceManagerImpl : public DeviceManager {
|
| mojo::InterfaceRequest<Device> device_request,
|
| const OpenDeviceCallback& callback) override;
|
|
|
| + void OnOpenDevicePermissionCheckComplete(
|
| + mojo::InterfaceRequest<Device> device_request,
|
| + const OpenDeviceCallback& callback,
|
| + mojo::Array<mojo::String> allowed_guids);
|
| +
|
| // Callbacks to handle the async responses from the underlying UsbService.
|
| void OnGetDevices(const GetDevicesCallback& callback,
|
| mojo::Array<DeviceInfoPtr> devices);
|
| - void OnGetInitialDevices(const GetDeviceChangesCallback& callback,
|
| - mojo::Array<DeviceInfoPtr> devices);
|
|
|
| // Methods called by |helper_| when devices are added or removed.
|
| void OnDeviceAdded(DeviceInfoPtr device);
|
| void OnDeviceRemoved(std::string device_guid);
|
| void MaybeRunDeviceChangesCallback();
|
| + void OnEnumerationPermissionCheckComplete(
|
| + mojo::Array<DeviceInfoPtr> devices_added,
|
| + const std::set<std::string>& devices_removed,
|
| + mojo::Array<mojo::String> allowed_guids);
|
|
|
| - mojo::StrongBinding<DeviceManager> binding_;
|
| -
|
| - scoped_ptr<DeviceManagerDelegate> delegate_;
|
| + PermissionProviderPtr permission_provider_;
|
| scoped_refptr<base::SequencedTaskRunner> service_task_runner_;
|
|
|
| // If there are unfinished calls to GetDeviceChanges their callbacks
|
| @@ -78,11 +86,17 @@ class DeviceManagerImpl : public DeviceManager {
|
| std::queue<GetDeviceChangesCallback> device_change_callbacks_;
|
| mojo::Array<DeviceInfoPtr> devices_added_;
|
| std::set<std::string> devices_removed_;
|
| + // To ensure that GetDeviceChangesCallbacks are called in the correct order
|
| + // only perform a single request to |permission_provider_| at a time.
|
| + bool permission_request_pending_ = false;
|
|
|
| // |helper_| is owned by the service thread and holds a weak reference
|
| // back to the device manager that created it.
|
| - ServiceThreadHelper* helper_ = nullptr;
|
| + ServiceThreadHelper* helper_;
|
| +
|
| + mojo::Closure connection_error_handler_;
|
|
|
| + mojo::Binding<DeviceManager> binding_;
|
| base::WeakPtrFactory<DeviceManagerImpl> weak_factory_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(DeviceManagerImpl);
|
|
|