Index: ppapi/thunk/ppb_file_ref_api.h |
diff --git a/ppapi/thunk/ppb_file_ref_api.h b/ppapi/thunk/ppb_file_ref_api.h |
index 4ec5314d122892113d4169d544016cf5d69143d5..ba92b63fcc44664ad8bc447283e424094f15efe0 100644 |
--- a/ppapi/thunk/ppb_file_ref_api.h |
+++ b/ppapi/thunk/ppb_file_ref_api.h |
@@ -5,6 +5,9 @@ |
#ifndef PPAPI_THUNK_PPB_FILE_REF_API_H_ |
#define PPAPI_THUNK_PPB_FILE_REF_API_H_ |
+#include <vector> |
+ |
+#include "base/memory/linked_ptr.h" |
#include "base/memory/ref_counted.h" |
#include "ppapi/c/ppb_file_ref.h" |
#include "ppapi/thunk/ppapi_thunk_export.h" |
@@ -34,6 +37,24 @@ class PPAPI_THUNK_EXPORT PPB_FileRef_API { |
scoped_refptr<TrackedCallback> callback) = 0; |
virtual int32_t Query(PP_FileInfo* info, |
scoped_refptr<TrackedCallback> callback) = 0; |
+ virtual int32_t ReadDirectoryEntries( |
+ const PP_ArrayOutput& output, |
+ scoped_refptr<TrackedCallback> callback) = 0; |
+ // We define variants of Query and ReadDirectoryEntries because |
+ // 1. we need to take linked_ptr instead of raw pointers to avoid |
+ // use-after-free, and 2. we don't use PP_ArrayOutput for the |
+ // communication between renderers and the browser in |
+ // ReadDirectoryEntries. The *InHost functions must not be called in |
+ // plugins, and Query and ReadDirectoryEntries must not be called in |
+ // renderers. |
+ // TODO(hamaji): These functions must be removed when we move |
+ // FileRef to the new resource design. http://crbug.com/225441 |
+ virtual int32_t QueryInHost(linked_ptr<PP_FileInfo> info, |
+ scoped_refptr<TrackedCallback> callback) = 0; |
+ virtual int32_t ReadDirectoryEntriesInHost( |
+ linked_ptr<std::vector<ppapi::PPB_FileRef_CreateInfo> > files, |
+ linked_ptr<std::vector<PP_FileType> > file_types, |
+ scoped_refptr<TrackedCallback> callback) = 0; |
// Internal function for use in proxying. Returns the internal CreateInfo |
// (the contained resource does not carry a ref on behalf of the caller). |