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 |