Android WebView: build debug/release based on variant.
[chromium-blink-merge.git] / ppapi / thunk / ppb_file_ref_api.h
blobba92b63fcc44664ad8bc447283e424094f15efe0
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_
8 #include <vector>
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"
15 namespace ppapi {
17 struct PPB_FileRef_CreateInfo;
18 class TrackedCallback;
20 namespace thunk {
22 class PPAPI_THUNK_EXPORT PPB_FileRef_API {
23 public:
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
49 // renderers.
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;
63 // Private API
64 virtual PP_Var GetAbsolutePath() = 0;
67 } // namespace thunk
68 } // namespace ppapi
70 #endif // PPAPI_THUNK_PPB_FILE_REF_API_H_