15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/cpp/file_ref.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "ppapi/c/pp_bool.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_errors.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/cpp/completion_callback.h" 10c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "ppapi/cpp/directory_entry.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/cpp/file_system.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/cpp/module_impl.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace pp { 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace { 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)template <> const char* interface_name<PPB_FileRef_1_0>() { 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return PPB_FILEREF_INTERFACE_1_0; 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 22c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)template <> const char* interface_name<PPB_FileRef_1_1>() { 23c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return PPB_FILEREF_INTERFACE_1_1; 24c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)template <> const char* interface_name<PPB_FileRef_1_2>() { 275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return PPB_FILEREF_INTERFACE_1_2; 285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)FileRef::FileRef(PP_Resource resource) : Resource(resource) { 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)FileRef::FileRef(PassRef, PP_Resource resource) : Resource(PASS_REF, resource) { 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)FileRef::FileRef(const FileSystem& file_system, 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char* path) { 405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (has_interface<PPB_FileRef_1_2>()) { 415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) PassRefFromConstructor(get_interface<PPB_FileRef_1_2>()->Create( 425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) file_system.pp_resource(), path)); 435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } else if (has_interface<PPB_FileRef_1_1>()) { 44c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) PassRefFromConstructor(get_interface<PPB_FileRef_1_1>()->Create( 45c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) file_system.pp_resource(), path)); 46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } else if (has_interface<PPB_FileRef_1_0>()) { 47c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) PassRefFromConstructor(get_interface<PPB_FileRef_1_0>()->Create( 48c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) file_system.pp_resource(), path)); 49c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)FileRef::FileRef(const FileRef& other) 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : Resource(other) { 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)PP_FileSystemType FileRef::GetFileSystemType() const { 575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (has_interface<PPB_FileRef_1_2>()) 585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return get_interface<PPB_FileRef_1_2>()->GetFileSystemType(pp_resource()); 59c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (has_interface<PPB_FileRef_1_1>()) 60c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return get_interface<PPB_FileRef_1_1>()->GetFileSystemType(pp_resource()); 61c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (has_interface<PPB_FileRef_1_0>()) 62c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return get_interface<PPB_FileRef_1_0>()->GetFileSystemType(pp_resource()); 63c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return PP_FILESYSTEMTYPE_EXTERNAL; 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Var FileRef::GetName() const { 675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (has_interface<PPB_FileRef_1_2>()) { 685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return Var(PASS_REF, 695d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) get_interface<PPB_FileRef_1_2>()->GetName(pp_resource())); 705d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 71c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (has_interface<PPB_FileRef_1_1>()) { 72c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return Var(PASS_REF, 73c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) get_interface<PPB_FileRef_1_1>()->GetName(pp_resource())); 74c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 75c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (has_interface<PPB_FileRef_1_0>()) { 76c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return Var(PASS_REF, 77c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) get_interface<PPB_FileRef_1_0>()->GetName(pp_resource())); 78c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 79c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return Var(); 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Var FileRef::GetPath() const { 835d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (has_interface<PPB_FileRef_1_2>()) { 845d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return Var(PASS_REF, 855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) get_interface<PPB_FileRef_1_2>()->GetPath(pp_resource())); 865d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 87c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (has_interface<PPB_FileRef_1_1>()) { 88c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return Var(PASS_REF, 89c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) get_interface<PPB_FileRef_1_1>()->GetPath(pp_resource())); 90c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 91c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (has_interface<PPB_FileRef_1_0>()) { 92c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return Var(PASS_REF, 93c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) get_interface<PPB_FileRef_1_0>()->GetPath(pp_resource())); 94c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 95c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return Var(); 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)FileRef FileRef::GetParent() const { 995d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (has_interface<PPB_FileRef_1_2>()) { 1005d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return FileRef(PASS_REF, 1015d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) get_interface<PPB_FileRef_1_2>()->GetParent(pp_resource())); 1025d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 103c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (has_interface<PPB_FileRef_1_1>()) { 104c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return FileRef(PASS_REF, 105c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) get_interface<PPB_FileRef_1_1>()->GetParent(pp_resource())); 106c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 107c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (has_interface<PPB_FileRef_1_0>()) { 108c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return FileRef(PASS_REF, 109c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) get_interface<PPB_FileRef_1_0>()->GetParent(pp_resource())); 110c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 111c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return FileRef(); 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)int32_t FileRef::MakeDirectory(int32_t make_directory_flags, 1155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const CompletionCallback& cc) { 1165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (has_interface<PPB_FileRef_1_2>()) { 1175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return get_interface<PPB_FileRef_1_2>()->MakeDirectory( 118c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) pp_resource(), 1195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) make_directory_flags, 120c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) cc.pp_completion_callback()); 121c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 122c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (has_interface<PPB_FileRef_1_1>()) { 1235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (make_directory_flags & ~PP_MAKEDIRECTORYFLAG_WITH_ANCESTORS) 1245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return cc.MayForce(PP_ERROR_NOTSUPPORTED); 125c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return get_interface<PPB_FileRef_1_1>()->MakeDirectory( 126c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) pp_resource(), 1275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) PP_FromBool(make_directory_flags & PP_MAKEDIRECTORYFLAG_WITH_ANCESTORS), 128c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) cc.pp_completion_callback()); 129c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 130c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (has_interface<PPB_FileRef_1_0>()) { 1315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (make_directory_flags & ~PP_MAKEDIRECTORYFLAG_WITH_ANCESTORS) 1325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return cc.MayForce(PP_ERROR_NOTSUPPORTED); 133c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return get_interface<PPB_FileRef_1_0>()->MakeDirectory( 134c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) pp_resource(), 1355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) PP_FromBool(make_directory_flags & PP_MAKEDIRECTORYFLAG_WITH_ANCESTORS), 136c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) cc.pp_completion_callback()); 137c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 138c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return cc.MayForce(PP_ERROR_NOINTERFACE); 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int32_t FileRef::Touch(PP_Time last_access_time, 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_Time last_modified_time, 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const CompletionCallback& cc) { 1445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (has_interface<PPB_FileRef_1_2>()) { 1455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return get_interface<PPB_FileRef_1_2>()->Touch( 1465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) pp_resource(), last_access_time, last_modified_time, 1475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) cc.pp_completion_callback()); 1485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 149c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (has_interface<PPB_FileRef_1_1>()) { 150c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return get_interface<PPB_FileRef_1_1>()->Touch( 151c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) pp_resource(), last_access_time, last_modified_time, 152c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) cc.pp_completion_callback()); 153c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 154c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (has_interface<PPB_FileRef_1_0>()) { 155c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return get_interface<PPB_FileRef_1_0>()->Touch( 156c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) pp_resource(), last_access_time, last_modified_time, 157c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) cc.pp_completion_callback()); 158c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 159c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return cc.MayForce(PP_ERROR_NOINTERFACE); 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int32_t FileRef::Delete(const CompletionCallback& cc) { 1635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (has_interface<PPB_FileRef_1_2>()) { 1645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return get_interface<PPB_FileRef_1_2>()->Delete( 1655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) pp_resource(), cc.pp_completion_callback()); 1665d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 167c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (has_interface<PPB_FileRef_1_1>()) { 168c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return get_interface<PPB_FileRef_1_1>()->Delete( 169c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) pp_resource(), cc.pp_completion_callback()); 170c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 171c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (has_interface<PPB_FileRef_1_0>()) { 172c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return get_interface<PPB_FileRef_1_0>()->Delete( 173c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) pp_resource(), cc.pp_completion_callback()); 174c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 175c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return cc.MayForce(PP_ERROR_NOINTERFACE); 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int32_t FileRef::Rename(const FileRef& new_file_ref, 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const CompletionCallback& cc) { 1805d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (has_interface<PPB_FileRef_1_2>()) { 1815d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return get_interface<PPB_FileRef_1_2>()->Rename( 1825d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) pp_resource(), new_file_ref.pp_resource(), cc.pp_completion_callback()); 1835d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 184c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (has_interface<PPB_FileRef_1_1>()) { 185c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return get_interface<PPB_FileRef_1_1>()->Rename( 186c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) pp_resource(), new_file_ref.pp_resource(), cc.pp_completion_callback()); 187c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 188c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (has_interface<PPB_FileRef_1_0>()) { 189c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return get_interface<PPB_FileRef_1_0>()->Rename( 190c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) pp_resource(), new_file_ref.pp_resource(), cc.pp_completion_callback()); 191c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 192c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return cc.MayForce(PP_ERROR_NOINTERFACE); 193c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 194c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 195c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)int32_t FileRef::Query(const CompletionCallbackWithOutput<PP_FileInfo>& cc) { 1965d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (has_interface<PPB_FileRef_1_2>()) { 1975d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return get_interface<PPB_FileRef_1_2>()->Query( 1985d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) pp_resource(), cc.output(), cc.pp_completion_callback()); 1995d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 2005d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (has_interface<PPB_FileRef_1_1>()) { 2015d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return get_interface<PPB_FileRef_1_1>()->Query( 2025d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) pp_resource(), cc.output(), cc.pp_completion_callback()); 2035d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 2045d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return cc.MayForce(PP_ERROR_NOINTERFACE); 205c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 206c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 207c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)int32_t FileRef::ReadDirectoryEntries( 208c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const CompletionCallbackWithOutput<std::vector<DirectoryEntry> >& 209c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) callback) { 2105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (has_interface<PPB_FileRef_1_2>()) { 2115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return get_interface<PPB_FileRef_1_2>()->ReadDirectoryEntries( 2125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) pp_resource(), callback.output(), callback.pp_completion_callback()); 2135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 2145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (has_interface<PPB_FileRef_1_1>()) { 2155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return get_interface<PPB_FileRef_1_1>()->ReadDirectoryEntries( 2165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) pp_resource(), callback.output(), callback.pp_completion_callback()); 2175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 2185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return callback.MayForce(PP_ERROR_NOINTERFACE); 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace pp 222