| // Copyright 2019 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 "third_party/blink/public/mojom/file_system_access/file_system_access_error.mojom"; |
| |
| // Represents an object to modify a file. |
| interface FileSystemAccessFileWriter { |
| // Write data from |stream| to the given |position| in the file being written |
| // to. Returns whether the operation succeeded and if so how many bytes were |
| // written. |
| // TODO(mek): This might need some way of reporting progress events back to |
| // the renderer. |
| Write(uint64 offset, handle<data_pipe_consumer> stream) => |
| (FileSystemAccessError result, uint64 bytes_written); |
| |
| // Changes the length of the file to be |length|. If |length| is larger than |
| // the current size of the file, the file will be extended, and the extended |
| // part is filled with null bytes. |
| Truncate(uint64 length) => (FileSystemAccessError result); |
| |
| // Closes the file writer. This will materialize the writes operations on the |
| // intended file target in the case of atomic writes. |
| // The mojo pipe will be destroyed when Close() completes. |
| // Specify the |autoClose| flag to ensure Close() is automatically invoked |
| // when the mojo pipe closes. |
| // Returns whether the operation succeeded. |
| Close() => (FileSystemAccessError result); |
| |
| // Aborts the write operation, resulting in the writes not being committed, |
| // even if |autoClose| is specified. The mojo pipe will be destroyed when |
| // Abort() completes. |
| // Returns whether the write operation was aborted successfully. |
| Abort() => (FileSystemAccessError result); |
| }; |