Chromium Code Reviews| 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..b7d97eccad94e122ebe02d375efc109cb5149d0e 100644 |
| --- a/device/devices_app/usb/device_manager_impl.h |
| +++ b/device/devices_app/usb/device_manager_impl.h |
| @@ -14,6 +14,7 @@ |
| #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/interface_request.h" |
| #include "third_party/mojo/src/mojo/public/cpp/bindings/strong_binding.h" |
| @@ -38,7 +39,7 @@ 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; |
| @@ -58,17 +59,19 @@ class DeviceManagerImpl : public DeviceManager { |
| // 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); |
| + void OnGetInitialDevices(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 OnPermissionCheckComplete(mojo::Array<DeviceInfoPtr> devices_added, |
| + const std::set<std::string>& devices_removed, |
| + mojo::Array<mojo::String> allowed_guids); |
| mojo::StrongBinding<DeviceManager> binding_; |
|
Ken Rockot(use gerrit already)
2015/09/02 22:42:33
as discussed offline, this can become a mojo::Bind
Ken Rockot(use gerrit already)
2015/09/02 23:07:18
to preserve what was also just discussed offline,
Reilly Grant (use Gerrit)
2015/09/02 23:58:19
Done.
|
| - scoped_ptr<DeviceManagerDelegate> delegate_; |
| + PermissionProviderPtr permission_provider_; |
| scoped_refptr<base::SequencedTaskRunner> service_task_runner_; |
| // If there are unfinished calls to GetDeviceChanges their callbacks |
| @@ -78,6 +81,11 @@ 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; |
| + // The first notification is allowed to be empty. All others are not. |
| + bool first_notification_ = true; |
| // |helper_| is owned by the service thread and holds a weak reference |
| // back to the device manager that created it. |