Home | History | Annotate | Download | only in cpp
      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 
     16 namespace pp {
     17 
     18 namespace {
     19 
     20 template <> const char* interface_name<PPB_FileSystem_1_0>() {
     21   return PPB_FILESYSTEM_INTERFACE_1_0;
     22 }
     23 
     24 }  // namespace
     25 
     26 FileSystem::FileSystem() {
     27 }
     28 
     29 FileSystem::FileSystem(const FileSystem& other) : Resource(other) {
     30 }
     31 
     32 FileSystem::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 
     41 FileSystem::FileSystem(PassRef, PP_Resource resource)
     42     : Resource(PASS_REF, resource) {
     43 }
     44 
     45 FileSystem::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 
     53 int32_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
     62 bool 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