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..643f1404cb2498444728b170e2700b39e260372f |
--- /dev/null |
+++ b/ppapi/cpp/dev/filesystem_provider.cc |
@@ -0,0 +1,154 @@ |
+// 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 CompletionCallbackWithOutput<PP_ProviderError_Dev>& 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.output(), cc.pp_completion_callback() ); |
+ } |
+ |
+ return PP_ERROR_NOINTERFACE; |
+} |
+ |
+int32_t Filesystem_Provider_Dev :: Unmount( |
+ const std::string& filesystem_id, |
+ const CompletionCallbackWithOutput<PP_ProviderError_Dev>& 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.output(), cc.pp_completion_callback() ); |
+ } |
+ return PP_ERROR_NOINTERFACE ; |
+} |
+ |
+int32_t pp::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, |
+ const PP_ProviderError_Dev& 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 PP_EntryMetadata_Dev& 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, request_id ); |
+ } |
+ return PP_ERROR_NOINTERFACE; |
+} |
+ |
+ |
+int32_t Filesystem_Provider_Dev :: SendReadDirectorySuccessResponse( |
+ const std::vector<PP_EntryMetadata_Dev>& 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.size(), |
+ entries.size() ? |
+ &entries[0] : NULL, |
+ 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::FreeWriteRequestBuffer(const void* buffer) { |
+ if ( has_interface<PPB_FilesystemProvider_Dev_0_1 > () ) { |
+ return get_interface < PPB_FilesystemProvider_Dev_0_1 > ( |
+ )->FreeWriteRequestBuffer( |
+ pp_resource(), |
+ buffer ); |
+ } |
+ return PP_ERROR_NOINTERFACE; |
+} |
+} //namespace pp |