| // Copyright 2017 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| module blink.mojom; |
| |
| import "services/network/public/mojom/data_pipe_getter.mojom"; |
| import "services/network/public/mojom/http_request_headers.mojom"; |
| |
| // Interface that can be implemented to be informed of certain information while |
| // reading the data for a blob. |
| interface BlobReaderClient { |
| // Called when the size of the blob being read has been calculated: |
| // |total_size| is the total size of the blob. |
| // |expected_content_size| is how many bytes should be sent over the data |
| // pipe, taking into account a range if the blob was read with ReadRange. |
| // If an error occurs while reading the blob, this method might not get called. |
| OnCalculatedSize(uint64 total_size, |
| uint64 expected_content_size); |
| |
| // Called when reading the blob finished (with success or failure). Status is |
| // a net::Error indicating any potential error that might have occurred, |
| // |data_length| tells the reader how many bytes were written into the data |
| // pipe, and can be used as a sanity check to make sure all bytes were |
| // received. |
| OnComplete(int32 status, uint64 data_length); |
| }; |
| |
| // This interface provides access to a blob in the blob system. |
| interface Blob { |
| // Creates a copy of this Blob reference. |
| Clone(Blob& blob); |
| |
| // Creates a reference to this Blob as a DataPipeGetter. |
| AsDataPipeGetter(network.mojom.DataPipeGetter& data_pipe_getter); |
| |
| // Causes the entire contents of this blob to be written into the given data |
| // pipe. An optional BlobReaderClient will be informed of the result of the |
| // read operation. |
| ReadAll(handle<data_pipe_producer> pipe, BlobReaderClient? client); |
| |
| // Causes a subrange of the contents of this blob to be written into the |
| // given data pipe. If |length| is -1 (uint64_t max), the range's end is |
| // unbounded so the entire contents are read starting at |offset|. An |
| // optional BlobReaderClient will be informed of the result of the read |
| // operation. |
| ReadRange(uint64 offset, uint64 length, handle<data_pipe_producer> pipe, |
| BlobReaderClient? client); |
| |
| // Reads the side-data (if any) associated with this blob. This is the same |
| // data that would be passed to OnReceivedCachedMetadata if you were reading |
| // this blob through a blob URL. |
| ReadSideData() => (array<uint8>? data); |
| |
| // This method is an implementation detail of the blob system. You should not |
| // ever need to call it directly. |
| // This returns the internal UUID of the blob, used by the blob system to |
| // identify the blob. |
| GetInternalUUID() => (string uuid); |
| }; |