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

Unified Diff: extensions/browser/api/device_permissions_prompt.cc

Issue 1097603003: Remove knowledge of USB devices from permission prompt implementations. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 8 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: extensions/browser/api/device_permissions_prompt.cc
diff --git a/extensions/browser/api/device_permissions_prompt.cc b/extensions/browser/api/device_permissions_prompt.cc
index fe6d535a1b3fa129cbfb8e8049565e350d79d16d..09751b36cc84fe14e1814a71352d745fe9cbfa04 100644
--- a/extensions/browser/api/device_permissions_prompt.cc
+++ b/extensions/browser/api/device_permissions_prompt.cc
@@ -25,6 +25,9 @@ using device::UsbService;
namespace extensions {
+DevicePermissionsPrompt::Delegate::~Delegate() {
+}
+
DevicePermissionsPrompt::Prompt::DeviceInfo::DeviceInfo(
scoped_refptr<UsbDevice> device)
: device(device) {
@@ -63,7 +66,16 @@ DevicePermissionsPrompt::Prompt::DeviceInfo::DeviceInfo(
DevicePermissionsPrompt::Prompt::DeviceInfo::~DeviceInfo() {
}
-DevicePermissionsPrompt::Prompt::Prompt() : usb_service_observer_(this) {
+DevicePermissionsPrompt::Prompt::Observer::~Observer() {
+}
+
+DevicePermissionsPrompt::Prompt::Prompt(Delegate* delegate,
+ const Extension* extension,
+ content::BrowserContext* context)
+ : extension_(extension),
+ browser_context_(context),
+ delegate_(delegate),
+ usb_service_observer_(this) {
}
void DevicePermissionsPrompt::Prompt::SetObserver(Observer* observer) {
@@ -92,21 +104,36 @@ base::string16 DevicePermissionsPrompt::Prompt::GetPromptMessage() const {
base::UTF8ToUTF16(extension_->name()));
}
-scoped_refptr<UsbDevice> DevicePermissionsPrompt::Prompt::GetDevice(
+base::string16 DevicePermissionsPrompt::Prompt::GetDeviceName(
size_t index) const {
DCHECK_LT(index, devices_.size());
- return devices_[index].device;
+ return devices_[index].name;
}
-void DevicePermissionsPrompt::Prompt::GrantDevicePermission(
+base::string16 DevicePermissionsPrompt::Prompt::GetDeviceSerialNumber(
size_t index) const {
DCHECK_LT(index, devices_.size());
+ return devices_[index].device->serial_number();
+}
+
+void DevicePermissionsPrompt::Prompt::GrantDevicePermission(size_t index) {
+ DCHECK_LT(index, devices_.size());
+ devices_[index].granted = true;
+}
+
+void DevicePermissionsPrompt::Prompt::Dismissed() {
DevicePermissionsManager* permissions_manager =
DevicePermissionsManager::Get(browser_context_);
- if (permissions_manager) {
- const DeviceInfo& device = devices_[index];
- permissions_manager->AllowUsbDevice(extension_->id(), device.device);
+ std::vector<scoped_refptr<UsbDevice>> devices;
+ for (const DeviceInfo& device : devices_) {
+ if (device.granted) {
+ devices.push_back(device.device);
+ if (permissions_manager) {
+ permissions_manager->AllowUsbDevice(extension_->id(), device.device);
+ }
+ }
}
+ delegate_->OnUsbDevicesChosen(devices);
}
void DevicePermissionsPrompt::Prompt::set_filters(
@@ -166,7 +193,7 @@ void DevicePermissionsPrompt::Prompt::AddCheckedUsbDevice(
DevicePermissionsPrompt::DevicePermissionsPrompt(
content::WebContents* web_contents)
- : web_contents_(web_contents), delegate_(nullptr) {
+ : web_contents_(web_contents) {
}
DevicePermissionsPrompt::~DevicePermissionsPrompt() {
@@ -178,12 +205,9 @@ void DevicePermissionsPrompt::AskForUsbDevices(
content::BrowserContext* context,
bool multiple,
const std::vector<UsbDeviceFilter>& filters) {
- prompt_ = new Prompt();
- prompt_->set_extension(extension);
- prompt_->set_browser_context(context);
+ prompt_ = new Prompt(delegate, extension, context);
prompt_->set_multiple(multiple);
prompt_->set_filters(filters);
- delegate_ = delegate;
ShowDialog();
}

Powered by Google App Engine
This is Rietveld 408576698