| 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
|
|
|