| 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..07f65555ef02d5eb0cc109b500d3acbcc1e5abb1
|
| --- /dev/null
|
| +++ b/ppapi/thunk/ppb_filesystem_provider_thunk.cc
|
| @@ -0,0 +1,181 @@
|
| +// 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,
|
| + PP_ProviderError_Dev* error,
|
| + 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,
|
| + error, enter.callback() ) );
|
| +}
|
| +
|
| +int32_t Unmount(
|
| + PP_Resource filesystem_prov,
|
| + struct PP_Var filesystemId,
|
| + PP_ProviderError_Dev* error,
|
| + 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,
|
| + error,
|
| + enter.callback() ) );
|
| +}
|
| +
|
| +int32_t SendMetadataSuccessResponse(
|
| + PP_Resource filesystem_prov,
|
| + const struct PP_EntryMetadata_Dev* 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,
|
| + uint32_t array_size,
|
| + const struct PP_EntryMetadata_Dev 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(
|
| + array_size, 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,
|
| + PP_ProviderError_Dev 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 FreeWriteRequestBuffer(PP_Resource filesystem_prov,
|
| + const void* buffer) {
|
| + EnterResource<PPB_FilesystemProvider_API> enter( filesystem_prov, true );
|
| + if(enter.failed())
|
| + return enter.retval();
|
| + return enter.object()->FreeWriteRequestBuffer(buffer);
|
| +}
|
| +
|
| +const PPB_FilesystemProvider_Dev_0_1 g_ppb_fs_provider_dev_thunk_0_1 = {
|
| + &Create,
|
| + &IsFilesystemProvider,
|
| + &Mount,
|
| + &Unmount,
|
| + &SendSuccessResponse,
|
| + &SendErrorResponse,
|
| + &SendMetadataSuccessResponse,
|
| + &SendReadDirectorySuccessResponse,
|
| + &SendReadFileSuccessResponse,
|
| + &GetNextRequest,
|
| + &FreeWriteRequestBuffer
|
| +};
|
| +
|
| +} // 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
|
|
|