Index: content/renderer/browser_plugin/browser_plugin_manager_impl.cc |
diff --git a/content/renderer/browser_plugin/browser_plugin_manager_impl.cc b/content/renderer/browser_plugin/browser_plugin_manager_impl.cc |
index 524ce99dfbfc339908ffa3415a3b5c7e6653b6ab..bf2991eab30ff3a1f249f7104355cd2f34d02bda 100644 |
--- a/content/renderer/browser_plugin/browser_plugin_manager_impl.cc |
+++ b/content/renderer/browser_plugin/browser_plugin_manager_impl.cc |
@@ -14,7 +14,8 @@ namespace content { |
BrowserPluginManagerImpl::BrowserPluginManagerImpl( |
RenderViewImpl* render_view) |
- : BrowserPluginManager(render_view) { |
+ : BrowserPluginManager(render_view), |
+ request_id_counter_(0) { |
} |
BrowserPluginManagerImpl::~BrowserPluginManagerImpl() { |
@@ -24,10 +25,15 @@ BrowserPlugin* BrowserPluginManagerImpl::CreateBrowserPlugin( |
RenderViewImpl* render_view, |
WebKit::WebFrame* frame, |
const WebKit::WebPluginParams& params) { |
- return new BrowserPlugin(++browser_plugin_counter_, |
- render_view, |
- frame, |
- params); |
+ return new BrowserPlugin(render_view, frame, params); |
+} |
+ |
+void BrowserPluginManagerImpl::AllocateInstanceID( |
+ BrowserPlugin* browser_plugin) { |
+ int request_id = request_id_counter_++; |
+ pending_allocate_instance_id_requests_.AddWithID(browser_plugin, request_id); |
+ Send(new BrowserPluginHostMsg_AllocateInstanceID( |
+ browser_plugin->render_view_routing_id(), request_id)); |
} |
bool BrowserPluginManagerImpl::Send(IPC::Message* msg) { |
@@ -49,6 +55,8 @@ bool BrowserPluginManagerImpl::OnMessageReceived( |
bool handled = true; |
IPC_BEGIN_MESSAGE_MAP(BrowserPluginManagerImpl, message) |
+ IPC_MESSAGE_HANDLER(BrowserPluginMsg_AllocateInstanceID_ACK, |
+ OnAllocateInstanceIDACK) |
IPC_MESSAGE_HANDLER(BrowserPluginMsg_BuffersSwapped, |
OnUnhandledSwap); |
IPC_MESSAGE_HANDLER(BrowserPluginMsg_PluginAtPositionRequest, |
@@ -58,6 +66,15 @@ bool BrowserPluginManagerImpl::OnMessageReceived( |
return handled; |
} |
+void BrowserPluginManagerImpl::OnAllocateInstanceIDACK( |
+ const IPC::Message& message, int request_id, int instance_id) { |
+ BrowserPlugin* plugin = |
+ pending_allocate_instance_id_requests_.Lookup(request_id); |
+ pending_allocate_instance_id_requests_.Remove(request_id); |
+ if (plugin) |
+ plugin->SetInstanceID(instance_id); |
+} |
+ |
void BrowserPluginManagerImpl::OnPluginAtPositionRequest( |
const IPC::Message& message, |
int request_id, |