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

Unified Diff: content/renderer/usb/web_usb_client_impl.cc

Issue 1404213004: Reland: Add webusb permission bubble mojom (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@webusb_permission_ui_1_refactor_permission_bubble_manager
Patch Set: updated webusb.gypi dependencies again Created 5 years, 2 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
« no previous file with comments | « content/renderer/usb/web_usb_client_impl.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/renderer/usb/web_usb_client_impl.cc
diff --git a/content/renderer/usb/web_usb_client_impl.cc b/content/renderer/usb/web_usb_client_impl.cc
index fc87597e8c53ee16d0e4e1341f047032ed07c6de..5ece47176831e87878ef90183ea427a03b9a9aa2 100644
--- a/content/renderer/usb/web_usb_client_impl.cc
+++ b/content/renderer/usb/web_usb_client_impl.cc
@@ -9,6 +9,7 @@
#include "base/memory/scoped_ptr.h"
#include "base/move.h"
#include "base/strings/utf_string_conversions.h"
+#include "content/child/mojo/type_converters.h"
#include "content/child/scoped_web_callbacks.h"
#include "content/public/common/service_registry.h"
#include "content/renderer/usb/type_converters.h"
@@ -64,6 +65,24 @@ void OnGetDevicesComplete(
scoped_callbacks.PassCallbacks()->onSuccess(blink::adoptWebPtr(devices));
}
+void OnRequestDevicesComplete(
+ ScopedWebCallbacks<blink::WebUSBClientRequestDeviceCallbacks> callbacks,
+ device::usb::DeviceManager* device_manager,
+ device::usb::DeviceInfoPtr result) {
+ auto scoped_callbacks = callbacks.PassCallbacks();
+ if (result) {
+ device::usb::DevicePtr device;
+ device_manager->GetDevice(result->guid, mojo::GetProxy(&device));
+ blink::WebUSBDevice* web_usb_device = new WebUSBDeviceImpl(
+ device.Pass(), mojo::ConvertTo<blink::WebUSBDeviceInfo>(result));
+
+ scoped_callbacks->onSuccess(blink::adoptWebPtr(web_usb_device));
+ } else {
+ scoped_callbacks->onSuccess(
+ blink::adoptWebPtr<blink::WebUSBDevice>(nullptr));
+ }
+}
+
} // namespace
WebUSBClientImpl::WebUSBClientImpl(content::ServiceRegistry* service_registry)
@@ -83,9 +102,20 @@ void WebUSBClientImpl::getDevices(
void WebUSBClientImpl::requestDevice(
const blink::WebUSBDeviceRequestOptions& options,
blink::WebUSBClientRequestDeviceCallbacks* callbacks) {
- callbacks->onError(blink::WebUSBError(blink::WebUSBError::Error::Service,
- base::UTF8ToUTF16("Not implemented.")));
- delete callbacks;
+ if (!webusb_permission_bubble_) {
+ service_registry_->ConnectToRemoteService(
+ mojo::GetProxy(&webusb_permission_bubble_));
+ }
+
+ auto scoped_callbacks = MakeScopedUSBCallbacks(callbacks);
+
+ mojo::Array<device::usb::DeviceFilterPtr> device_filters =
+ mojo::Array<device::usb::DeviceFilterPtr>::From(options.filters);
+
+ webusb_permission_bubble_->GetPermission(
+ device_filters.Pass(),
+ base::Bind(&OnRequestDevicesComplete, base::Passed(&scoped_callbacks),
+ base::Unretained(device_manager_.get())));
}
void WebUSBClientImpl::setObserver(Observer* observer) {
« no previous file with comments | « content/renderer/usb/web_usb_client_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698