| Index: device/usb/mojo/device_impl.cc
|
| diff --git a/device/usb/mojo/device_impl.cc b/device/usb/mojo/device_impl.cc
|
| index 5f7d1937a0a40a0b9c4e345dd37daca0964d52a0..6269b05bae419e7d01fbec5d3bc2a52c9f70fc61 100644
|
| --- a/device/usb/mojo/device_impl.cc
|
| +++ b/device/usb/mojo/device_impl.cc
|
| @@ -27,30 +27,9 @@ namespace usb {
|
| namespace {
|
|
|
| using MojoTransferInCallback =
|
| - mojo::Callback<void(TransferStatus, mojo::Array<uint8_t>)>;
|
| + base::Callback<void(TransferStatus, mojo::Array<uint8_t>)>;
|
|
|
| -using MojoTransferOutCallback = mojo::Callback<void(TransferStatus)>;
|
| -
|
| -template <typename... Args>
|
| -void CallMojoCallback(std::unique_ptr<mojo::Callback<void(Args...)>> callback,
|
| - Args... args) {
|
| - callback->Run(args...);
|
| -}
|
| -
|
| -// Generic wrapper to convert a Mojo callback to something we can rebind and
|
| -// pass around. This is only usable for callbacks with no move-only arguments.
|
| -template <typename... Args>
|
| -base::Callback<void(Args...)> WrapMojoCallback(
|
| - const mojo::Callback<void(Args...)>& callback) {
|
| - // mojo::Callback is not thread safe. By wrapping |callback| in a scoped_ptr
|
| - // we guarantee that it will be freed when CallMojoCallback is run and not
|
| - // retained until the base::Callback is destroyed, which could happen on any
|
| - // thread. This pattern is also used below in places where this generic
|
| - // wrapper is not used.
|
| - auto callback_ptr =
|
| - base::WrapUnique(new mojo::Callback<void(Args...)>(callback));
|
| - return base::Bind(&CallMojoCallback<Args...>, base::Passed(&callback_ptr));
|
| -}
|
| +using MojoTransferOutCallback = base::Callback<void(TransferStatus)>;
|
|
|
| scoped_refptr<net::IOBuffer> CreateTransferBuffer(size_t size) {
|
| scoped_refptr<net::IOBuffer> buffer = new net::IOBuffer(
|
| @@ -257,7 +236,7 @@ void DeviceImpl::SetConfiguration(uint8_t value,
|
|
|
| if (permission_provider_ &&
|
| permission_provider_->HasConfigurationPermission(value, device_)) {
|
| - device_handle_->SetConfiguration(value, WrapMojoCallback(callback));
|
| + device_handle_->SetConfiguration(value, callback);
|
| } else {
|
| callback.Run(false);
|
| }
|
| @@ -290,8 +269,7 @@ void DeviceImpl::ClaimInterface(uint8_t interface_number,
|
| permission_provider_->HasFunctionPermission(interface_it->first_interface,
|
| config->configuration_value,
|
| device_)) {
|
| - device_handle_->ClaimInterface(interface_number,
|
| - WrapMojoCallback(callback));
|
| + device_handle_->ClaimInterface(interface_number, callback);
|
| } else {
|
| callback.Run(false);
|
| }
|
| @@ -304,8 +282,7 @@ void DeviceImpl::ReleaseInterface(uint8_t interface_number,
|
| return;
|
| }
|
|
|
| - device_handle_->ReleaseInterface(interface_number,
|
| - WrapMojoCallback(callback));
|
| + device_handle_->ReleaseInterface(interface_number, callback);
|
| }
|
|
|
| void DeviceImpl::SetInterfaceAlternateSetting(
|
| @@ -317,8 +294,8 @@ void DeviceImpl::SetInterfaceAlternateSetting(
|
| return;
|
| }
|
|
|
| - device_handle_->SetInterfaceAlternateSetting(
|
| - interface_number, alternate_setting, WrapMojoCallback(callback));
|
| + device_handle_->SetInterfaceAlternateSetting(interface_number,
|
| + alternate_setting, callback);
|
| }
|
|
|
| void DeviceImpl::Reset(const ResetCallback& callback) {
|
| @@ -327,7 +304,7 @@ void DeviceImpl::Reset(const ResetCallback& callback) {
|
| return;
|
| }
|
|
|
| - device_handle_->ResetDevice(WrapMojoCallback(callback));
|
| + device_handle_->ResetDevice(callback);
|
| }
|
|
|
| void DeviceImpl::ClearHalt(uint8_t endpoint,
|
| @@ -337,7 +314,7 @@ void DeviceImpl::ClearHalt(uint8_t endpoint,
|
| return;
|
| }
|
|
|
| - device_handle_->ClearHalt(endpoint, WrapMojoCallback(callback));
|
| + device_handle_->ClearHalt(endpoint, callback);
|
| }
|
|
|
| void DeviceImpl::ControlTransferIn(ControlTransferParamsPtr params,
|
|
|