/* Copyright (c) 2012 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. */ /** * This file defines the API to create a file reference or "weak pointer" to a * file in a file system. */ label Chrome { M14 = 1.0, M28 = 1.1, M34 = 1.2 }; /** * The PP_MakeDirectoryFlags enum contains flags used to control * behavior of PPB_FileRef.MakeDirectory(). */ enum PP_MakeDirectoryFlags { PP_MAKEDIRECTORYFLAG_NONE = 0 << 0, /** Requests that ancestor directories are created if they do not exist. */ PP_MAKEDIRECTORYFLAG_WITH_ANCESTORS = 1 << 0, /** * Requests that the PPB_FileRef.MakeDirectory() call fails if the directory * already exists. */ PP_MAKEDIRECTORYFLAG_EXCLUSIVE = 1 << 1 }; /** * The PPB_FileRef struct represents a "weak pointer" to a file in * a file system. This struct contains a PP_FileSystemType * identifier and a file path string. */ interface PPB_FileRef { /** * Create() creates a weak pointer to a file in the given file system. File * paths are POSIX style. * * @param[in] resource A PP_Resource corresponding to a file * system. * @param[in] path A path to the file. Must begin with a '/' character. * * @return A PP_Resource corresponding to a file reference if * successful or 0 if the path is malformed. */ PP_Resource Create([in] PP_Resource file_system, [in] str_t path); /** * IsFileRef() determines if the provided resource is a file reference. * * @param[in] resource A PP_Resource corresponding to a file * reference. * * @return PP_TRUE if the resource is a * PPB_FileRef, PP_FALSE if the resource is * invalid or some type other than PPB_FileRef. */ PP_Bool IsFileRef([in] PP_Resource resource); /** * GetFileSystemType() returns the type of the file system. * * @param[in] file_ref A PP_Resource corresponding to a file * reference. * * @return A PP_FileSystemType with the file system type if * valid or PP_FILESYSTEMTYPE_INVALID if the provided resource * is not a valid file reference. */ PP_FileSystemType GetFileSystemType([in] PP_Resource file_ref); /** * GetName() returns the name of the file. * * @param[in] file_ref A PP_Resource corresponding to a file * reference. * * @return A PP_Var containing the name of the file. The value * returned by this function does not include any path components (such as * the name of the parent directory, for example). It is just the name of the * file. Use GetPath() to get the full file path. */ PP_Var GetName([in] PP_Resource file_ref); /** * GetPath() returns the absolute path of the file. * * @param[in] file_ref A PP_Resource corresponding to a file * reference. * * @return A PP_Var containing the absolute path of the file. * This function fails if the file system type is * PP_FileSystemType_External. */ PP_Var GetPath([in] PP_Resource file_ref); /** * GetParent() returns the parent directory of this file. If * file_ref points to the root of the filesystem, then the root * is returned. * * @param[in] file_ref A PP_Resource corresponding to a file * reference. * * @return A PP_Resource containing the parent directory of the * file. This function fails if the file system type is * PP_FileSystemType_External. */ PP_Resource GetParent([in] PP_Resource file_ref); /** * MakeDirectory() makes a new directory in the file system as well as any * parent directories if the make_ancestors argument is * PP_TRUE. It is not valid to make a directory in the external * file system. * * @param[in] file_ref A PP_Resource corresponding to a file * reference. * @param[in] make_ancestors A PP_Bool set to * PP_TRUE to make ancestor directories or PP_FALSE * if ancestor directories are not needed. * @param[in] callback A PP_CompletionCallback to be called upon * completion of MakeDirectory(). * * @return An int32_t containing an error code from pp_errors.h. * Succeeds if the directory already exists. Fails if ancestor directories * do not exist and make_ancestors was passed as * PP_FALSE. */ [deprecate=1.2] int32_t MakeDirectory([in] PP_Resource directory_ref, [in] PP_Bool make_ancestors, [in] PP_CompletionCallback callback); /** * MakeDirectory() makes a new directory in the file system according to the * given make_directory_flags, which is a bit-mask of the * PP_MakeDirectoryFlags values. It is not valid to make a * directory in the external file system. * * @param[in] file_ref A PP_Resource corresponding to a file * reference. * @param[in] make_directory_flags A bit-mask of the * PP_MakeDirectoryFlags values. * @param[in] callback A PP_CompletionCallback to be called upon * completion of MakeDirectory(). * * @return An int32_t containing an error code from pp_errors.h. */ [version=1.2] int32_t MakeDirectory([in] PP_Resource directory_ref, [in] int32_t make_directory_flags, [in] PP_CompletionCallback callback); /** * Touch() Updates time stamps for a file. You must have write access to the * file if it exists in the external filesystem. * * @param[in] file_ref A PP_Resource corresponding to a file * reference. * @param[in] last_access_time The last time the file was accessed. * @param[in] last_modified_time The last time the file was modified. * @param[in] callback A PP_CompletionCallback to be called upon * completion of Touch(). * * @return An int32_t containing an error code from pp_errors.h. */ int32_t Touch([in] PP_Resource file_ref, [in] PP_Time last_access_time, [in] PP_Time last_modified_time, [in] PP_CompletionCallback callback); /** * Delete() deletes a file or directory. If file_ref refers to * a directory, then the directory must be empty. It is an error to delete a * file or directory that is in use. It is not valid to delete a file in * the external file system. * * @param[in] file_ref A PP_Resource corresponding to a file * reference. * @param[in] callback A PP_CompletionCallback to be called upon * completion of Delete(). * * @return An int32_t containing an error code from pp_errors.h. */ int32_t Delete([in] PP_Resource file_ref, [in] PP_CompletionCallback callback); /** * Rename() renames a file or directory. Arguments file_ref and * new_file_ref must both refer to files in the same file * system. It is an error to rename a file or directory that is in use. It * is not valid to rename a file in the external file system. * * @param[in] file_ref A PP_Resource corresponding to a file * reference. * @param[in] new_file_ref A PP_Resource corresponding to a new * file reference. * @param[in] callback A PP_CompletionCallback to be called upon * completion of Rename(). * * @return An int32_t containing an error code from pp_errors.h. */ int32_t Rename([in] PP_Resource file_ref, [in] PP_Resource new_file_ref, [in] PP_CompletionCallback callback); /** * Query() queries info about a file or directory. You must have access to * read this file or directory if it exists in the external filesystem. * * @param[in] file_ref A PP_Resource corresponding to a file * reference. * @param[out] info A pointer to a PP_FileInfo which will be * populated with information about the file or directory. * @param[in] callback A PP_CompletionCallback to be called upon * completion of Query(). * * @return An int32_t containing an error code from pp_errors.h. */ [version=1.1] int32_t Query([in] PP_Resource file_ref, [out] PP_FileInfo info, [in] PP_CompletionCallback callback); /** * ReadDirectoryEntries() reads all entries in a directory. * * @param[in] file_ref A PP_Resource corresponding to a directory * reference. * @param[in] output An output array which will receive * PP_DirectoryEntry objects on success. * @param[in] callback A PP_CompletionCallback to run on * completion. * * @return An int32_t containing an error code from pp_errors.h. */ [version=1.1] int32_t ReadDirectoryEntries([in] PP_Resource file_ref, [in] PP_ArrayOutput output, [in] PP_CompletionCallback callback); };