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

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

Issue 980023002: Move device/usb classes from the FILE thread to UI thread. (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 afb895cd642490596df8e226c8f8c4ef25c512a2..ecbadfc60754d87d6e798db84df51d4f7602f979 100644
--- a/extensions/browser/api/device_permissions_prompt.cc
+++ b/extensions/browser/api/device_permissions_prompt.cc
@@ -26,10 +26,8 @@ namespace extensions {
DevicePermissionsPrompt::Prompt::DeviceInfo::DeviceInfo(
scoped_refptr<UsbDevice> device)
: device(device) {
- base::string16 manufacturer_string;
- if (device->GetManufacturer(&manufacturer_string)) {
- original_manufacturer_string = manufacturer_string;
- } else {
+ base::string16 manufacturer_string = device->manufacturer_string();
+ if (manufacturer_string.empty()) {
const char* vendor_name =
device::UsbIds::GetVendorName(device->vendor_id());
if (vendor_name) {
@@ -42,10 +40,8 @@ DevicePermissionsPrompt::Prompt::DeviceInfo::DeviceInfo(
}
}
- base::string16 product_string;
- if (device->GetProduct(&product_string)) {
- original_product_string = product_string;
- } else {
+ base::string16 product_string = device->product_string();
+ if (product_string.empty()) {
const char* product_name = device::UsbIds::GetProductName(
device->vendor_id(), device->product_id());
if (product_name) {
@@ -58,10 +54,6 @@ DevicePermissionsPrompt::Prompt::DeviceInfo::DeviceInfo(
}
}
- if (!device->GetSerialNumber(&serial_number)) {
- serial_number.clear();
- }
-
name = l10n_util::GetStringFUTF16(IDS_DEVICE_PERMISSIONS_DEVICE_NAME,
product_string, manufacturer_string);
}
@@ -81,9 +73,34 @@ void DevicePermissionsPrompt::Prompt::SetObserver(Observer* observer) {
observer_ = observer;
if (observer_) {
- content::BrowserThread::PostTask(
- content::BrowserThread::FILE, FROM_HERE,
- base::Bind(&DevicePermissionsPrompt::Prompt::DoDeviceQuery, this));
+ UsbService* service = device::DeviceClient::Get()->GetUsbService();
+ if (!service) {
+ return;
+ }
+
+ service->GetDevices(base::Bind(
+ &DevicePermissionsPrompt::Prompt::OnDevicesEnumerated, this));
+
+ if (!usb_service_observer_.IsObserving(service)) {
+ usb_service_observer_.Add(service);
+ }
+ }
+}
+
+void DevicePermissionsPrompt::Prompt::OnDevicesEnumerated(
+ const std::vector<scoped_refptr<UsbDevice>>& devices) {
+ std::vector<DeviceInfo> device_info;
+ for (const auto& device : devices) {
+ if (!(filters_.empty() || UsbDeviceFilter::MatchesAny(device, filters_))) {
+ continue;
+ }
+
+ device_info.push_back(DeviceInfo(device));
+ }
+ devices_.swap(device_info);
+
+ if (observer_) {
+ observer_->OnDevicesChanged();
}
}
@@ -113,9 +130,7 @@ void DevicePermissionsPrompt::Prompt::GrantDevicePermission(
DevicePermissionsManager::Get(browser_context_);
if (permissions_manager) {
const DeviceInfo& device = devices_[index];
- permissions_manager->AllowUsbDevice(
- extension_->id(), device.device, device.original_product_string,
- device.original_manufacturer_string, device.serial_number);
+ permissions_manager->AllowUsbDevice(extension_->id(), device.device);
}
}
@@ -127,51 +142,19 @@ void DevicePermissionsPrompt::Prompt::set_filters(
DevicePermissionsPrompt::Prompt::~Prompt() {
}
-void DevicePermissionsPrompt::Prompt::DoDeviceQuery() {
- UsbService* service = device::DeviceClient::Get()->GetUsbService();
- if (!service) {
+void DevicePermissionsPrompt::Prompt::OnDeviceAdded(
+ scoped_refptr<UsbDevice> device) {
+ if (!(filters_.empty() || UsbDeviceFilter::MatchesAny(device, filters_))) {
return;
}
- std::vector<scoped_refptr<UsbDevice>> devices;
- service->GetDevices(&devices);
-
- std::vector<DeviceInfo> device_info;
- for (const auto& device : devices) {
- if (!(filters_.empty() || UsbDeviceFilter::MatchesAny(device, filters_))) {
- continue;
- }
-
- device_info.push_back(DeviceInfo(device));
- }
-
- if (!usb_service_observer_.IsObserving(service)) {
- usb_service_observer_.Add(service);
- }
-
- content::BrowserThread::PostTask(
- content::BrowserThread::UI,
- FROM_HERE,
- base::Bind(
- &DevicePermissionsPrompt::Prompt::SetDevices, this, device_info));
-}
-
-void DevicePermissionsPrompt::Prompt::SetDevices(
- const std::vector<DeviceInfo>& devices) {
- devices_ = devices;
- if (observer_) {
- observer_->OnDevicesChanged();
- }
-}
-
-void DevicePermissionsPrompt::Prompt::AddDevice(const DeviceInfo& device) {
- devices_.push_back(device);
+ devices_.push_back(DeviceInfo(device));
if (observer_) {
observer_->OnDevicesChanged();
}
}
-void DevicePermissionsPrompt::Prompt::RemoveDevice(
+void DevicePermissionsPrompt::Prompt::OnDeviceRemoved(
scoped_refptr<UsbDevice> device) {
bool removed_entry = false;
for (std::vector<DeviceInfo>::iterator it = devices_.begin();
@@ -187,25 +170,6 @@ void DevicePermissionsPrompt::Prompt::RemoveDevice(
}
}
-void DevicePermissionsPrompt::Prompt::OnDeviceAdded(
- scoped_refptr<UsbDevice> device) {
- if (!(filters_.empty() || UsbDeviceFilter::MatchesAny(device, filters_))) {
- return;
- }
-
- content::BrowserThread::PostTask(
- content::BrowserThread::UI, FROM_HERE,
- base::Bind(&DevicePermissionsPrompt::Prompt::AddDevice, this,
- DeviceInfo(device)));
-}
-
-void DevicePermissionsPrompt::Prompt::OnDeviceRemoved(
- scoped_refptr<UsbDevice> device) {
- content::BrowserThread::PostTask(
- content::BrowserThread::UI, FROM_HERE,
- base::Bind(&DevicePermissionsPrompt::Prompt::RemoveDevice, this, device));
-}
-
DevicePermissionsPrompt::DevicePermissionsPrompt(
content::WebContents* web_contents)
: web_contents_(web_contents), delegate_(nullptr) {

Powered by Google App Engine
This is Rietveld 408576698