1 // Copyright 2019 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_NETWORK_ENCODED_FORM_DATA_ELEMENT_MOJOM_TRAITS_H_ 6 #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_NETWORK_ENCODED_FORM_DATA_ELEMENT_MOJOM_TRAITS_H_ 7 8 #include "mojo/public/cpp/bindings/pending_remote.h" 9 #include "services/network/public/mojom/url_loader.mojom-blink-forward.h" 10 #include "third_party/blink/public/mojom/fetch/fetch_api_request.mojom-blink.h" 11 #include "third_party/blink/renderer/platform/network/encoded_form_data.h" 12 13 namespace mojo { 14 15 template <> 16 struct PLATFORM_EXPORT StructTraits<blink::mojom::FetchAPIDataElementDataView, 17 blink::FormDataElement> { 18 static network::mojom::DataElementType type( 19 const blink::FormDataElement& data); 20 21 static base::span<const uint8_t> buf(const blink::FormDataElement& data); 22 23 static base::File file(const blink::FormDataElement& data); 24 25 static base::FilePath path(const blink::FormDataElement& data); 26 27 static const WTF::String& blob_uuid(const blink::FormDataElement& data) { 28 return data.blob_uuid_; 29 } 30 31 static mojo::PendingRemote<network::mojom::blink::DataPipeGetter> 32 data_pipe_getter(const blink::FormDataElement& data); 33 34 static mojo::PendingRemote<network::mojom::blink::ChunkedDataPipeGetter> 35 chunked_data_pipe_getter(const blink::FormDataElement& data) { 36 return mojo::NullRemote(); 37 } 38 39 static uint64_t offset(const blink::FormDataElement& data) { 40 return data.file_start_; 41 } 42 43 static uint64_t length(const blink::FormDataElement& data) { 44 if (data.type_ == blink::FormDataElement::kEncodedBlob && 45 data.optional_blob_data_handle_) { 46 return data.optional_blob_data_handle_->size(); 47 } 48 return data.file_length_; 49 } 50 51 static base::Time expected_modification_time( 52 const blink::FormDataElement& data); 53 54 static bool Read(blink::mojom::FetchAPIDataElementDataView data, 55 blink::FormDataElement* out); 56 }; 57 58 } // namespace mojo 59 60 #endif // THIRD_PARTY_BLINK_RENDERER_PLATFORM_NETWORK_ENCODED_FORM_DATA_ELEMENT_MOJOM_TRAITS_H_ 61