Roll src/third_party/WebKit 605a979:06cb9e9 (svn 202556:202558)
[chromium-blink-merge.git] / components / filesystem / public / interfaces / types.mojom
blob6a2ba49b5d31c9a4cd6c1ef7c9baa113ac5ac910
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
3 // found in the LICENSE file.
5 module filesystem;
7 // Error codes used by the file system. These error codes line up exactly with
8 // those of base::File.
9 enum FileError {
10   OK                =   0,
11   FAILED            =  -1,
12   IN_USE            =  -2,
13   EXISTS            =  -3,
14   NOT_FOUND         =  -4,
15   ACCESS_DENIED     =  -5,
16   TOO_MANY_OPENED   =  -6,
17   NO_MEMORY         =  -7,
18   NO_SPACE          =  -8,
19   NOT_A_DIRECTORY   =  -9,
20   INVALID_OPERATION = -10,
21   SECURITY          = -11,
22   ABORT             = -12,
23   NOT_A_FILE        = -13,
24   NOT_EMPTY         = -14,
25   INVALID_URL       = -15,
26   IO                = -16,
29 // Used to explain the meaning of an offset within a file. These values line up
30 // exactly with base::File.
31 enum Whence {
32   // Offset is relative to the beginning of the file.
33   FROM_BEGIN   = 0,
34   // Offset is from current position in the file.
35   FROM_CURRENT = 1,
36   // Offset is relative to the end of the file.
37   FROM_END     = 2
40 // Used for |Touch()| calls. If |now| is set, |timespec| must be null (the time
41 // "now" will be used). Otherwise, |timespec| must not be null.
42 // TODO(vtl): Use a union instead, when that becomes possible.
43 struct TimespecOrNow {
44   bool now;
45   double seconds;
48 // Describes various information about a file or directory (for |Stat()|). Note
49 // that access/modification times may be set arbitrarily (by those with
50 // appropriate capabilities) and may not reflect reality.
51 struct FileInformation {
52   // Type of the file.
53   FsFileType type;
54   // Size of the file, in bytes. Zero for directories.
55   int64 size;
56   // Last access time, in seconds since Unix Epoch.
57   double atime;
58   // Last modification time, in seconds since Unix Epoch.
59   double mtime;
60   // Create time of the file, in seconds since Unix Epoch.
61   double ctime;
64 // File and directory open flags. Is a limited subset of base::File::Flags. These
65 // are constants instead of enums so that they are bitwise OR-able.
67 // Opens a file, only if it exists.
68 const uint32 kFlagOpen = 0x1;
69 // Creates a new file, only if it does not already exist.
70 const uint32 kFlagCreate = 0x2;
71 // May create a new file.
72 const uint32 kFlagOpenAlways = 0x4;
73 // May overwrite an old file.
74 const uint32 kCreateAlways = 0x8;
75 // Opens a file and truncates it, only if it exists.
76 const uint32 kFlagOpenTruncated = 0x10;
77 const uint32 kFlagRead = 0x20;
78 const uint32 kFlagWrite = 0x40;
79 const uint32 kFlagAppend = 0x80;
80 // Deletes the file when closed.
81 const uint32 kDeleteOnClose = 0x2000;
83 // File types.
85 // Note: This is named FsFileType because otherwise we have a name collision
86 // with windows.h.
87 enum FsFileType {
88   UNKNOWN = 0,
89   REGULAR_FILE,
90   DIRECTORY,
93 // Describes a directory entry (i.e., a single member of a directory).
94 struct DirectoryEntry {
95   FsFileType type;
96   string name;
99 // Deletion flags:
100 // Recursively delete.
101 const uint32 kDeleteFlagRecursive = 0x1;