Move prefs::kLastPolicyStatisticsUpdate to the policy component.
[chromium-blink-merge.git] / ppapi / api / ppb_file_ref.idl
blobd9226471a9f23cc6e9c862369ef905c25a9731b5
1 /* Copyright (c) 2012 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 */
6 /**
7 * This file defines the API to create a file reference or "weak pointer" to a
8 * file in a file system.
9 */
11 label Chrome {
12 M14 = 1.0,
13 M28 = 1.1
16 /**
17 * The <code>PPB_FileRef</code> struct represents a "weak pointer" to a file in
18 * a file system. This struct contains a <code>PP_FileSystemType</code>
19 * identifier and a file path string.
21 interface PPB_FileRef {
22 /**
23 * Create() creates a weak pointer to a file in the given file system. File
24 * paths are POSIX style.
26 * @param[in] resource A <code>PP_Resource</code> corresponding to a file
27 * system.
28 * @param[in] path A path to the file. Must begin with a '/' character.
30 * @return A <code>PP_Resource</code> corresponding to a file reference if
31 * successful or 0 if the path is malformed.
33 PP_Resource Create([in] PP_Resource file_system, [in] str_t path);
34 /**
35 * IsFileRef() determines if the provided resource is a file reference.
37 * @param[in] resource A <code>PP_Resource</code> corresponding to a file
38 * reference.
40 * @return <code>PP_TRUE</code> if the resource is a
41 * <code>PPB_FileRef</code>, <code>PP_FALSE</code> if the resource is
42 * invalid or some type other than <code>PPB_FileRef</code>.
44 PP_Bool IsFileRef([in] PP_Resource resource);
46 /**
47 * GetFileSystemType() returns the type of the file system.
49 * @param[in] file_ref A <code>PP_Resource</code> corresponding to a file
50 * reference.
52 * @return A <code>PP_FileSystemType</code> with the file system type if
53 * valid or <code>PP_FILESYSTEMTYPE_INVALID</code> if the provided resource
54 * is not a valid file reference.
56 PP_FileSystemType GetFileSystemType([in] PP_Resource file_ref);
58 /**
59 * GetName() returns the name of the file.
61 * @param[in] file_ref A <code>PP_Resource</code> corresponding to a file
62 * reference.
64 * @return A <code>PP_Var</code> containing the name of the file. The value
65 * returned by this function does not include any path components (such as
66 * the name of the parent directory, for example). It is just the name of the
67 * file. Use GetPath() to get the full file path.
69 PP_Var GetName([in] PP_Resource file_ref);
71 /**
72 * GetPath() returns the absolute path of the file.
74 * @param[in] file_ref A <code>PP_Resource</code> corresponding to a file
75 * reference.
77 * @return A <code>PP_Var</code> containing the absolute path of the file.
78 * This function fails if the file system type is
79 * <code>PP_FileSystemType_External</code>.
81 PP_Var GetPath([in] PP_Resource file_ref);
83 /**
84 * GetParent() returns the parent directory of this file. If
85 * <code>file_ref</code> points to the root of the filesystem, then the root
86 * is returned.
88 * @param[in] file_ref A <code>PP_Resource</code> corresponding to a file
89 * reference.
91 * @return A <code>PP_Resource</code> containing the parent directory of the
92 * file. This function fails if the file system type is
93 * <code>PP_FileSystemType_External</code>.
95 PP_Resource GetParent([in] PP_Resource file_ref);
97 /**
98 * MakeDirectory() makes a new directory in the file system as well as any
99 * parent directories if the <code>make_ancestors</code> argument is
100 * <code>PP_TRUE</code>. It is not valid to make a directory in the external
101 * file system.
103 * @param[in] file_ref A <code>PP_Resource</code> corresponding to a file
104 * reference.
105 * @param[in] make_ancestors A <code>PP_Bool</code> set to
106 * <code>PP_TRUE</code> to make ancestor directories or <code>PP_FALSE</code>
107 * if ancestor directories are not needed.
109 * @return An int32_t containing an error code from <code>pp_errors.h</code>.
110 * Succeeds if the directory already exists. Fails if ancestor directories
111 * do not exist and <code>make_ancestors</code> was passed as
112 * <code>PP_FALSE</code>.
114 int32_t MakeDirectory([in] PP_Resource directory_ref,
115 [in] PP_Bool make_ancestors,
116 [in] PP_CompletionCallback callback);
119 * Touch() Updates time stamps for a file. You must have write access to the
120 * file if it exists in the external filesystem.
122 * @param[in] file_ref A <code>PP_Resource</code> corresponding to a file
123 * reference.
124 * @param[in] last_access_time The last time the file was accessed.
125 * @param[in] last_modified_time The last time the file was modified.
126 * @param[in] callback A <code>PP_CompletionCallback</code> to be called upon
127 * completion of Touch().
129 * @return An int32_t containing an error code from <code>pp_errors.h</code>.
131 int32_t Touch([in] PP_Resource file_ref,
132 [in] PP_Time last_access_time,
133 [in] PP_Time last_modified_time,
134 [in] PP_CompletionCallback callback);
137 * Delete() deletes a file or directory. If <code>file_ref</code> refers to
138 * a directory, then the directory must be empty. It is an error to delete a
139 * file or directory that is in use. It is not valid to delete a file in
140 * the external file system.
142 * @param[in] file_ref A <code>PP_Resource</code> corresponding to a file
143 * reference.
144 * @param[in] callback A <code>PP_CompletionCallback</code> to be called upon
145 * completion of Delete().
147 * @return An int32_t containing an error code from <code>pp_errors.h</code>.
149 int32_t Delete([in] PP_Resource file_ref,
150 [in] PP_CompletionCallback callback);
153 * Rename() renames a file or directory. Arguments <code>file_ref</code> and
154 * <code>new_file_ref</code> must both refer to files in the same file
155 * system. It is an error to rename a file or directory that is in use. It
156 * is not valid to rename a file in the external file system.
158 * @param[in] file_ref A <code>PP_Resource</code> corresponding to a file
159 * reference.
160 * @param[in] new_file_ref A <code>PP_Resource</code> corresponding to a new
161 * file reference.
162 * @param[in] callback A <code>PP_CompletionCallback</code> to be called upon
163 * completion of Rename().
165 * @return An int32_t containing an error code from <code>pp_errors.h</code>.
167 int32_t Rename([in] PP_Resource file_ref,
168 [in] PP_Resource new_file_ref,
169 [in] PP_CompletionCallback callback);
172 * Query() queries info about a file or directory. You must have access to
173 * read this file or directory if it exists in the external filesystem.
175 * @param[in] file_ref A <code>PP_Resource</code> corresponding to a file
176 * reference.
177 * @param[out] info A pointer to a <code>PP_FileInfo</code> which will be
178 * populated with information about the file or directory.
179 * @param[in] callback A <code>PP_CompletionCallback</code> to be called upon
180 * completion of Query().
182 * @return An int32_t containing an error code from <code>pp_errors.h</code>.
184 [version=1.1]
185 int32_t Query([in] PP_Resource file_ref,
186 [out] PP_FileInfo info,
187 [in] PP_CompletionCallback callback);
190 * ReadDirectoryEntries() reads all entries in a directory.
192 * @param[in] file_ref A <code>PP_Resource</code> corresponding to a directory
193 * reference.
194 * @param[in] output An output array which will receive
195 * <code>PP_DirectoryEntry</code> objects on success.
196 * @param[in] callback A <code>PP_CompletionCallback</code> to run on
197 * completion.
199 * @return An int32_t containing an error code from <code>pp_errors.h</code>.
201 [version=1.1]
202 int32_t ReadDirectoryEntries([in] PP_Resource file_ref,
203 [in] PP_ArrayOutput output,
204 [in] PP_CompletionCallback callback);