Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1084)

Unified Diff: ppapi/c/dev/ppb_filesystemprovider_dev.h

Issue 1093383002: [WIP] Provided file system from NACL. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Various cleanups Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ppapi/c/dev/ppb_filesystemprovider_dev.h
diff --git a/ppapi/c/dev/ppb_filesystemprovider_dev.h b/ppapi/c/dev/ppb_filesystemprovider_dev.h
new file mode 100644
index 0000000000000000000000000000000000000000..a50f58840ba56663d585eca6613a684940df417a
--- /dev/null
+++ b/ppapi/c/dev/ppb_filesystemprovider_dev.h
@@ -0,0 +1,349 @@
+/* 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.
+ */
+
+/* From dev/ppb_filesystemprovider_dev.idl modified Fri May 29 13:16:12 2015. */
+
+#ifndef PPAPI_C_DEV_PPB_FILESYSTEMPROVIDER_DEV_H_
+#define PPAPI_C_DEV_PPB_FILESYSTEMPROVIDER_DEV_H_
+
+#include "ppapi/c/pp_bool.h"
+#include "ppapi/c/pp_completion_callback.h"
+#include "ppapi/c/pp_instance.h"
+#include "ppapi/c/pp_macros.h"
+#include "ppapi/c/pp_resource.h"
+#include "ppapi/c/pp_stdint.h"
+#include "ppapi/c/pp_var.h"
+
+#define PPB_FILESYSTEMPROVIDER_DEV_INTERFACE_0_1 \
+ "PPB_FilesystemProvider(Dev);0.1"
+#define PPB_FILESYSTEMPROVIDER_DEV_INTERFACE \
+ PPB_FILESYSTEMPROVIDER_DEV_INTERFACE_0_1
+
+/**
+ * @file
+ * This file defines the <code>PPB_FilesystemProvider</code> interface.
+ */
+
+
+/**
+ * @addtogroup Enums
+ * @{
+ */
+typedef enum {
+ PP_ProviderError_NONE,
+ PP_ProviderError_OK,
+ PP_ProviderError_FAILED,
+ PP_ProviderError_IN_USE,
+ PP_ProviderError_EXISTS,
+ PP_ProviderError_NOT_FOUND,
+ PP_ProviderError_ACCESS_DENIED,
+ PP_ProviderError_TOO_MANY_OPENED,
+ PP_ProviderError_NO_MEMORY,
+ PP_ProviderError_NO_SPACE,
+ PP_ProviderError_NOT_A_DIRECTORY,
+ PP_ProviderError_INVALID_OPERATION,
+ PP_ProviderError_SECURITY,
+ PP_ProviderError_ABORT,
+ PP_ProviderError_NOT_A_FILE,
+ PP_ProviderError_NOT_EMPTY,
+ PP_ProviderError_INVALID_URL,
+ PP_ProviderError_IO
+} PP_ProviderError_Dev;
+
+typedef enum {
+ PP_OperationType_NONE,
+ PP_OperationType_UNMOUNT,
+ PP_OperationType_GETMETADATA,
+ PP_OperationType_READDIRECTORY,
+ PP_OperationType_OPENFILE,
+ PP_OperationType_CLOSEFILE,
+ PP_OperationType_READFILE,
+ PP_OperationType_CREATEDIRECTORY,
+ PP_OperationType_DELETEENTRY,
+ PP_OperationType_CREATEFILE,
+ PP_OperationType_COPYENTRY,
+ PP_OperationType_MOVEENTRY,
+ PP_OperationType_TRUNCATEENTRY,
+ PP_OperationType_WRITEFILE,
+ PP_OperationType_ABORT
+} PP_OperationType_Dev;
+
+typedef enum {
+ PP_OpenFileMode_NONE,
+ PP_OpenFileMode_READ,
+ PP_OpenFileMode_WRITE
+} PP_OpenFileMode_Dev;
+
+typedef enum {
+ PP_ChangeType_NONE,
+ PP_ChangeType_CHANGED,
+ PP_ChangeType_DELETED
+} PP_ChangeType_Dev;
+/**
+ * @}
+ */
+
+/**
+ * @addtogroup Structs
+ * @{
+ */
+/**
+ * Used by SendMetadataSuccessResponse and
+ * SendReadDirectorySuccessResponse to describe an entry/entries.
+ */
+struct PP_EntryMetadata_Dev {
+ PP_Bool is_directory;
+ char name[128];
+ uint64_t size;
+ char modification_time[64];
+ char mime_type[128];
+ char thumbnail[512];
+};
+
+struct PP_FilesystemRequestUnmount {
+
+};
+
+struct PP_FilesystemRequestMetadata {
+ char entry_path[256];
+ PP_Bool thumbnail;
+};
+
+struct PP_FilesystemRequestReadDirectory {
+ char directory_path[256];
+};
+
+struct PP_FilesystemRequestOpenFile {
+ char file_path[256];
+ PP_OpenFileMode_Dev mode;
+};
+
+struct PP_FilesystemRequestCloseFile {
+ int32_t open_request_id;
+};
+
+struct PP_FilesystemRequestReadFile {
+ int32_t open_request_id;
+ uint64_t offset;
+ uint64_t length;
+};
+
+struct PP_FilesystemRequestCreateDirectory {
+ char directory_path[256];
+ PP_Bool recursive;
+};
+
+struct PP_FilesystemRequestDeleteEntry {
+ char entry_path[256];
+ PP_Bool recursive;
+};
+
+struct PP_FilesystemRequestCreateFile {
+ char file_path[256];
+};
+
+struct PP_FilesystemRequestCopyEntry {
+ char source_path[256];
+ char target_path[256];
+};
+
+struct PP_FilesystemRequestMoveEntry {
+ char source_path[256];
+ char target_path[256];
+};
+
+struct PP_FilesystemRequestTruncate {
+ char file_path[256];
+ int32_t length;
+};
+
+struct PP_FilesystemRequestWrite {
+ int32_t open_request_id;
+ uint64_t offset;
+ uint64_t data_size;
+ void* data;
+};
+
+struct PP_FilesystemRequestAbort {
+ int32_t operation_request_id;
+};
+
+/**
+ * The request format
+ */
+union PP_FilesystemRequestValue {
+ struct PP_FilesystemRequestUnmount as_unmount;
+ struct PP_FilesystemRequestMetadata as_metadata;
+ struct PP_FilesystemRequestReadDirectory as_read_directory;
+ struct PP_FilesystemRequestOpenFile as_open_file;
+ struct PP_FilesystemRequestCloseFile as_close_file;
+ struct PP_FilesystemRequestReadFile as_read_file;
+ struct PP_FilesystemRequestCreateDirectory as_create_directory;
+ struct PP_FilesystemRequestDeleteEntry as_delete_entry;
+ struct PP_FilesystemRequestCreateFile as_create_file;
+ struct PP_FilesystemRequestCopyEntry as_copy_entry;
+ struct PP_FilesystemRequestMoveEntry as_move_entry;
+ struct PP_FilesystemRequestTruncate as_truncate;
+ struct PP_FilesystemRequestWrite as_write_file;
+ struct PP_FilesystemRequestAbort as_abort;
+};
+
+struct PP_FilesystemRequest {
+ PP_OperationType_Dev operation_type;
+ int32_t request_id;
+ union PP_FilesystemRequestValue value;
+};
+/**
+ * @}
+ */
+
+/**
+ * @addtogroup Interfaces
+ * @{
+ */
+/**
+ * File system provider interface.
+ * Typical usage:
+ * - Use Create() to create a new <code>PPB_FilesystemProvider_Dev resource
+ * - Call Mount() to register the new filesystem with the browser
+ * This will create an entry in the file manager Chrome OS UI. The user
+ * can select among the listed filesystem and issue file system operations
+ * - Call Unmount() to unregister the filesystem
+ * This will remove the entry from the file manager Chrome OS UI.
+ * - Register callback for the <code>PP_FilesystemRequest</code> messages that
+ * are sent from the browser with <code>GetNextRequest</code>
+ * - When a request is received and the processing results in a succcess:
+ * - call <code>SendSuccessResponse</code> for requests DIFFERENT from
+ * <code>PP_FilesystemRequestMetadata</code>,
+ * <code>PP_FilesystemRequestReadDirectory</code>,
+ * <code>PP_FilesystemRequestReadFile</code>
+ * - call <code>SendMetadataSuccessResponse</code> for
+ * <code>PP_FilesystemRequestMetadata</code> request
+ * - call <code>SendReadFileSuccessResponse</code> for
+ * <code>PP_FilesystemRequestReadFile</code> request
+ * - call <code>SendReadDirectorySuccessResponse</code> for
+ * <code>PP_FilesystemRequestReadDirectory</code> request
+ * - When a request is received and the processing results in an error:
+ * - call <code>SendErrorResponse</code> for ALL requests
+ * - If a PP_FilesystemRequestWrite is received a subsequent call to
+ * <code>FreeWriteRequestBuffer</code>
+ */
+struct PPB_FilesystemProvider_Dev_0_1 {
+ PP_Resource (*Create)(PP_Instance instance);
+ PP_Bool (*IsFilesystemProvider)(PP_Resource resource);
+ /**
+ * Mount() registers the file system
+ * @param[in] filesystem_id A <code>PP_VARTYPE_STRING</code>
+ * @param[in] display_name A <code> PP_VARTYPE_STRING</code>
+ * @param[in] writable A <code> PP_VARTYPE_BOOL </code>
+ * @param[in] opened_files_limit A <code>int32_t</code>
+ * @param[out] error A <PP_ProviderError_Dev</code>
+ * @param[in] callback A <code>PP_CompletionCallback</code> called when
+ * the operation completes asynchronously.
+ */
+ int32_t (*Mount)(PP_Resource filesystem_prov,
+ struct PP_Var filesystem_id,
+ struct PP_Var display_name,
+ PP_Bool writable,
+ int32_t opened_files_limit,
+ PP_ProviderError_Dev* error,
+ struct PP_CompletionCallback callback);
+ /**
+ * Unmount() unregister the file system
+ * @param[in] filesystem_id A <code>PP_VARTYPE_STRING</code>
+ * @param[out] error A <code>PP_ProviderError</code>
+ * @param[in] callback <code>PP_CompletionCallback</code> called when the
+ * operation completes asynchronously.
+ */
+ int32_t (*Unmount)(PP_Resource filesystem_prov,
+ struct PP_Var filesystem_id,
+ PP_ProviderError_Dev* error,
+ struct PP_CompletionCallback callback);
+ /**
+ * Most of the operation will rely on the bellow 2 function calls to
+ * to report status to the browser.
+ * SendSuccessResponse() sends acknowledges the successful completion of the
+ * requested file system operation.
+ * @param[in] operation_type A <code>PP_OperationType_Dev</code>
+ * @param[in] request_id A <code>int32_t</code> the id of the request
+ */
+ int32_t (*SendSuccessResponse)(PP_Resource filesystem_prov,
+ PP_OperationType_Dev operation_type,
+ int32_t request_id);
+ /**
+ * SendErrorResponse() notifies the browser that the request failed.
+ * @param[in] operationType A <code>PP_ProviderError</code>
+ * @param[in] request_id A <code>int32_t</code>
+ */
+ int32_t (*SendErrorResponse)(PP_Resource filesystem_prov,
+ PP_OperationType_Dev operation_type,
+ PP_ProviderError_Dev error,
+ int32_t request_id);
+ /**
+ * Special functions that don't follow the above template
+ * for browser responses.
+ * SendMetadataSuccessResponse() acknowledges the successful retrieval of the
+ * metadata information
+ * @param[in] metadata A <code>PP_EntryMetadata_Dev</code>
+ * @param[in] request_id <code>int32_t</code>
+ */
+ int32_t (*SendMetadataSuccessResponse)(
+ PP_Resource filesystem_prov,
+ const struct PP_EntryMetadata_Dev* metadata,
+ int32_t request_id);
+ /**
+ * SendReadDirectorySuccessResponse acknowledges the successful retrieval of
+ * metadatas information for directories and files
+ * @param[in] array_size A <code>uint32_t</code>
+ * @param[in] entries several <code>PP_EntryMetadata_Dev</code>
+ * @param[in] has_more A <code>PP_VARTYPE_BOOL</code>
+ * @param[in] request_id A <code>int32_t</code>
+ */
+ int32_t (*SendReadDirectorySuccessResponse)(
+ PP_Resource filesystem_prov,
+ uint32_t array_size,
+ const struct PP_EntryMetadata_Dev entries[],
+ PP_Bool has_more,
+ int32_t request_id);
+ /**
+ * SendReadFileSuccessResponse() acknowledges the successful completion of a
+ * read request.
+ * @param[in] data_size A <code>uint32_t</code>
+ * @param[in] data A pointer to the begining of the file chunk read from file
+ * @param[in] has_more A <code>PP_VARTYPE_BOOL</code>
+ * @param[in] request_id A <code>int32_t</code>
+ */
+ int32_t (*SendReadFileSuccessResponse)(PP_Resource filesystem_prov,
+ uint32_t data_size,
+ const void* data,
+ PP_Bool has_more,
+ int32_t request_id);
+ /**
+ * GetNextRequest() registers a callback for any pending requests.
+ * @param[out] request A <code>PP_FilesystemRequest</code> this contains the
+ * request for a file system operation
+ * @param[in] callback A <code>PP_CompletionCallback</code> that is called
+ when
+ * a request becomes available.
+ */
+ int32_t (*GetNextRequest)(PP_Resource filesystem_prov,
+ struct PP_FilesystemRequest* request,
+ struct PP_CompletionCallback callback);
+ /**
+ * FreeWriteRequestBuffer frees resource buffer. This MUST be called after the
+ * request is processed
+ * @param[in] buffer A pointer to the start of the file chunk in memory
+ */
+ int32_t (*FreeWriteRequestBuffer)(PP_Resource filesystem_prov,
+ const void* buffer);
+};
+
+typedef struct PPB_FilesystemProvider_Dev_0_1 PPB_FilesystemProvider_Dev;
+/**
+ * @}
+ */
+
+#endif /* PPAPI_C_DEV_PPB_FILESYSTEMPROVIDER_DEV_H_ */
+

Powered by Google App Engine
This is Rietveld 408576698