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 16namespace ppapi { 17 18struct FileRefCreateInfo; 19class TrackedCallback; 20 21namespace thunk { 22 23class PPAPI_THUNK_EXPORT PPB_FileRef_API { 24 public: 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