| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "content/renderer/usb/web_usb_device_impl.h" | 5 #include "content/renderer/usb/web_usb_device_impl.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/callback.h" | 8 #include "base/callback.h" |
| 9 #include "base/strings/utf_string_conversions.h" | 9 #include "base/strings/utf_string_conversions.h" |
| 10 #include "content/child/scoped_web_callbacks.h" | 10 #include "content/child/scoped_web_callbacks.h" |
| 11 #include "content/renderer/usb/type_converters.h" | 11 #include "content/renderer/usb/type_converters.h" |
| 12 #include "device/devices_app/public/cpp/constants.h" | 12 #include "device/devices_app/public/cpp/constants.h" |
| 13 #include "mojo/application/public/cpp/connect.h" | 13 #include "mojo/application/public/cpp/connect.h" |
| 14 #include "mojo/application/public/interfaces/shell.mojom.h" | 14 #include "mojo/application/public/interfaces/shell.mojom.h" |
| 15 #include "third_party/WebKit/public/platform/WebVector.h" | 15 #include "third_party/WebKit/public/platform/WebVector.h" |
| 16 #include "third_party/WebKit/public/platform/modules/webusb/WebUSBDeviceInfo.h" | 16 #include "third_party/WebKit/public/platform/modules/webusb/WebUSBDeviceInfo.h" |
| 17 #include "third_party/WebKit/public/platform/modules/webusb/WebUSBTransferInfo.h
" | 17 #include "third_party/WebKit/public/platform/modules/webusb/WebUSBTransferInfo.h
" |
| 18 | 18 |
| 19 namespace content { | 19 namespace content { |
| 20 | 20 |
| 21 namespace { | 21 namespace { |
| 22 | 22 |
| 23 const char kClaimInterfaceFailed[] = "Unable to claim interface."; | 23 const char kClaimInterfaceFailed[] = "Unable to claim interface."; |
| 24 const char kClearHaltFailed[] = "Unable to clear endpoint."; | 24 const char kClearHaltFailed[] = "Unable to clear endpoint."; |
| 25 const char kDeviceNoAccess[] = "Access denied."; | 25 const char kDeviceNoAccess[] = "Access denied."; |
| 26 const char kDeviceNotConfigured[] = "Device not configured."; |
| 26 const char kDeviceNotOpened[] = "Device not opened."; | 27 const char kDeviceNotOpened[] = "Device not opened."; |
| 27 const char kDeviceUnavailable[] = "Device unavailable."; | 28 const char kDeviceUnavailable[] = "Device unavailable."; |
| 28 const char kDeviceResetFailed[] = "Unable to reset the device."; | 29 const char kDeviceResetFailed[] = "Unable to reset the device."; |
| 29 const char kReleaseInterfaceFailed[] = "Unable to release interface."; | 30 const char kReleaseInterfaceFailed[] = "Unable to release interface."; |
| 30 const char kSetConfigurationFailed[] = "Unable to set device configuration."; | 31 const char kSetConfigurationFailed[] = "Unable to set device configuration."; |
| 31 const char kSetInterfaceFailed[] = "Unable to set device interface."; | 32 const char kSetInterfaceFailed[] = "Unable to set device interface."; |
| 32 const char kTransferFailed[] = "Transfer failed."; | 33 const char kTransferFailed[] = "Transfer failed."; |
| 33 | 34 |
| 34 // Generic default rejection handler for any WebUSB callbacks type. Assumes | 35 // Generic default rejection handler for any WebUSB callbacks type. Assumes |
| 35 // |CallbacksType| is a blink::WebCallbacks<T, const blink::WebUSBError&> | 36 // |CallbacksType| is a blink::WebCallbacks<T, const blink::WebUSBError&> |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 83 default: | 84 default: |
| 84 NOTREACHED(); | 85 NOTREACHED(); |
| 85 } | 86 } |
| 86 } | 87 } |
| 87 | 88 |
| 88 void OnDeviceClosed( | 89 void OnDeviceClosed( |
| 89 ScopedWebCallbacks<blink::WebUSBDeviceCloseCallbacks> callbacks) { | 90 ScopedWebCallbacks<blink::WebUSBDeviceCloseCallbacks> callbacks) { |
| 90 callbacks.PassCallbacks()->onSuccess(); | 91 callbacks.PassCallbacks()->onSuccess(); |
| 91 } | 92 } |
| 92 | 93 |
| 94 void OnGetConfiguration( |
| 95 ScopedWebCallbacks<blink::WebUSBDeviceGetConfigurationCallbacks> callbacks, |
| 96 uint8_t configuration_value) { |
| 97 auto scoped_callbacks = callbacks.PassCallbacks(); |
| 98 if (configuration_value == 0) |
| 99 RejectWithDeviceError(kDeviceNotConfigured, scoped_callbacks.Pass()); |
| 100 else |
| 101 scoped_callbacks->onSuccess(configuration_value); |
| 102 } |
| 103 |
| 93 void HandlePassFailDeviceOperation( | 104 void HandlePassFailDeviceOperation( |
| 94 ScopedWebCallbacks<blink::WebCallbacks<void, const blink::WebUSBError&>> | 105 ScopedWebCallbacks<blink::WebCallbacks<void, const blink::WebUSBError&>> |
| 95 callbacks, | 106 callbacks, |
| 96 const std::string& failure_message, | 107 const std::string& failure_message, |
| 97 bool success) { | 108 bool success) { |
| 98 auto scoped_callbacks = callbacks.PassCallbacks(); | 109 auto scoped_callbacks = callbacks.PassCallbacks(); |
| 99 if (success) | 110 if (success) |
| 100 scoped_callbacks->onSuccess(); | 111 scoped_callbacks->onSuccess(); |
| 101 else | 112 else |
| 102 RejectWithDeviceError(failure_message, scoped_callbacks.Pass()); | 113 RejectWithDeviceError(failure_message, scoped_callbacks.Pass()); |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 164 void WebUSBDeviceImpl::close(blink::WebUSBDeviceCloseCallbacks* callbacks) { | 175 void WebUSBDeviceImpl::close(blink::WebUSBDeviceCloseCallbacks* callbacks) { |
| 165 auto scoped_callbacks = MakeScopedUSBCallbacks(callbacks); | 176 auto scoped_callbacks = MakeScopedUSBCallbacks(callbacks); |
| 166 if (!device_) { | 177 if (!device_) { |
| 167 RejectWithDeviceError(kDeviceNotOpened, scoped_callbacks.PassCallbacks()); | 178 RejectWithDeviceError(kDeviceNotOpened, scoped_callbacks.PassCallbacks()); |
| 168 } else { | 179 } else { |
| 169 device_->Close( | 180 device_->Close( |
| 170 base::Bind(&OnDeviceClosed, base::Passed(&scoped_callbacks))); | 181 base::Bind(&OnDeviceClosed, base::Passed(&scoped_callbacks))); |
| 171 } | 182 } |
| 172 } | 183 } |
| 173 | 184 |
| 185 void WebUSBDeviceImpl::getConfiguration( |
| 186 blink::WebUSBDeviceGetConfigurationCallbacks* callbacks) { |
| 187 auto scoped_callbacks = MakeScopedUSBCallbacks(callbacks); |
| 188 if (!device_) { |
| 189 RejectWithDeviceError(kDeviceNotOpened, scoped_callbacks.PassCallbacks()); |
| 190 } else { |
| 191 device_->GetConfiguration( |
| 192 base::Bind(&OnGetConfiguration, base::Passed(&scoped_callbacks))); |
| 193 } |
| 194 } |
| 195 |
| 174 void WebUSBDeviceImpl::setConfiguration( | 196 void WebUSBDeviceImpl::setConfiguration( |
| 175 uint8_t configuration_value, | 197 uint8_t configuration_value, |
| 176 blink::WebUSBDeviceSetConfigurationCallbacks* callbacks) { | 198 blink::WebUSBDeviceSetConfigurationCallbacks* callbacks) { |
| 177 auto scoped_callbacks = MakeScopedUSBCallbacks(callbacks); | 199 auto scoped_callbacks = MakeScopedUSBCallbacks(callbacks); |
| 178 if (!device_) { | 200 if (!device_) { |
| 179 RejectWithDeviceError(kDeviceNotOpened, scoped_callbacks.PassCallbacks()); | 201 RejectWithDeviceError(kDeviceNotOpened, scoped_callbacks.PassCallbacks()); |
| 180 } else { | 202 } else { |
| 181 device_->SetConfiguration( | 203 device_->SetConfiguration( |
| 182 configuration_value, | 204 configuration_value, |
| 183 base::Bind(&HandlePassFailDeviceOperation, | 205 base::Bind(&HandlePassFailDeviceOperation, |
| (...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 316 if (!device_) { | 338 if (!device_) { |
| 317 RejectWithDeviceError(kDeviceNotOpened, scoped_callbacks.PassCallbacks()); | 339 RejectWithDeviceError(kDeviceNotOpened, scoped_callbacks.PassCallbacks()); |
| 318 } else { | 340 } else { |
| 319 device_->Reset( | 341 device_->Reset( |
| 320 base::Bind(&HandlePassFailDeviceOperation, | 342 base::Bind(&HandlePassFailDeviceOperation, |
| 321 base::Passed(&scoped_callbacks), kDeviceResetFailed)); | 343 base::Passed(&scoped_callbacks), kDeviceResetFailed)); |
| 322 } | 344 } |
| 323 } | 345 } |
| 324 | 346 |
| 325 } // namespace content | 347 } // namespace content |
| OLD | NEW |