Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(80)

Unified Diff: device/devices_app/usb/device_manager_impl.h

Issue 1316203006: Convert DeviceManagerDelegate to PermissionProvider mojo interface. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed rockot@'s comments. Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..45b8a84c13c7f863a67a9882c0017bc7247e77a5 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;
@@ -58,17 +61,16 @@ 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);
// 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_;
-
- 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 +80,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);

Powered by Google App Engine
This is Rietveld 408576698