Index: extensions/browser/api/device_permissions_prompt.h |
diff --git a/extensions/browser/api/device_permissions_prompt.h b/extensions/browser/api/device_permissions_prompt.h |
index 5e93155bf47a7d89c4bd5ba1ddebcfe81ba113cd..ed3e1de4701b8b5336ec2e317f83a3b7de411fd3 100644 |
--- a/extensions/browser/api/device_permissions_prompt.h |
+++ b/extensions/browser/api/device_permissions_prompt.h |
@@ -10,11 +10,8 @@ |
#include "base/callback.h" |
#include "base/logging.h" |
#include "base/memory/ref_counted.h" |
-#include "base/scoped_observer.h" |
+#include "base/memory/scoped_vector.h" |
#include "base/strings/string16.h" |
-#include "content/public/browser/browser_thread.h" |
-#include "device/usb/usb_device.h" |
-#include "device/usb/usb_service.h" |
namespace content { |
class BrowserContext; |
@@ -22,6 +19,7 @@ class WebContents; |
} |
namespace device { |
+class UsbDevice; |
class UsbDeviceFilter; |
} |
@@ -33,27 +31,19 @@ class Extension; |
// (similar to choosing files). |
class DevicePermissionsPrompt { |
public: |
- class Delegate { |
- public: |
- // Called with the list of selected USB devices. |
- virtual void OnUsbDevicesChosen( |
- const std::vector<scoped_refptr<device::UsbDevice>>& devices) = 0; |
- |
- protected: |
- virtual ~Delegate(); |
- }; |
+ using UsbDevicesCallback = base::Callback<void( |
+ const std::vector<scoped_refptr<device::UsbDevice>>&)>; |
// Context information available to the UI implementation. |
- class Prompt : public base::RefCounted<Prompt>, |
- public device::UsbService::Observer { |
+ class Prompt : public base::RefCounted<Prompt> { |
public: |
// Displayed properties of a device. |
struct DeviceInfo { |
Jeffrey Yasskin
2015/04/23 20:40:07
Describe how this is extended. Probably also mark
Reilly Grant (use Gerrit)
2015/04/23 23:02:47
Done.
|
- DeviceInfo(scoped_refptr<device::UsbDevice> device); |
- ~DeviceInfo(); |
+ DeviceInfo(); |
+ virtual ~DeviceInfo(); |
- scoped_refptr<device::UsbDevice> device; |
base::string16 name; |
+ base::string16 serial_number; |
bool granted = false; |
}; |
@@ -67,14 +57,14 @@ class DevicePermissionsPrompt { |
virtual ~Observer(); |
}; |
- Prompt(Delegate* delegate, |
- const Extension* extension, |
- content::BrowserContext* context); |
+ Prompt(const Extension* extension, |
+ content::BrowserContext* context, |
+ bool multiple); |
Jeffrey Yasskin
2015/04/23 20:40:07
Comment what "multiple" means.
Reilly Grant (use Gerrit)
2015/04/23 23:02:47
Done.
|
// Only one observer may be registered at a time. |
- void SetObserver(Observer* observer); |
+ virtual void SetObserver(Observer* observer); |
- base::string16 GetHeading() const; |
+ virtual base::string16 GetHeading() const = 0; |
base::string16 GetPromptMessage() const; |
size_t GetDeviceCount() const { return devices_.size(); } |
base::string16 GetDeviceName(size_t index) const; |
@@ -83,46 +73,41 @@ class DevicePermissionsPrompt { |
// Notifies the DevicePermissionsManager for the current extension that |
// access to the device at the given index is now granted. |
void GrantDevicePermission(size_t index); |
- void Dismissed(); |
- bool multiple() const { return multiple_; } |
+ virtual void Dismissed() = 0; |
- void set_multiple(bool multiple) { multiple_ = multiple; } |
- void set_filters(const std::vector<device::UsbDeviceFilter>& filters); |
- |
- private: |
- friend class base::RefCounted<Prompt>; |
+ bool multiple() const { return multiple_; } |
+ protected: |
virtual ~Prompt(); |
- // device::UsbService::Observer implementation: |
- void OnDeviceAdded(scoped_refptr<device::UsbDevice> device) override; |
- void OnDeviceRemoved(scoped_refptr<device::UsbDevice> device) override; |
+ const Extension* extension() const { return extension_; } |
+ Observer* observer() const { return observer_; } |
+ content::BrowserContext* browser_context() const { |
+ return browser_context_; |
+ } |
+ |
+ ScopedVector<DeviceInfo> devices_; |
Jeffrey Yasskin
2015/04/23 20:40:07
Please comment the rules on the type of the object
Reilly Grant (use Gerrit)
2015/04/23 23:02:47
Done.
|
- void OnDevicesEnumerated( |
- const std::vector<scoped_refptr<device::UsbDevice>>& devices); |
- void AddCheckedUsbDevice(scoped_refptr<device::UsbDevice> device, |
- bool allowed); |
+ private: |
+ friend class base::RefCounted<Prompt>; |
const extensions::Extension* extension_ = nullptr; |
+ Observer* observer_ = nullptr; |
content::BrowserContext* browser_context_ = nullptr; |
- Delegate* delegate_ = nullptr; |
bool multiple_ = false; |
- std::vector<device::UsbDeviceFilter> filters_; |
- std::vector<DeviceInfo> devices_; |
- Observer* observer_ = nullptr; |
- ScopedObserver<device::UsbService, device::UsbService::Observer> |
- usb_service_observer_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(Prompt); |
}; |
DevicePermissionsPrompt(content::WebContents* web_contents); |
virtual ~DevicePermissionsPrompt(); |
- void AskForUsbDevices(Delegate* delegate, |
- const Extension* extension, |
+ void AskForUsbDevices(const Extension* extension, |
content::BrowserContext* context, |
bool multiple, |
- const std::vector<device::UsbDeviceFilter>& filters); |
+ const std::vector<device::UsbDeviceFilter>& filters, |
+ const UsbDevicesCallback& callback); |
protected: |
virtual void ShowDialog() = 0; |
@@ -136,6 +121,8 @@ class DevicePermissionsPrompt { |
// Parameters available to the UI implementation. |
scoped_refptr<Prompt> prompt_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(DevicePermissionsPrompt); |
}; |
} // namespace extensions |