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 #ifndef PPAPI_THUNK_PPB_FILE_REF_API_H_ 6 #define PPAPI_THUNK_PPB_FILE_REF_API_H_ 7 8 #include <vector> 9 10 #include "base/memory/linked_ptr.h" 11 #include "base/memory/ref_counted.h" 12 #include "ppapi/c/ppb_file_ref.h" 13 #include "ppapi/shared_impl/file_ref_create_info.h" 14 #include "ppapi/thunk/ppapi_thunk_export.h" 15 16 namespace ppapi { 17 18 struct FileRefCreateInfo; 19 class TrackedCallback; 20 21 namespace thunk { 22 23 class PPAPI_THUNK_EXPORT PPB_FileRef_API { 24 public: ~PPB_FileRef_API()25 virtual ~PPB_FileRef_API() {} 26 27 virtual PP_FileSystemType GetFileSystemType() const = 0; 28 virtual PP_Var GetName() const = 0; 29 virtual PP_Var GetPath() const = 0; 30 virtual PP_Resource GetParent() = 0; 31 virtual int32_t MakeDirectory(int32_t make_directory_flags, 32 scoped_refptr<TrackedCallback> callback) = 0; 33 virtual int32_t Touch(PP_Time last_access_time, 34 PP_Time last_modified_time, 35 scoped_refptr<TrackedCallback> callback) = 0; 36 virtual int32_t Delete(scoped_refptr<TrackedCallback> callback) = 0; 37 virtual int32_t Rename(PP_Resource new_file_ref, 38 scoped_refptr<TrackedCallback> callback) = 0; 39 virtual int32_t Query(PP_FileInfo* info, 40 scoped_refptr<TrackedCallback> callback) = 0; 41 virtual int32_t ReadDirectoryEntries( 42 const PP_ArrayOutput& output, 43 scoped_refptr<TrackedCallback> callback) = 0; 44 45 // Internal function for use in proxying. Returns the internal CreateInfo 46 // (the contained resource does not carry a ref on behalf of the caller). 47 virtual const FileRefCreateInfo& GetCreateInfo() const = 0; 48 49 // Private API 50 virtual PP_Var GetAbsolutePath() = 0; 51 }; 52 53 } // namespace thunk 54 } // namespace ppapi 55 56 #endif // PPAPI_THUNK_PPB_FILE_REF_API_H_ 57