Index: trunk/src/ppapi/thunk/ppb_file_ref_api.h |
=================================================================== |
--- trunk/src/ppapi/thunk/ppb_file_ref_api.h (revision 217031) |
+++ trunk/src/ppapi/thunk/ppb_file_ref_api.h (working copy) |
@@ -10,12 +10,11 @@ |
#include "base/memory/linked_ptr.h" |
#include "base/memory/ref_counted.h" |
#include "ppapi/c/ppb_file_ref.h" |
-#include "ppapi/shared_impl/file_ref_create_info.h" |
#include "ppapi/thunk/ppapi_thunk_export.h" |
namespace ppapi { |
-struct FileRefCreateInfo; |
+struct PPB_FileRef_CreateInfo; |
class TrackedCallback; |
namespace thunk { |
@@ -41,10 +40,25 @@ |
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). |
- virtual const FileRefCreateInfo& GetCreateInfo() const = 0; |
+ virtual const PPB_FileRef_CreateInfo& GetCreateInfo() const = 0; |
// Private API |
virtual PP_Var GetAbsolutePath() = 0; |