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 |