Index: ppapi/cpp/dev/filesystem_provider.cc |
diff --git a/ppapi/cpp/dev/filesystem_provider.cc b/ppapi/cpp/dev/filesystem_provider.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..83a4c09fceec39bd40b852e207a82d62385749fd |
--- /dev/null |
+++ b/ppapi/cpp/dev/filesystem_provider.cc |
@@ -0,0 +1,162 @@ |
+// 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/cpp/dev/filesystem_provider.h" |
+ |
+#include "ppapi/c/dev/ppb_filesystemprovider_dev.h" |
+#include "ppapi/c/pp_errors.h" |
+#include "ppapi/cpp/completion_callback.h" |
+#include "ppapi/cpp/instance.h" |
+#include "ppapi/cpp/instance_handle.h" |
+#include "ppapi/cpp/module.h" |
+#include "ppapi/cpp/module_impl.h" |
+ |
+ |
+ |
+namespace pp{ |
+ |
+namespace { |
+template <> const char* interface_name<PPB_FilesystemProvider_Dev_0_1>() { |
+ return PPB_FILESYSTEMPROVIDER_DEV_INTERFACE_0_1; |
+} |
+} // namespace |
+ |
+Filesystem_Provider_Dev::Filesystem_Provider_Dev( |
+ pp::Instance* instance) |
+ :associated_instance_(instance) { |
+ if (has_interface<PPB_FilesystemProvider_Dev_0_1>()) { |
+ PassRefFromConstructor( |
+ get_interface<PPB_FilesystemProvider_Dev_0_1>()->Create( |
+ associated_instance_.pp_instance() ) ); |
+ } |
+} |
+ |
+Filesystem_Provider_Dev::~Filesystem_Provider_Dev() { |
+} |
+ |
+bool Filesystem_Provider_Dev::IsAvailable() { |
+ return has_interface<PPB_FilesystemProvider_Dev_0_1>(); |
+} |
+ |
+int32_t Filesystem_Provider_Dev::Mount( |
+ const std::string& filesystem_id, |
+ const std::string& display_name, |
+ bool writable, int32_t opened_files_limit, |
+ const CompletionCallback& cc ) { |
+ if ( has_interface<PPB_FilesystemProvider_Dev_0_1>() ) { |
+ return get_interface<PPB_FilesystemProvider_Dev_0_1>()->Mount( |
+ pp_resource(), pp::Var(filesystem_id).pp_var(), |
+ pp::Var(display_name).pp_var(), |
+ PP_FromBool(writable), opened_files_limit, |
+ cc.pp_completion_callback() ); |
+ } |
+ |
+ return PP_ERROR_NOINTERFACE; |
+} |
+ |
+int32_t Filesystem_Provider_Dev :: Unmount( |
+ const std::string& filesystem_id, |
+ const CompletionCallback& cc ) { |
+ if( has_interface<PPB_FilesystemProvider_Dev_0_1>() ){ |
+ return get_interface<PPB_FilesystemProvider_Dev_0_1>()->Unmount( |
+ pp_resource(), pp::Var(filesystem_id).pp_var(), |
+ cc.pp_completion_callback() ); |
+ } |
+ return PP_ERROR_NOINTERFACE ; |
+} |
+ |
+ |
+int32_t Filesystem_Provider_Dev::Notify(const VarDictionary& options_notify) { |
+ if ( has_interface<PPB_FilesystemProvider_Dev_0_1>() ) { |
+ return get_interface< PPB_FilesystemProvider_Dev_0_1 >()->Notify( |
+ pp_resource(),options_notify.pp_var()); |
+ } |
+ return PP_ERROR_NOINTERFACE; |
+} |
+ |
+int32_t Filesystem_Provider_Dev::SendSuccessResponse( |
+ const PP_OperationType_Dev operation_type, |
+ int32_t request_id) { |
+ if ( has_interface<PPB_FilesystemProvider_Dev_0_1>()) { |
+ return get_interface<PPB_FilesystemProvider_Dev_0_1>( |
+ )->SendSuccessResponse( |
+ pp_resource(), operation_type, request_id ); |
+ } |
+ return PP_ERROR_NOINTERFACE; |
+} |
+ |
+int32_t Filesystem_Provider_Dev::SendErrorResponse( |
+ const PP_OperationType_Dev& operation_type, |
+ int32_t error, |
+ int32_t request_id) { |
+ if ( has_interface< PPB_FilesystemProvider_Dev_0_1 >() ){ |
+ return get_interface< PPB_FilesystemProvider_Dev_0_1 >( |
+ )->SendErrorResponse( |
+ pp_resource(), operation_type, error,request_id ); |
+ } |
+ return PP_ERROR_NOINTERFACE; |
+} |
+ |
+int32_t Filesystem_Provider_Dev :: SendMetadataSuccessResponse( |
+ const VarDictionary& metadata, |
+ int32_t request_id ) { |
+ if ( has_interface< PPB_FilesystemProvider_Dev_0_1>() ) { |
+ return get_interface< PPB_FilesystemProvider_Dev_0_1 > ( |
+ )->SendMetadataSuccessResponse( |
+ pp_resource(), metadata.pp_var(), request_id ); |
+ } |
+ return PP_ERROR_NOINTERFACE; |
+} |
+ |
+ |
+int32_t Filesystem_Provider_Dev :: SendReadDirectorySuccessResponse( |
+ const VarArray& entries, |
+ bool has_more, |
+ int32_t request_id ) { |
+ if ( has_interface< PPB_FilesystemProvider_Dev_0_1 >() ) { |
+ return get_interface< PPB_FilesystemProvider_Dev_0_1 >( |
+ )->SendReadDirectorySuccessResponse( |
+ pp_resource(), |
+ entries.pp_var(), |
+ PP_FromBool( has_more ),request_id ); |
+ } |
+ return PP_ERROR_NOINTERFACE; |
+} |
+ |
+int32_t Filesystem_Provider_Dev::SendReadFileSuccessResponse( |
+ uint32_t data_size, |
+ const char* data, bool has_more, |
+ int32_t request_id ) { |
+ if ( has_interface<PPB_FilesystemProvider_Dev_0_1 > () ) { |
+ return get_interface < PPB_FilesystemProvider_Dev_0_1 > ( |
+ )->SendReadFileSuccessResponse( |
+ pp_resource(), |
+ data_size, |
+ data, |
+ PP_FromBool(has_more), |
+ request_id ); |
+ } |
+ return PP_ERROR_NOINTERFACE; |
+} |
+ |
+int32_t Filesystem_Provider_Dev::GetNextRequest( |
+ const CompletionCallbackWithOutput<PP_FilesystemRequest>& cc) { |
+ if( has_interface<PPB_FilesystemProvider_Dev_0_1>() ){ |
+ return get_interface<PPB_FilesystemProvider_Dev_0_1>()->GetNextRequest( |
+ pp_resource(), cc.output(), cc.pp_completion_callback() ); |
+ } |
+ return PP_ERROR_NOINTERFACE ; |
+} |
+ |
+int32_t Filesystem_Provider_Dev::ReleaseRequestBuffer(int32_t request_id) { |
+ if ( has_interface<PPB_FilesystemProvider_Dev_0_1 > () ) { |
+ return get_interface < PPB_FilesystemProvider_Dev_0_1 > ( |
+ )->ReleaseRequestBuffer( |
+ pp_resource(), |
+ request_id ); |
+ } |
+ return PP_ERROR_NOINTERFACE; |
+} |
+ |
+} //namespace pp |