| Index: third_party/WebKit/Source/modules/webusb/USBDevice.cpp
|
| diff --git a/third_party/WebKit/Source/modules/webusb/USBDevice.cpp b/third_party/WebKit/Source/modules/webusb/USBDevice.cpp
|
| index b06aa07706fb1d4cd8379fa26f054cf35dd5d49a..0c34275ac052ef9993988b07e7fa9e0a8367f3d6 100644
|
| --- a/third_party/WebKit/Source/modules/webusb/USBDevice.cpp
|
| +++ b/third_party/WebKit/Source/modules/webusb/USBDevice.cpp
|
| @@ -149,7 +149,7 @@ ScriptPromise USBDevice::open(ScriptState* scriptState)
|
| } else {
|
| m_deviceStateChangeInProgress = true;
|
| m_deviceRequests.add(resolver);
|
| - m_device->Open(createBaseCallback(bind<usb::OpenDeviceError>(&USBDevice::asyncOpen, this, resolver)));
|
| + m_device->Open(createBaseCallback(bind<usb::OpenDeviceError>(&USBDevice::asyncOpen, retainedRef(this), retainedRef(resolver))));
|
| }
|
| }
|
| return promise;
|
| @@ -165,7 +165,7 @@ ScriptPromise USBDevice::close(ScriptState* scriptState)
|
| } else {
|
| m_deviceStateChangeInProgress = true;
|
| m_deviceRequests.add(resolver);
|
| - m_device->Close(createBaseCallback(bind(&USBDevice::asyncClose, this, resolver)));
|
| + m_device->Close(createBaseCallback(bind(&USBDevice::asyncClose, retainedRef(this), retainedRef(resolver))));
|
| }
|
| }
|
| return promise;
|
| @@ -187,7 +187,7 @@ ScriptPromise USBDevice::selectConfiguration(ScriptState* scriptState, uint8_t c
|
| } else {
|
| m_deviceStateChangeInProgress = true;
|
| m_deviceRequests.add(resolver);
|
| - m_device->SetConfiguration(configurationValue, createBaseCallback(bind<bool>(&USBDevice::asyncSelectConfiguration, this, configurationIndex, resolver)));
|
| + m_device->SetConfiguration(configurationValue, createBaseCallback(bind<bool>(&USBDevice::asyncSelectConfiguration, retainedRef(this), configurationIndex, retainedRef(resolver))));
|
| }
|
| }
|
| }
|
| @@ -209,7 +209,7 @@ ScriptPromise USBDevice::claimInterface(ScriptState* scriptState, uint8_t interf
|
| } else {
|
| m_interfaceStateChangeInProgress.set(interfaceIndex);
|
| m_deviceRequests.add(resolver);
|
| - m_device->ClaimInterface(interfaceNumber, createBaseCallback(bind<bool>(&USBDevice::asyncClaimInterface, this, interfaceIndex, resolver)));
|
| + m_device->ClaimInterface(interfaceNumber, createBaseCallback(bind<bool>(&USBDevice::asyncClaimInterface, retainedRef(this), interfaceIndex, retainedRef(resolver))));
|
| }
|
| }
|
| return promise;
|
| @@ -233,7 +233,7 @@ ScriptPromise USBDevice::releaseInterface(ScriptState* scriptState, uint8_t inte
|
| setEndpointsForInterface(interfaceIndex, false);
|
| m_interfaceStateChangeInProgress.set(interfaceIndex);
|
| m_deviceRequests.add(resolver);
|
| - m_device->ReleaseInterface(interfaceNumber, createBaseCallback(bind<bool>(&USBDevice::asyncReleaseInterface, this, interfaceIndex, resolver)));
|
| + m_device->ReleaseInterface(interfaceNumber, createBaseCallback(bind<bool>(&USBDevice::asyncReleaseInterface, retainedRef(this), interfaceIndex, retainedRef(resolver))));
|
| }
|
| }
|
| return promise;
|
| @@ -256,7 +256,7 @@ ScriptPromise USBDevice::selectAlternateInterface(ScriptState* scriptState, uint
|
| setEndpointsForInterface(interfaceIndex, false);
|
| m_interfaceStateChangeInProgress.set(interfaceIndex);
|
| m_deviceRequests.add(resolver);
|
| - m_device->SetInterfaceAlternateSetting(interfaceNumber, alternateSetting, createBaseCallback(bind<bool>(&USBDevice::asyncSelectAlternateInterface, this, interfaceNumber, alternateSetting, resolver)));
|
| + m_device->SetInterfaceAlternateSetting(interfaceNumber, alternateSetting, createBaseCallback(bind<bool>(&USBDevice::asyncSelectAlternateInterface, retainedRef(this), interfaceNumber, alternateSetting, retainedRef(resolver))));
|
| }
|
| }
|
| return promise;
|
| @@ -270,7 +270,7 @@ ScriptPromise USBDevice::controlTransferIn(ScriptState* scriptState, const USBCo
|
| auto parameters = convertControlTransferParameters(setup, resolver);
|
| if (parameters) {
|
| m_deviceRequests.add(resolver);
|
| - m_device->ControlTransferIn(std::move(parameters), length, 0, createBaseCallback(bind<usb::TransferStatus, mojo::WTFArray<uint8_t>>(&USBDevice::asyncControlTransferIn, this, resolver)));
|
| + m_device->ControlTransferIn(std::move(parameters), length, 0, createBaseCallback(bind<usb::TransferStatus, mojo::WTFArray<uint8_t>>(&USBDevice::asyncControlTransferIn, retainedRef(this), retainedRef(resolver))));
|
| }
|
| }
|
| return promise;
|
| @@ -284,7 +284,7 @@ ScriptPromise USBDevice::controlTransferOut(ScriptState* scriptState, const USBC
|
| auto parameters = convertControlTransferParameters(setup, resolver);
|
| if (parameters) {
|
| m_deviceRequests.add(resolver);
|
| - m_device->ControlTransferOut(std::move(parameters), mojo::WTFArray<uint8_t>(), 0, createBaseCallback(bind<usb::TransferStatus>(&USBDevice::asyncControlTransferOut, this, 0, resolver)));
|
| + m_device->ControlTransferOut(std::move(parameters), mojo::WTFArray<uint8_t>(), 0, createBaseCallback(bind<usb::TransferStatus>(&USBDevice::asyncControlTransferOut, retainedRef(this), 0, retainedRef(resolver))));
|
| }
|
| }
|
| return promise;
|
| @@ -300,7 +300,7 @@ ScriptPromise USBDevice::controlTransferOut(ScriptState* scriptState, const USBC
|
| mojo::WTFArray<uint8_t> buffer = convertBufferSource(data);
|
| unsigned transferLength = buffer.size();
|
| m_deviceRequests.add(resolver);
|
| - m_device->ControlTransferOut(std::move(parameters), std::move(buffer), 0, createBaseCallback(bind<usb::TransferStatus>(&USBDevice::asyncControlTransferOut, this, transferLength, resolver)));
|
| + m_device->ControlTransferOut(std::move(parameters), std::move(buffer), 0, createBaseCallback(bind<usb::TransferStatus>(&USBDevice::asyncControlTransferOut, retainedRef(this), transferLength, retainedRef(resolver))));
|
| }
|
| }
|
| return promise;
|
| @@ -312,7 +312,7 @@ ScriptPromise USBDevice::clearHalt(ScriptState* scriptState, String direction, u
|
| ScriptPromise promise = resolver->promise();
|
| if (ensureEndpointAvailable(direction == "in", endpointNumber, resolver)) {
|
| m_deviceRequests.add(resolver);
|
| - m_device->ClearHalt(endpointNumber, createBaseCallback(bind<bool>(&USBDevice::asyncClearHalt, this, resolver)));
|
| + m_device->ClearHalt(endpointNumber, createBaseCallback(bind<bool>(&USBDevice::asyncClearHalt, retainedRef(this), retainedRef(resolver))));
|
| }
|
| return promise;
|
| }
|
| @@ -323,7 +323,7 @@ ScriptPromise USBDevice::transferIn(ScriptState* scriptState, uint8_t endpointNu
|
| ScriptPromise promise = resolver->promise();
|
| if (ensureEndpointAvailable(true /* in */, endpointNumber, resolver)) {
|
| m_deviceRequests.add(resolver);
|
| - m_device->GenericTransferIn(endpointNumber, length, 0, createBaseCallback(bind<usb::TransferStatus, mojo::WTFArray<uint8_t>>(&USBDevice::asyncTransferIn, this, resolver)));
|
| + m_device->GenericTransferIn(endpointNumber, length, 0, createBaseCallback(bind<usb::TransferStatus, mojo::WTFArray<uint8_t>>(&USBDevice::asyncTransferIn, retainedRef(this), retainedRef(resolver))));
|
| }
|
| return promise;
|
| }
|
| @@ -336,7 +336,7 @@ ScriptPromise USBDevice::transferOut(ScriptState* scriptState, uint8_t endpointN
|
| mojo::WTFArray<uint8_t> buffer = convertBufferSource(data);
|
| unsigned transferLength = buffer.size();
|
| m_deviceRequests.add(resolver);
|
| - m_device->GenericTransferOut(endpointNumber, std::move(buffer), 0, createBaseCallback(bind<usb::TransferStatus>(&USBDevice::asyncTransferOut, this, transferLength, resolver)));
|
| + m_device->GenericTransferOut(endpointNumber, std::move(buffer), 0, createBaseCallback(bind<usb::TransferStatus>(&USBDevice::asyncTransferOut, retainedRef(this), transferLength, retainedRef(resolver))));
|
| }
|
| return promise;
|
| }
|
| @@ -347,7 +347,7 @@ ScriptPromise USBDevice::isochronousTransferIn(ScriptState* scriptState, uint8_t
|
| ScriptPromise promise = resolver->promise();
|
| if (ensureEndpointAvailable(true /* in */, endpointNumber, resolver)) {
|
| m_deviceRequests.add(resolver);
|
| - m_device->IsochronousTransferIn(endpointNumber, mojo::WTFArray<uint32_t>(std::move(packetLengths)), 0, createBaseCallback(bind<mojo::WTFArray<uint8_t>, mojo::WTFArray<usb::IsochronousPacketPtr>>(&USBDevice::asyncIsochronousTransferIn, this, resolver)));
|
| + m_device->IsochronousTransferIn(endpointNumber, mojo::WTFArray<uint32_t>(std::move(packetLengths)), 0, createBaseCallback(bind<mojo::WTFArray<uint8_t>, mojo::WTFArray<usb::IsochronousPacketPtr>>(&USBDevice::asyncIsochronousTransferIn, retainedRef(this), retainedRef(resolver))));
|
| }
|
| return promise;
|
| }
|
| @@ -358,7 +358,7 @@ ScriptPromise USBDevice::isochronousTransferOut(ScriptState* scriptState, uint8_
|
| ScriptPromise promise = resolver->promise();
|
| if (ensureEndpointAvailable(false /* out */, endpointNumber, resolver)) {
|
| m_deviceRequests.add(resolver);
|
| - m_device->IsochronousTransferOut(endpointNumber, convertBufferSource(data), mojo::WTFArray<uint32_t>(std::move(packetLengths)), 0, createBaseCallback(bind<mojo::WTFArray<usb::IsochronousPacketPtr>>(&USBDevice::asyncIsochronousTransferOut, this, resolver)));
|
| + m_device->IsochronousTransferOut(endpointNumber, convertBufferSource(data), mojo::WTFArray<uint32_t>(std::move(packetLengths)), 0, createBaseCallback(bind<mojo::WTFArray<usb::IsochronousPacketPtr>>(&USBDevice::asyncIsochronousTransferOut, retainedRef(this), retainedRef(resolver))));
|
| }
|
| return promise;
|
| }
|
| @@ -372,7 +372,7 @@ ScriptPromise USBDevice::reset(ScriptState* scriptState)
|
| resolver->reject(DOMException::create(InvalidStateError, kOpenRequired));
|
| } else {
|
| m_deviceRequests.add(resolver);
|
| - m_device->Reset(createBaseCallback(bind<bool>(&USBDevice::asyncReset, this, resolver)));
|
| + m_device->Reset(createBaseCallback(bind<bool>(&USBDevice::asyncReset, retainedRef(this), retainedRef(resolver))));
|
| }
|
| }
|
| return promise;
|
|
|