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/c/pp_file_info.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/ppb_file_ref.h" 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_completion_callback.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_errors.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/private/ppb_file_ref_private.h" 10d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#include "ppapi/shared_impl/file_ref_create_info.h" 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ppapi/shared_impl/proxy_lock.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/shared_impl/tracked_callback.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/thunk/enter.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/thunk/thunk.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/thunk/ppb_file_ref_api.h" 16c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "ppapi/thunk/ppb_file_system_api.h" 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/thunk/resource_creation_api.h" 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace ppapi { 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace thunk { 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace { 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef EnterResource<PPB_FileRef_API> EnterFileRef; 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)PP_Resource Create(PP_Resource file_system, const char* path) { 27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) VLOG(4) << "PPB_FileRef::Create()"; 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ppapi::ProxyAutoLock lock; 29c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EnterResourceNoLock<PPB_FileSystem_API> enter_file_system(file_system, true); 30c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (enter_file_system.failed()) 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 0; 32c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) PP_Instance instance = enter_file_system.resource()->pp_instance(); 33c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EnterResourceCreationNoLock enter(instance); 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (enter.failed()) 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 0; 36d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) FileRefCreateInfo info; 37d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) info.file_system_type = enter_file_system.object()->GetType(); 38d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) info.internal_path = std::string(path); 39d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) info.browser_pending_host_resource_id = 0; 40d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) info.renderer_pending_host_resource_id = 0; 41d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) info.file_system_plugin_resource = file_system; 42d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) return enter.functions()->CreateFileRef(instance, info); 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)PP_Bool IsFileRef(PP_Resource resource) { 46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) VLOG(4) << "PPB_FileRef::IsFileRef()"; 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EnterFileRef enter(resource, false); 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return PP_FromBool(enter.succeeded()); 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)PP_FileSystemType GetFileSystemType(PP_Resource file_ref) { 52c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) VLOG(4) << "PPB_FileRef::GetFileSystemType()"; 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EnterFileRef enter(file_ref, true); 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (enter.failed()) 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return PP_FILESYSTEMTYPE_INVALID; 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return enter.object()->GetFileSystemType(); 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)PP_Var GetName(PP_Resource file_ref) { 60c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) VLOG(4) << "PPB_FileRef::GetName()"; 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EnterFileRef enter(file_ref, true); 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (enter.failed()) 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return PP_MakeUndefined(); 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return enter.object()->GetName(); 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)PP_Var GetPath(PP_Resource file_ref) { 68c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) VLOG(4) << "PPB_FileRef::GetPath()"; 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EnterFileRef enter(file_ref, true); 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (enter.failed()) 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return PP_MakeUndefined(); 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return enter.object()->GetPath(); 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)PP_Resource GetParent(PP_Resource file_ref) { 76c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) VLOG(4) << "PPB_FileRef::GetParent()"; 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EnterFileRef enter(file_ref, true); 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (enter.failed()) 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 0; 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return enter.object()->GetParent(); 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int32_t MakeDirectory(PP_Resource directory_ref, 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_Bool make_ancestors, 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_CompletionCallback callback) { 86c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) VLOG(4) << "PPB_FileRef::MakeDirectory()"; 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EnterFileRef enter(directory_ref, callback, true); 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (enter.failed()) 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return enter.retval(); 905d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) int32_t flag = make_ancestors ? PP_MAKEDIRECTORYFLAG_WITH_ANCESTORS 915d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) : PP_MAKEDIRECTORYFLAG_NONE; 925d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return enter.SetResult(enter.object()->MakeDirectory( 935d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) flag, enter.callback())); 945d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 955d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 965d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)int32_t MakeDirectory_1_2(PP_Resource directory_ref, 975d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) int32_t make_directory_flags, 985d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) PP_CompletionCallback callback) { 995d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) VLOG(4) << "PPB_FileRef::MakeDirectory()"; 1005d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EnterFileRef enter(directory_ref, callback, true); 1015d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (enter.failed()) 1025d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return enter.retval(); 1035d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return enter.SetResult(enter.object()->MakeDirectory( 1045d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) make_directory_flags, enter.callback())); 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int32_t Touch(PP_Resource file_ref, 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_Time last_access_time, 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_Time last_modified_time, 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_CompletionCallback callback) { 111c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) VLOG(4) << "PPB_FileRef::Touch()"; 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EnterFileRef enter(file_ref, callback, true); 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (enter.failed()) 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return enter.retval(); 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return enter.SetResult(enter.object()->Touch( 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) last_access_time, last_modified_time, enter.callback())); 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int32_t Delete(PP_Resource file_ref, 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_CompletionCallback callback) { 121c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) VLOG(4) << "PPB_FileRef::Delete()"; 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EnterFileRef enter(file_ref, callback, true); 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (enter.failed()) 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return enter.retval(); 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return enter.SetResult(enter.object()->Delete(enter.callback())); 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int32_t Rename(PP_Resource file_ref, 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_Resource new_file_ref, 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_CompletionCallback callback) { 131c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) VLOG(4) << "PPB_FileRef::Rename()"; 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EnterFileRef enter(file_ref, callback, true); 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (enter.failed()) 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return enter.retval(); 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return enter.SetResult(enter.object()->Rename(new_file_ref, 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) enter.callback())); 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 139c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)int32_t Query(PP_Resource file_ref, 140c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) PP_FileInfo* info, 141c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) PP_CompletionCallback callback) { 142c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) VLOG(4) << "PPB_FileRef::Query()"; 143c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EnterFileRef enter(file_ref, callback, true); 144c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (enter.failed()) 145c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return enter.retval(); 146c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return enter.SetResult(enter.object()->Query(info, 147c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) enter.callback())); 148c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 149c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 150c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)int32_t ReadDirectoryEntries(PP_Resource file_ref, 151c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) PP_ArrayOutput output, 152c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) PP_CompletionCallback callback) { 153c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EnterFileRef enter(file_ref, callback, true); 154c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (enter.failed()) 155c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return enter.retval(); 156c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return enter.SetResult(enter.object()->ReadDirectoryEntries( 157c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) output, enter.callback())); 158c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 159c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)PP_Var GetAbsolutePath(PP_Resource file_ref) { 161c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) VLOG(4) << "PPB_FileRef::GetAbsolutePath"; 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EnterFileRef enter(file_ref, true); 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (enter.failed()) 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return PP_MakeUndefined(); 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return enter.object()->GetAbsolutePath(); 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 168c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)const PPB_FileRef_1_0 g_ppb_file_ref_thunk_1_0 = { 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &Create, 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &IsFileRef, 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &GetFileSystemType, 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &GetName, 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &GetPath, 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &GetParent, 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &MakeDirectory, 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &Touch, 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &Delete, 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &Rename 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 181c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)const PPB_FileRef_1_1 g_ppb_file_ref_thunk_1_1 = { 182c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) &Create, 183c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) &IsFileRef, 184c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) &GetFileSystemType, 185c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) &GetName, 186c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) &GetPath, 187c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) &GetParent, 188c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) &MakeDirectory, 189c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) &Touch, 190c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) &Delete, 191c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) &Rename, 192c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) &Query, 193c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) &ReadDirectoryEntries 194c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}; 195c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1965d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)const PPB_FileRef_1_2 g_ppb_file_ref_thunk_1_2 = { 1975d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) &Create, 1985d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) &IsFileRef, 1995d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) &GetFileSystemType, 2005d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) &GetName, 2015d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) &GetPath, 2025d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) &GetParent, 2035d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) &MakeDirectory_1_2, 2045d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) &Touch, 2055d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) &Delete, 2065d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) &Rename, 2075d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) &Query, 2085d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) &ReadDirectoryEntries 2095d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}; 2105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const PPB_FileRefPrivate g_ppb_file_ref_private_thunk = { 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &GetAbsolutePath 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const PPB_FileRef_1_0* GetPPB_FileRef_1_0_Thunk() { 218c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return &g_ppb_file_ref_thunk_1_0; 219c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 220c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 221c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)const PPB_FileRef_1_1* GetPPB_FileRef_1_1_Thunk() { 222c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return &g_ppb_file_ref_thunk_1_1; 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)const PPB_FileRef_1_2* GetPPB_FileRef_1_2_Thunk() { 2265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return &g_ppb_file_ref_thunk_1_2; 2275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 2285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const PPB_FileRefPrivate_0_1* GetPPB_FileRefPrivate_0_1_Thunk() { 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return &g_ppb_file_ref_private_thunk; 2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace thunk 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace ppapi 235