Index: content/renderer/pepper/resource_converter.h |
diff --git a/content/renderer/pepper/resource_converter.h b/content/renderer/pepper/resource_converter.h |
index d669e7464b4ad094dc4fb0eb3eea10bc0e92c990..eca2412ac04c36a413c89496d78433589a916657 100644 |
--- a/content/renderer/pepper/resource_converter.h |
+++ b/content/renderer/pepper/resource_converter.h |
@@ -11,6 +11,7 @@ |
#include "base/callback.h" |
#include "base/compiler_specific.h" |
#include "base/memory/ref_counted.h" |
+#include "base/memory/weak_ptr.h" |
#include "content/common/content_export.h" |
#include "content/renderer/pepper/host_resource_var.h" |
#include "ppapi/c/pp_instance.h" |
@@ -22,9 +23,15 @@ class Message; |
} |
namespace ppapi { |
+ |
class ScopedPPVar; |
+ |
+namespace proxy { |
+struct CompletedBrowserResourceHosts; |
} |
+} // namespace ppapi |
+ |
namespace content { |
// This class is responsible for converting V8 vars to Pepper resources. |
@@ -79,6 +86,16 @@ class ResourceConverterImpl : public ResourceConverter { |
v8::Handle<v8::Value>* result) override; |
private: |
+ typedef std::vector<scoped_refptr<HostResourceVar>> HostResourceVarVector; |
+ |
+ struct PendingConversion { |
+ PendingConversion(); |
+ ~PendingConversion(); |
+ int sequence_num; |
+ base::Callback<void(bool)> callback; |
+ HostResourceVarVector browser_vars; |
+ }; |
+ |
// Creates a resource var with the given |pending_renderer_id| and |
// |create_message| to be sent to the plugin. |
scoped_refptr<HostResourceVar> CreateResourceVar( |
@@ -93,6 +110,8 @@ class ResourceConverterImpl : public ResourceConverter { |
const IPC::Message& create_message, |
const IPC::Message& browser_host_create_message); |
+ void FlushComplete(const ppapi::proxy::CompletedBrowserResourceHosts& hosts); |
+ |
// The instance this ResourceConverter is associated with. |
PP_Instance instance_; |
@@ -100,8 +119,11 @@ class ResourceConverterImpl : public ResourceConverter { |
// array to |browser_vars|. It is kept as a parallel array so that it can be |
// conveniently passed to |CreateBrowserResourceHosts|. |
std::vector<IPC::Message> browser_host_create_messages_; |
- // A list of the resource vars associated with browser hosts. |
- std::vector<scoped_refptr<HostResourceVar> > browser_vars_; |
+ HostResourceVarVector browser_vars_; |
+ |
+ std::queue<PendingConversion> pending_conversions_; |
+ |
+ base::WeakPtrFactory<ResourceConverterImpl> weak_ptr_factory_; |
DISALLOW_COPY_AND_ASSIGN(ResourceConverterImpl); |
}; |