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.
5 #ifndef PPAPI_THUNK_PPB_FILE_REF_API_H_
6 #define PPAPI_THUNK_PPB_FILE_REF_API_H_
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/thunk/ppapi_thunk_export.h"
17 struct PPB_FileRef_CreateInfo
;
18 class TrackedCallback
;
22 class PPAPI_THUNK_EXPORT PPB_FileRef_API
{
24 virtual ~PPB_FileRef_API() {}
26 virtual PP_FileSystemType
GetFileSystemType() const = 0;
27 virtual PP_Var
GetName() const = 0;
28 virtual PP_Var
GetPath() const = 0;
29 virtual PP_Resource
GetParent() = 0;
30 virtual int32_t MakeDirectory(PP_Bool make_ancestors
,
31 scoped_refptr
<TrackedCallback
> callback
) = 0;
32 virtual int32_t Touch(PP_Time last_access_time
,
33 PP_Time last_modified_time
,
34 scoped_refptr
<TrackedCallback
> callback
) = 0;
35 virtual int32_t Delete(scoped_refptr
<TrackedCallback
> callback
) = 0;
36 virtual int32_t Rename(PP_Resource new_file_ref
,
37 scoped_refptr
<TrackedCallback
> callback
) = 0;
38 virtual int32_t Query(PP_FileInfo
* info
,
39 scoped_refptr
<TrackedCallback
> callback
) = 0;
40 virtual int32_t ReadDirectoryEntries(
41 const PP_ArrayOutput
& output
,
42 scoped_refptr
<TrackedCallback
> callback
) = 0;
43 // We define variants of Query and ReadDirectoryEntries because
44 // 1. we need to take linked_ptr instead of raw pointers to avoid
45 // use-after-free, and 2. we don't use PP_ArrayOutput for the
46 // communication between renderers and the browser in
47 // ReadDirectoryEntries. The *InHost functions must not be called in
48 // plugins, and Query and ReadDirectoryEntries must not be called in
50 // TODO(hamaji): These functions must be removed when we move
51 // FileRef to the new resource design. http://crbug.com/225441
52 virtual int32_t QueryInHost(linked_ptr
<PP_FileInfo
> info
,
53 scoped_refptr
<TrackedCallback
> callback
) = 0;
54 virtual int32_t ReadDirectoryEntriesInHost(
55 linked_ptr
<std::vector
<ppapi::PPB_FileRef_CreateInfo
> > files
,
56 linked_ptr
<std::vector
<PP_FileType
> > file_types
,
57 scoped_refptr
<TrackedCallback
> callback
) = 0;
59 // Internal function for use in proxying. Returns the internal CreateInfo
60 // (the contained resource does not carry a ref on behalf of the caller).
61 virtual const PPB_FileRef_CreateInfo
& GetCreateInfo() const = 0;
64 virtual PP_Var
GetAbsolutePath() = 0;
70 #endif // PPAPI_THUNK_PPB_FILE_REF_API_H_