Index: ppapi/cpp/dev/resource_array_dev.h |
diff --git a/ppapi/cpp/dev/resource_array_dev.h b/ppapi/cpp/dev/resource_array_dev.h |
index 9d9635cf5480ed2a4f0f1b9a09b832ee0039df44..f9daf5f0320d82a8c4836f87097cf2b262f15816 100644 |
--- a/ppapi/cpp/dev/resource_array_dev.h |
+++ b/ppapi/cpp/dev/resource_array_dev.h |
@@ -5,6 +5,8 @@ |
#ifndef PPAPI_CPP_DEV_RESOURCE_ARRAY_DEV_H_ |
#define PPAPI_CPP_DEV_RESOURCE_ARRAY_DEV_H_ |
+#include "ppapi/c/pp_array_output.h" |
+#include "ppapi/c/pp_completion_callback.h" |
#include "ppapi/c/pp_stdint.h" |
#include "ppapi/cpp/resource.h" |
@@ -14,6 +16,21 @@ class InstanceHandle; |
class ResourceArray_Dev : public Resource { |
public: |
+ // Heap-allocated data passed to ArrayOutputCallbackConverter(). Please see |
+ // the comment of ArrayOutputCallbackConverter() for more details. |
+ struct ArrayOutputCallbackData { |
+ ArrayOutputCallbackData(const PP_ArrayOutput& array_output, |
+ const PP_CompletionCallback& callback) |
+ : resource_array_output(0), |
+ output(array_output), |
+ original_callback(callback) { |
+ } |
+ |
+ PP_Resource resource_array_output; |
+ PP_ArrayOutput output; |
+ PP_CompletionCallback original_callback; |
+ }; |
+ |
ResourceArray_Dev(); |
ResourceArray_Dev(PassRef, PP_Resource resource); |
@@ -31,6 +48,22 @@ class ResourceArray_Dev : public Resource { |
uint32_t size() const; |
PP_Resource operator[](uint32_t index) const; |
+ |
+ // This is an adapter for backward compatibility. It works with those APIs |
+ // which take a PPB_ResourceArray_Dev resource as output parameter, and |
+ // returns results using PP_ArrayOutput. For example: |
+ // |
+ // ResourceArray_Dev::ArrayOutputCallbackData* data = |
+ // new ResourceArray_Dev::ArrayOutputCallbackData( |
+ // pp_array_output, callback); |
+ // ppb_foo->Bar( |
+ // foo_resource, &data->resource_array_output, |
+ // PP_MakeCompletionCallback( |
+ // &ResourceArray_Dev::ArrayOutputCallbackConverter, data)); |
+ // |
+ // It takes a heap-allocated ArrayOutputCallbackData struct passed as the user |
+ // data, and deletes it when the call completes. |
+ static void ArrayOutputCallbackConverter(void* user_data, int32_t result); |
}; |
} // namespace pp |