You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
291 lines
11 KiB
291 lines
11 KiB
9 years ago
|
/* 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.
|
||
|
*/
|
||
|
|
||
|
/* From ppb_file_ref.idl modified Wed Jan 29 20:50:29 2014. */
|
||
|
|
||
|
#ifndef PPAPI_C_PPB_FILE_REF_H_
|
||
|
#define PPAPI_C_PPB_FILE_REF_H_
|
||
|
|
||
|
#include "ppapi/c/pp_array_output.h"
|
||
|
#include "ppapi/c/pp_bool.h"
|
||
|
#include "ppapi/c/pp_completion_callback.h"
|
||
|
#include "ppapi/c/pp_file_info.h"
|
||
|
#include "ppapi/c/pp_macros.h"
|
||
|
#include "ppapi/c/pp_resource.h"
|
||
|
#include "ppapi/c/pp_stdint.h"
|
||
|
#include "ppapi/c/pp_time.h"
|
||
|
#include "ppapi/c/pp_var.h"
|
||
|
|
||
|
#define PPB_FILEREF_INTERFACE_1_0 "PPB_FileRef;1.0"
|
||
|
#define PPB_FILEREF_INTERFACE_1_1 "PPB_FileRef;1.1"
|
||
|
#define PPB_FILEREF_INTERFACE_1_2 "PPB_FileRef;1.2"
|
||
|
#define PPB_FILEREF_INTERFACE PPB_FILEREF_INTERFACE_1_2
|
||
|
|
||
|
/**
|
||
|
* @file
|
||
|
* This file defines the API to create a file reference or "weak pointer" to a
|
||
|
* file in a file system.
|
||
|
*/
|
||
|
|
||
|
|
||
|
/**
|
||
|
* @addtogroup Enums
|
||
|
* @{
|
||
|
*/
|
||
|
/**
|
||
|
* The <code>PP_MakeDirectoryFlags</code> enum contains flags used to control
|
||
|
* behavior of <code>PPB_FileRef.MakeDirectory()</code>.
|
||
|
*/
|
||
|
typedef enum {
|
||
|
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
|
||
|
} PP_MakeDirectoryFlags;
|
||
|
/**
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* @addtogroup Interfaces
|
||
|
* @{
|
||
|
*/
|
||
|
/**
|
||
|
* The <code>PPB_FileRef</code> struct represents a "weak pointer" to a file in
|
||
|
* a file system. This struct contains a <code>PP_FileSystemType</code>
|
||
|
* identifier and a file path string.
|
||
|
*/
|
||
|
struct PPB_FileRef_1_2 {
|
||
|
/**
|
||
|
* Create() creates a weak pointer to a file in the given file system. File
|
||
|
* paths are POSIX style.
|
||
|
*
|
||
|
* @param[in] resource A <code>PP_Resource</code> corresponding to a file
|
||
|
* system.
|
||
|
* @param[in] path A path to the file. Must begin with a '/' character.
|
||
|
*
|
||
|
* @return A <code>PP_Resource</code> corresponding to a file reference if
|
||
|
* successful or 0 if the path is malformed.
|
||
|
*/
|
||
|
PP_Resource (*Create)(PP_Resource file_system, const char* path);
|
||
|
/**
|
||
|
* IsFileRef() determines if the provided resource is a file reference.
|
||
|
*
|
||
|
* @param[in] resource A <code>PP_Resource</code> corresponding to a file
|
||
|
* reference.
|
||
|
*
|
||
|
* @return <code>PP_TRUE</code> if the resource is a
|
||
|
* <code>PPB_FileRef</code>, <code>PP_FALSE</code> if the resource is
|
||
|
* invalid or some type other than <code>PPB_FileRef</code>.
|
||
|
*/
|
||
|
PP_Bool (*IsFileRef)(PP_Resource resource);
|
||
|
/**
|
||
|
* GetFileSystemType() returns the type of the file system.
|
||
|
*
|
||
|
* @param[in] file_ref A <code>PP_Resource</code> corresponding to a file
|
||
|
* reference.
|
||
|
*
|
||
|
* @return A <code>PP_FileSystemType</code> with the file system type if
|
||
|
* valid or <code>PP_FILESYSTEMTYPE_INVALID</code> if the provided resource
|
||
|
* is not a valid file reference.
|
||
|
*/
|
||
|
PP_FileSystemType (*GetFileSystemType)(PP_Resource file_ref);
|
||
|
/**
|
||
|
* GetName() returns the name of the file.
|
||
|
*
|
||
|
* @param[in] file_ref A <code>PP_Resource</code> corresponding to a file
|
||
|
* reference.
|
||
|
*
|
||
|
* @return A <code>PP_Var</code> 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.
|
||
|
*/
|
||
|
struct PP_Var (*GetName)(PP_Resource file_ref);
|
||
|
/**
|
||
|
* GetPath() returns the absolute path of the file.
|
||
|
*
|
||
|
* @param[in] file_ref A <code>PP_Resource</code> corresponding to a file
|
||
|
* reference.
|
||
|
*
|
||
|
* @return A <code>PP_Var</code> containing the absolute path of the file.
|
||
|
* This function fails if the file system type is
|
||
|
* <code>PP_FileSystemType_External</code>.
|
||
|
*/
|
||
|
struct PP_Var (*GetPath)(PP_Resource file_ref);
|
||
|
/**
|
||
|
* GetParent() returns the parent directory of this file. If
|
||
|
* <code>file_ref</code> points to the root of the filesystem, then the root
|
||
|
* is returned.
|
||
|
*
|
||
|
* @param[in] file_ref A <code>PP_Resource</code> corresponding to a file
|
||
|
* reference.
|
||
|
*
|
||
|
* @return A <code>PP_Resource</code> containing the parent directory of the
|
||
|
* file. This function fails if the file system type is
|
||
|
* <code>PP_FileSystemType_External</code>.
|
||
|
*/
|
||
|
PP_Resource (*GetParent)(PP_Resource file_ref);
|
||
|
/**
|
||
|
* MakeDirectory() makes a new directory in the file system according to the
|
||
|
* given <code>make_directory_flags</code>, which is a bit-mask of the
|
||
|
* <code>PP_MakeDirectoryFlags</code> values. It is not valid to make a
|
||
|
* directory in the external file system.
|
||
|
*
|
||
|
* @param[in] file_ref A <code>PP_Resource</code> corresponding to a file
|
||
|
* reference.
|
||
|
* @param[in] make_directory_flags A bit-mask of the
|
||
|
* <code>PP_MakeDirectoryFlags</code> values.
|
||
|
* @param[in] callback A <code>PP_CompletionCallback</code> to be called upon
|
||
|
* completion of MakeDirectory().
|
||
|
*
|
||
|
* @return An int32_t containing an error code from <code>pp_errors.h</code>.
|
||
|
*/
|
||
|
int32_t (*MakeDirectory)(PP_Resource directory_ref,
|
||
|
int32_t make_directory_flags,
|
||
|
struct 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 <code>PP_Resource</code> 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 <code>PP_CompletionCallback</code> to be called upon
|
||
|
* completion of Touch().
|
||
|
*
|
||
|
* @return An int32_t containing an error code from <code>pp_errors.h</code>.
|
||
|
*/
|
||
|
int32_t (*Touch)(PP_Resource file_ref,
|
||
|
PP_Time last_access_time,
|
||
|
PP_Time last_modified_time,
|
||
|
struct PP_CompletionCallback callback);
|
||
|
/**
|
||
|
* Delete() deletes a file or directory. If <code>file_ref</code> 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 <code>PP_Resource</code> corresponding to a file
|
||
|
* reference.
|
||
|
* @param[in] callback A <code>PP_CompletionCallback</code> to be called upon
|
||
|
* completion of Delete().
|
||
|
*
|
||
|
* @return An int32_t containing an error code from <code>pp_errors.h</code>.
|
||
|
*/
|
||
|
int32_t (*Delete)(PP_Resource file_ref,
|
||
|
struct PP_CompletionCallback callback);
|
||
|
/**
|
||
|
* Rename() renames a file or directory. Arguments <code>file_ref</code> and
|
||
|
* <code>new_file_ref</code> 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 <code>PP_Resource</code> corresponding to a file
|
||
|
* reference.
|
||
|
* @param[in] new_file_ref A <code>PP_Resource</code> corresponding to a new
|
||
|
* file reference.
|
||
|
* @param[in] callback A <code>PP_CompletionCallback</code> to be called upon
|
||
|
* completion of Rename().
|
||
|
*
|
||
|
* @return An int32_t containing an error code from <code>pp_errors.h</code>.
|
||
|
*/
|
||
|
int32_t (*Rename)(PP_Resource file_ref,
|
||
|
PP_Resource new_file_ref,
|
||
|
struct 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 <code>PP_Resource</code> corresponding to a file
|
||
|
* reference.
|
||
|
* @param[out] info A pointer to a <code>PP_FileInfo</code> which will be
|
||
|
* populated with information about the file or directory.
|
||
|
* @param[in] callback A <code>PP_CompletionCallback</code> to be called upon
|
||
|
* completion of Query().
|
||
|
*
|
||
|
* @return An int32_t containing an error code from <code>pp_errors.h</code>.
|
||
|
*/
|
||
|
int32_t (*Query)(PP_Resource file_ref,
|
||
|
struct PP_FileInfo* info,
|
||
|
struct PP_CompletionCallback callback);
|
||
|
/**
|
||
|
* ReadDirectoryEntries() reads all entries in a directory.
|
||
|
*
|
||
|
* @param[in] file_ref A <code>PP_Resource</code> corresponding to a directory
|
||
|
* reference.
|
||
|
* @param[in] output An output array which will receive
|
||
|
* <code>PP_DirectoryEntry</code> objects on success.
|
||
|
* @param[in] callback A <code>PP_CompletionCallback</code> to run on
|
||
|
* completion.
|
||
|
*
|
||
|
* @return An int32_t containing an error code from <code>pp_errors.h</code>.
|
||
|
*/
|
||
|
int32_t (*ReadDirectoryEntries)(PP_Resource file_ref,
|
||
|
struct PP_ArrayOutput output,
|
||
|
struct PP_CompletionCallback callback);
|
||
|
};
|
||
|
|
||
|
typedef struct PPB_FileRef_1_2 PPB_FileRef;
|
||
|
|
||
|
struct PPB_FileRef_1_0 {
|
||
|
PP_Resource (*Create)(PP_Resource file_system, const char* path);
|
||
|
PP_Bool (*IsFileRef)(PP_Resource resource);
|
||
|
PP_FileSystemType (*GetFileSystemType)(PP_Resource file_ref);
|
||
|
struct PP_Var (*GetName)(PP_Resource file_ref);
|
||
|
struct PP_Var (*GetPath)(PP_Resource file_ref);
|
||
|
PP_Resource (*GetParent)(PP_Resource file_ref);
|
||
|
int32_t (*MakeDirectory)(PP_Resource directory_ref,
|
||
|
PP_Bool make_ancestors,
|
||
|
struct PP_CompletionCallback callback);
|
||
|
int32_t (*Touch)(PP_Resource file_ref,
|
||
|
PP_Time last_access_time,
|
||
|
PP_Time last_modified_time,
|
||
|
struct PP_CompletionCallback callback);
|
||
|
int32_t (*Delete)(PP_Resource file_ref,
|
||
|
struct PP_CompletionCallback callback);
|
||
|
int32_t (*Rename)(PP_Resource file_ref,
|
||
|
PP_Resource new_file_ref,
|
||
|
struct PP_CompletionCallback callback);
|
||
|
};
|
||
|
|
||
|
struct PPB_FileRef_1_1 {
|
||
|
PP_Resource (*Create)(PP_Resource file_system, const char* path);
|
||
|
PP_Bool (*IsFileRef)(PP_Resource resource);
|
||
|
PP_FileSystemType (*GetFileSystemType)(PP_Resource file_ref);
|
||
|
struct PP_Var (*GetName)(PP_Resource file_ref);
|
||
|
struct PP_Var (*GetPath)(PP_Resource file_ref);
|
||
|
PP_Resource (*GetParent)(PP_Resource file_ref);
|
||
|
int32_t (*MakeDirectory)(PP_Resource directory_ref,
|
||
|
PP_Bool make_ancestors,
|
||
|
struct PP_CompletionCallback callback);
|
||
|
int32_t (*Touch)(PP_Resource file_ref,
|
||
|
PP_Time last_access_time,
|
||
|
PP_Time last_modified_time,
|
||
|
struct PP_CompletionCallback callback);
|
||
|
int32_t (*Delete)(PP_Resource file_ref,
|
||
|
struct PP_CompletionCallback callback);
|
||
|
int32_t (*Rename)(PP_Resource file_ref,
|
||
|
PP_Resource new_file_ref,
|
||
|
struct PP_CompletionCallback callback);
|
||
|
int32_t (*Query)(PP_Resource file_ref,
|
||
|
struct PP_FileInfo* info,
|
||
|
struct PP_CompletionCallback callback);
|
||
|
int32_t (*ReadDirectoryEntries)(PP_Resource file_ref,
|
||
|
struct PP_ArrayOutput output,
|
||
|
struct PP_CompletionCallback callback);
|
||
|
};
|
||
|
/**
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
#endif /* PPAPI_C_PPB_FILE_REF_H_ */
|
||
|
|