1// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "ppapi/cpp/file_system.h" 6 7#include "ppapi/c/pp_errors.h" 8#include "ppapi/c/ppb_file_system.h" 9#include "ppapi/cpp/completion_callback.h" 10#include "ppapi/cpp/file_ref.h" 11#include "ppapi/cpp/instance_handle.h" 12#include "ppapi/cpp/logging.h" 13#include "ppapi/cpp/module.h" 14#include "ppapi/cpp/module_impl.h" 15 16namespace pp { 17 18namespace { 19 20template <> const char* interface_name<PPB_FileSystem_1_0>() { 21 return PPB_FILESYSTEM_INTERFACE_1_0; 22} 23 24} // namespace 25 26FileSystem::FileSystem() { 27} 28 29FileSystem::FileSystem(const FileSystem& other) : Resource(other) { 30} 31 32FileSystem::FileSystem(const Resource& resource) : Resource(resource) { 33 if (!IsFileSystem(resource)) { 34 PP_NOTREACHED(); 35 36 // On release builds, set this to null. 37 Clear(); 38 } 39} 40 41FileSystem::FileSystem(PassRef, PP_Resource resource) 42 : Resource(PASS_REF, resource) { 43} 44 45FileSystem::FileSystem(const InstanceHandle& instance, 46 PP_FileSystemType type) { 47 if (!has_interface<PPB_FileSystem_1_0>()) 48 return; 49 PassRefFromConstructor(get_interface<PPB_FileSystem_1_0>()->Create( 50 instance.pp_instance(), type)); 51} 52 53int32_t FileSystem::Open(int64_t expected_size, 54 const CompletionCallback& cc) { 55 if (!has_interface<PPB_FileSystem_1_0>()) 56 return cc.MayForce(PP_ERROR_NOINTERFACE); 57 return get_interface<PPB_FileSystem_1_0>()->Open( 58 pp_resource(), expected_size, cc.pp_completion_callback()); 59} 60 61// static 62bool FileSystem::IsFileSystem(const Resource& resource) { 63 if (!has_interface<PPB_FileSystem_1_0>()) 64 return false; 65 return get_interface<PPB_FileSystem_1_0>()->IsFileSystem( 66 resource.pp_resource()) == PP_TRUE; 67} 68 69} // namespace pp 70