| Index: Source/modules/webusb/USBDevice.cpp
|
| diff --git a/Source/modules/webusb/USBDevice.cpp b/Source/modules/webusb/USBDevice.cpp
|
| index afaa2f85ec6f41a6c805385d5ff916d8e4b0c94d..6cb2ddacce3cb66703f13cbe2f26ef7fbdc44b30 100644
|
| --- a/Source/modules/webusb/USBDevice.cpp
|
| +++ b/Source/modules/webusb/USBDevice.cpp
|
| @@ -72,6 +72,29 @@ String convertTransferStatus(const WebUSBTransferInfo::Status& status)
|
| }
|
| }
|
|
|
| +class GetConfigurationPromiseAdapter : public WebCallbacks<uint8_t, const WebUSBError&> {
|
| +public:
|
| + GetConfigurationPromiseAdapter(USBDevice* device, ScriptPromiseResolver* resolver) : m_device(device), m_resolver(resolver) {}
|
| +
|
| + void onSuccess(uint8_t value) override
|
| + {
|
| + if (!m_resolver->executionContext() || m_resolver->executionContext()->activeDOMObjectsAreStopped())
|
| + return;
|
| + m_resolver->resolve(USBConfiguration::createFromValue(m_device, value));
|
| + }
|
| +
|
| + void onError(const WebUSBError& e) override
|
| + {
|
| + if (!m_resolver->executionContext() || m_resolver->executionContext()->activeDOMObjectsAreStopped())
|
| + return;
|
| + m_resolver->reject(USBError::take(m_resolver, e));
|
| + }
|
| +
|
| +private:
|
| + Persistent<USBDevice> m_device;
|
| + Persistent<ScriptPromiseResolver> m_resolver;
|
| +};
|
| +
|
| class InputTransferResult {
|
| WTF_MAKE_NONCOPYABLE(InputTransferResult);
|
| public:
|
| @@ -152,6 +175,14 @@ ScriptPromise USBDevice::close(ScriptState* scriptState)
|
| return promise;
|
| }
|
|
|
| +ScriptPromise USBDevice::getConfiguration(ScriptState* scriptState)
|
| +{
|
| + ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState);
|
| + ScriptPromise promise = resolver->promise();
|
| + m_device->getConfiguration(new GetConfigurationPromiseAdapter(this, resolver));
|
| + return promise;
|
| +}
|
| +
|
| ScriptPromise USBDevice::setConfiguration(ScriptState* scriptState, uint8_t configurationValue)
|
| {
|
| ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState);
|
|
|