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

Unified Diff: chrome/browser/extensions/api/usb/usb_api.cc

Issue 10919201: Make sure that a given app/extension requests only its own resources. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Improve tests; fix merge conflicts. Created 8 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: chrome/browser/extensions/api/usb/usb_api.cc
diff --git a/chrome/browser/extensions/api/usb/usb_api.cc b/chrome/browser/extensions/api/usb/usb_api.cc
index 71e4c32dcce2725722f3febefdef1736e4dc1368..b125afbdd23302b214a81e73664336859c06a102 100644
--- a/chrome/browser/extensions/api/usb/usb_api.cc
+++ b/chrome/browser/extensions/api/usb/usb_api.cc
@@ -45,6 +45,15 @@ bool UsbAsyncApiFunction::PrePrepare() {
return manager_ != NULL;
}
+UsbDeviceResource* UsbAsyncApiFunction::GetUsbDeviceResource(
+ int api_resource_id) {
+ return manager_->Get(extension_->id(), api_resource_id);
+}
+
+void UsbAsyncApiFunction::RemoveUsbDeviceResource(int api_resource_id) {
+ manager_->Remove(extension_->id(), api_resource_id);
+}
+
UsbFindDeviceFunction::UsbFindDeviceFunction() : event_notifier_(NULL) {}
UsbFindDeviceFunction::~UsbFindDeviceFunction() {}
@@ -76,7 +85,8 @@ void UsbFindDeviceFunction::Work() {
return;
}
- UsbDeviceResource* const resource = new UsbDeviceResource(event_notifier_,
+ UsbDeviceResource* const resource = new UsbDeviceResource(extension_->id(),
+ event_notifier_,
device);
Device result;
@@ -101,11 +111,13 @@ bool UsbCloseDeviceFunction::Prepare() {
}
void UsbCloseDeviceFunction::Work() {
- UsbDeviceResource* const device = manager_->Get(parameters_->device.handle);
+ UsbDeviceResource* const device = GetUsbDeviceResource(
+ parameters_->device.handle);
+
if (device)
device->Close();
- manager_->Remove(parameters_->device.handle);
+ RemoveUsbDeviceResource(parameters_->device.handle);
}
bool UsbCloseDeviceFunction::Respond() {
@@ -123,7 +135,9 @@ bool UsbControlTransferFunction::Prepare() {
}
void UsbControlTransferFunction::Work() {
- UsbDeviceResource* const device = manager_->Get(parameters_->device.handle);
+ UsbDeviceResource* const device = GetUsbDeviceResource(
+ parameters_->device.handle);
+
if (device) {
device->ControlTransfer(parameters_->transfer_info);
}
@@ -144,7 +158,9 @@ UsbBulkTransferFunction::UsbBulkTransferFunction() {}
UsbBulkTransferFunction::~UsbBulkTransferFunction() {}
void UsbBulkTransferFunction::Work() {
- UsbDeviceResource* const device = manager_->Get(parameters_->device.handle);
+ UsbDeviceResource* const device = GetUsbDeviceResource(
+ parameters_->device.handle);
+
if (device) {
device->BulkTransfer(parameters_->transfer_info);
}
@@ -165,7 +181,9 @@ bool UsbInterruptTransferFunction::Prepare() {
}
void UsbInterruptTransferFunction::Work() {
- UsbDeviceResource* const device = manager_->Get(parameters_->device.handle);
+ UsbDeviceResource* const device = GetUsbDeviceResource(
+ parameters_->device.handle);
+
if (device) {
device->InterruptTransfer(parameters_->transfer_info);
}
@@ -186,7 +204,9 @@ bool UsbIsochronousTransferFunction::Prepare() {
}
void UsbIsochronousTransferFunction::Work() {
- UsbDeviceResource* const device = manager_->Get(parameters_->device.handle);
+ UsbDeviceResource* const device = GetUsbDeviceResource(
+ parameters_->device.handle);
+
if (device) {
device->IsochronousTransfer(parameters_->transfer_info);
}
« no previous file with comments | « chrome/browser/extensions/api/usb/usb_api.h ('k') | chrome/browser/extensions/api/usb/usb_device_resource.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698