Index: components/filesystem/public/interfaces/types.mojom |
diff --git a/components/filesystem/public/interfaces/types.mojom b/components/filesystem/public/interfaces/types.mojom |
new file mode 100644 |
index 0000000000000000000000000000000000000000..b5887d23733f251f14c5533b038aa6fec9fd1ac2 |
--- /dev/null |
+++ b/components/filesystem/public/interfaces/types.mojom |
@@ -0,0 +1,101 @@ |
+// Copyright 2015 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 mojo.files; |
+ |
+// Error codes used by the file manager. |
+// TODO(vtl): Add more (to, e.g., cover all of errno). |
+enum Error { |
+ OK = 0, |
+ UNKNOWN, |
+ INVALID_ARGUMENT, |
+ PERMISSION_DENIED, |
+ OUT_OF_RANGE, |
+ UNIMPLEMENTED, |
+ CLOSED, |
+ UNAVAILABLE, |
+ INTERNAL, |
+}; |
+ |
+// Used to explain the meaning of an offset within a file. |
+enum Whence { |
+ // Offset is from current position in the file. |
+ FROM_CURRENT = 0, |
+ // Offset is relative to the beginning of the file. |
+ FROM_START, |
+ // Offset is relative to the end of the file. |
+ FROM_END, |
+}; |
+ |
+// Describes (idealized) wall-clock time, since Unix epoch (i.e., since |
+// "1970-01-01 00:00 UTC", ignoring leap seconds and that UTC as we know it |
+// started in 1972). |
+// TODO(vtl): Should probably be moved out of mojo.files (maybe to mojo.time?). |
+struct Timespec { |
+ int64 seconds; |
+ int32 nanoseconds; // Always in the interval [0, 10^9). |
+}; |
+ |
+// Used for |Touch()| calls. If |now| is set, |timespec| must be null (the time |
+// "now" will be used). Otherwise, |timespec| must not be null. |
+// TODO(vtl): Use a union instead, when that becomes possible. |
+struct TimespecOrNow { |
+ bool now; |
+ Timespec? timespec; |
+}; |
+ |
+// Describes various information about a file or directory (for |Stat()|). Note |
+// that access/modification times may be set arbitrarily (by those with |
+// appropriate capabilities) and may not reflect reality. |
+struct FileInformation { |
+ // Type of the file. |
+ FileType type; |
+ // Size of the file, in bytes. Zero for directories. |
+ int64 size; |
+ // Last access time, if available/supported. |
+ Timespec? atime; |
+ // Last modification time, if available/supported. |
+ Timespec? mtime; |
+}; |
+ |
+// File and directory open flags (at least one of |kOpenFlagRead| and |
+// |kOpenFlagWrite| is required): |
+// Opens the file/directory for reading. |
+const uint32 kOpenFlagRead = 0x1; |
+// Opens the file/directory for writing. |
+const uint32 kOpenFlagWrite = 0x2; |
+// Only meaningful together with |kOpenFlagWrite|: creates the file if |
+// necessary. |
+const uint32 kOpenFlagCreate = 0x4; |
+// Only meaningful together with |kOpenFlagCreate|: requires file/directory to |
+// be created, failing if it already exists. |
+const uint32 kOpenFlagExclusive = 0x8; |
+// Only meaningful for files, together with |kOpenFlagWrite|: writes will always |
+// append to the file. |
+const uint32 kOpenFlagAppend = 0x10; |
+// Only meaningful for files, together with |kOpenFlagWrite|: truncates the |
+// file. |
+const uint32 kOpenFlagTruncate = 0x20; |
+ |
+// File types. |
+enum FileType { |
+ UNKNOWN = 0, |
+ REGULAR_FILE, |
+ DIRECTORY, |
+}; |
+ |
+// Describes a directory entry (i.e., a single member of a directory). |
+struct DirectoryEntry { |
+ FileType type; |
+ string name; |
+}; |
+ |
+// Deletion flags: |
+// Only delete if the path refers to a file/non-directory (by default, will |
+// delete files and directories). |
+const uint32 kDeleteFlagFileOnly = 0x1; |
+// Only delete if the path refers to a directory. |
+const uint32 kDeleteFlagDirectoryOnly = 0x2; |
+// Recursively delete (neither of the two flags above may be specified). |
+const uint32 kDeleteFlagRecursive = 0x4; |