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

Unified Diff: ppapi/thunk/ppb_filesystem_provider_thunk.cc

Issue 1093383002: [WIP] Provided file system from NACL. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Moved several modules to chromeos folder. Created 5 years, 5 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
« no previous file with comments | « ppapi/thunk/ppb_filesystem_provider_api.h ('k') | ppapi/thunk/resource_creation_api.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ppapi/thunk/ppb_filesystem_provider_thunk.cc
diff --git a/ppapi/thunk/ppb_filesystem_provider_thunk.cc b/ppapi/thunk/ppb_filesystem_provider_thunk.cc
new file mode 100644
index 0000000000000000000000000000000000000000..4801bd8c8f442cf32cb623f08b208609b892572e
--- /dev/null
+++ b/ppapi/thunk/ppb_filesystem_provider_thunk.cc
@@ -0,0 +1,186 @@
+// 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.
+#include "ppapi/c/dev/ppb_filesystemprovider_dev.h"
+#include "ppapi/thunk/enter.h"
+#include "ppapi/thunk/ppb_filesystem_provider_api.h"
+#include "ppapi/thunk/ppb_instance_api.h"
+#include "ppapi/thunk/thunk.h"
+
+namespace ppapi {
+namespace thunk {
+
+namespace {
+
+/*
+ * The implementation of the interfaces
+ */
+
+PP_Resource Create(PP_Instance instance) {
+ EnterResourceCreation enter( instance );
+ if ( enter.failed() )
+ return 0;
+ return enter.functions()->CreateFilesystemProvider(instance);
+}
+
+PP_Bool IsFilesystemProvider(PP_Resource resource) {
+ EnterResource< PPB_FilesystemProvider_API > enter( resource, true );
+ return PP_FromBool( enter.succeeded() );
+}
+
+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,
+ struct PP_CompletionCallback callback) {
+
+ EnterResource< PPB_FilesystemProvider_API > enter(
+ filesystem_prov,
+ callback,
+ true );
+ if (enter.failed())
+ return enter.retval();
+ return enter.SetResult (enter.object()->Mount(
+ filesystem_id, display_name,
+ writable, opened_files_limit,
+ enter.callback() ) );
+}
+
+int32_t Unmount(
+ PP_Resource filesystem_prov,
+ struct PP_Var filesystemId,
+ struct PP_CompletionCallback callback) {
+ EnterResource< PPB_FilesystemProvider_API > enter(
+ filesystem_prov,
+ callback,
+ true );
+ if (enter.failed())
+ return enter.retval();
+
+ return enter.SetResult( enter.object()->Unmount(
+ filesystemId,
+ enter.callback() ) );
+}
+
+int32_t Notify(PP_Resource filesystem_prov,struct PP_Var notify_options) {
+ EnterResource< PPB_FilesystemProvider_API > enter( filesystem_prov,
+ true );
+ if (enter.failed())
+ return enter.retval();
+ return enter.object()->Notify(notify_options);
+}
+
+int32_t SendMetadataSuccessResponse(
+ PP_Resource filesystem_prov,
+ struct PP_Var metadata,
+ int32_t request_id ) {
+ EnterResource< PPB_FilesystemProvider_API > enter( filesystem_prov, true);
+ if (enter.failed())
+ return enter.retval();
+
+ return enter.object()->SendMetadataSuccessResponse(
+ metadata, request_id );
+}
+
+int32_t SendReadDirectorySuccessResponse(
+ PP_Resource filesystem_prov,
+ struct PP_Var entries,
+ PP_Bool has_more,
+ int32_t request_id) {
+ EnterResource< PPB_FilesystemProvider_API > enter(filesystem_prov, true);
+ if (enter.failed())
+ return enter.retval();
+
+ return enter.object()->SendReadDirectorySuccessResponse(
+ entries, has_more, request_id ) ;
+
+}
+
+int32_t SendReadFileSuccessResponse(
+ PP_Resource filesystem_prov,
+ uint32_t data_size,
+ const void* data,
+ PP_Bool has_more,
+ int32_t request_id) {
+ EnterResource< PPB_FilesystemProvider_API > enter( filesystem_prov, true);
+ if (enter.failed())
+ return enter.retval();
+
+ return enter.object()->SendReadFileSuccessResponse(
+ data_size, data, has_more, request_id ) ;
+}
+
+int32_t SendSuccessResponse(
+ PP_Resource filesystem_prov,
+ PP_OperationType_Dev operation_type,
+ int32_t request_id ) {
+ EnterResource< PPB_FilesystemProvider_API > enter( filesystem_prov, true );
+ if( enter.failed() )
+ return enter.retval();
+ return enter.object()->SendSuccessResponse( operation_type, request_id );
+}
+
+int32_t SendErrorResponse(
+ PP_Resource filesystem_prov,
+ PP_OperationType_Dev operation_type,
+ int32_t error,
+ int32_t request_id ) {
+ EnterResource< PPB_FilesystemProvider_API > enter( filesystem_prov, true );
+ if( enter.failed() )
+ return enter.retval();
+
+ return enter.object()->SendErrorResponse(
+ operation_type, error, request_id ) ;
+}
+
+
+int32_t GetNextRequest(
+ PP_Resource filesystem_prov,
+ PP_FilesystemRequest* request,
+ struct PP_CompletionCallback callback) {
+ EnterResource< PPB_FilesystemProvider_API > enter(
+ filesystem_prov,
+ callback,
+ true );
+ if (enter.failed())
+ return enter.retval();
+
+ return enter.SetResult( enter.object()->GetNextRequest(
+ request,
+ enter.callback() ) );
+}
+
+int32_t ReleaseRequestBuffer(PP_Resource filesystem_prov,
+ int32_t request_id) {
+ EnterResource<PPB_FilesystemProvider_API> enter( filesystem_prov, true );
+ if(enter.failed())
+ return enter.retval();
+ return enter.object()->ReleaseRequestBuffer(request_id);
+}
+
+const PPB_FilesystemProvider_Dev_0_1 g_ppb_fs_provider_dev_thunk_0_1 = {
+ &Create,
+ &IsFilesystemProvider,
+ &Mount,
+ &Unmount,
+ &Notify,
+ &SendSuccessResponse,
+ &SendErrorResponse,
+ &SendMetadataSuccessResponse,
+ &SendReadDirectorySuccessResponse,
+ &SendReadFileSuccessResponse,
+ &GetNextRequest,
+ &ReleaseRequestBuffer
+};
+
+} // namespace
+
+PPAPI_THUNK_EXPORT const PPB_FilesystemProvider_Dev_0_1*
+GetPPB_FilesystemProvider_Dev_0_1_Thunk() {
+ return &g_ppb_fs_provider_dev_thunk_0_1;
+}
+
+} // thunk namespace
+} // ppapi namespace
« no previous file with comments | « ppapi/thunk/ppb_filesystem_provider_api.h ('k') | ppapi/thunk/resource_creation_api.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698