| 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 "modules/webusb/USBDevice.h" | 5 #include "modules/webusb/USBDevice.h" |
| 6 | 6 |
| 7 #include "bindings/core/v8/ScriptPromise.h" | 7 #include "bindings/core/v8/ScriptPromise.h" |
| 8 #include "bindings/core/v8/ScriptPromiseResolver.h" | 8 #include "bindings/core/v8/ScriptPromiseResolver.h" |
| 9 #include "bindings/core/v8/ToV8.h" | 9 #include "bindings/core/v8/ToV8.h" |
| 10 #include "core/dom/DOMArrayBuffer.h" | 10 #include "core/dom/DOMArrayBuffer.h" |
| (...skipping 885 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 896 data ? DOMArrayBuffer::create(data->data(), data->size()) : nullptr; | 896 data ? DOMArrayBuffer::create(data->data(), data->size()) : nullptr; |
| 897 HeapVector<Member<USBIsochronousInTransferPacket>> packets; | 897 HeapVector<Member<USBIsochronousInTransferPacket>> packets; |
| 898 packets.reserveCapacity(mojoPackets.size()); | 898 packets.reserveCapacity(mojoPackets.size()); |
| 899 size_t byteOffset = 0; | 899 size_t byteOffset = 0; |
| 900 for (const auto& packet : mojoPackets) { | 900 for (const auto& packet : mojoPackets) { |
| 901 DOMException* error = convertFatalTransferStatus(packet->status); | 901 DOMException* error = convertFatalTransferStatus(packet->status); |
| 902 if (error) { | 902 if (error) { |
| 903 resolver->reject(error); | 903 resolver->reject(error); |
| 904 return; | 904 return; |
| 905 } | 905 } |
| 906 packets.append(USBIsochronousInTransferPacket::create( | 906 packets.push_back(USBIsochronousInTransferPacket::create( |
| 907 convertTransferStatus(packet->status), | 907 convertTransferStatus(packet->status), |
| 908 buffer ? DOMDataView::create(buffer, byteOffset, | 908 buffer ? DOMDataView::create(buffer, byteOffset, |
| 909 packet->transferred_length) | 909 packet->transferred_length) |
| 910 : nullptr)); | 910 : nullptr)); |
| 911 byteOffset += packet->length; | 911 byteOffset += packet->length; |
| 912 } | 912 } |
| 913 resolver->resolve(USBIsochronousInTransferResult::create(buffer, packets)); | 913 resolver->resolve(USBIsochronousInTransferResult::create(buffer, packets)); |
| 914 } | 914 } |
| 915 | 915 |
| 916 void USBDevice::asyncIsochronousTransferOut( | 916 void USBDevice::asyncIsochronousTransferOut( |
| 917 ScriptPromiseResolver* resolver, | 917 ScriptPromiseResolver* resolver, |
| 918 Vector<usb::IsochronousPacketPtr> mojoPackets) { | 918 Vector<usb::IsochronousPacketPtr> mojoPackets) { |
| 919 if (!markRequestComplete(resolver)) | 919 if (!markRequestComplete(resolver)) |
| 920 return; | 920 return; |
| 921 | 921 |
| 922 HeapVector<Member<USBIsochronousOutTransferPacket>> packets; | 922 HeapVector<Member<USBIsochronousOutTransferPacket>> packets; |
| 923 packets.reserveCapacity(mojoPackets.size()); | 923 packets.reserveCapacity(mojoPackets.size()); |
| 924 for (const auto& packet : mojoPackets) { | 924 for (const auto& packet : mojoPackets) { |
| 925 DOMException* error = convertFatalTransferStatus(packet->status); | 925 DOMException* error = convertFatalTransferStatus(packet->status); |
| 926 if (error) { | 926 if (error) { |
| 927 resolver->reject(error); | 927 resolver->reject(error); |
| 928 return; | 928 return; |
| 929 } | 929 } |
| 930 packets.append(USBIsochronousOutTransferPacket::create( | 930 packets.push_back(USBIsochronousOutTransferPacket::create( |
| 931 convertTransferStatus(packet->status), packet->transferred_length)); | 931 convertTransferStatus(packet->status), packet->transferred_length)); |
| 932 } | 932 } |
| 933 resolver->resolve(USBIsochronousOutTransferResult::create(packets)); | 933 resolver->resolve(USBIsochronousOutTransferResult::create(packets)); |
| 934 } | 934 } |
| 935 | 935 |
| 936 void USBDevice::asyncReset(ScriptPromiseResolver* resolver, bool success) { | 936 void USBDevice::asyncReset(ScriptPromiseResolver* resolver, bool success) { |
| 937 if (!markRequestComplete(resolver)) | 937 if (!markRequestComplete(resolver)) |
| 938 return; | 938 return; |
| 939 | 939 |
| 940 if (success) | 940 if (success) |
| (...skipping 18 matching lines...) Expand all Loading... |
| 959 | 959 |
| 960 bool USBDevice::markRequestComplete(ScriptPromiseResolver* resolver) { | 960 bool USBDevice::markRequestComplete(ScriptPromiseResolver* resolver) { |
| 961 auto requestEntry = m_deviceRequests.find(resolver); | 961 auto requestEntry = m_deviceRequests.find(resolver); |
| 962 if (requestEntry == m_deviceRequests.end()) | 962 if (requestEntry == m_deviceRequests.end()) |
| 963 return false; | 963 return false; |
| 964 m_deviceRequests.remove(requestEntry); | 964 m_deviceRequests.remove(requestEntry); |
| 965 return true; | 965 return true; |
| 966 } | 966 } |
| 967 | 967 |
| 968 } // namespace blink | 968 } // namespace blink |
| OLD | NEW |