Chromium Code Reviews| 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 7eb0b713cddad1428d3132d8b55219293efedfb9..d9ad7f295973cbba2b6c8f483cf5e7840d6144f5 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_counter_(0) { |
|
lazyboy
2013/01/17 17:39:25
nit: request_id_counter_ so it's obvious that this
Fady Samuel
2013/01/17 18:40:38
Done.
|
| } |
| 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_counter_++; |
| + requests_.AddWithID(browser_plugin, request_id); |
|
lazyboy
2013/01/17 17:39:25
requests_ probably too broad name, maybe name it t
Fady Samuel
2013/01/17 18:40:38
Done.
|
| + Send(new BrowserPluginHostMsg_AllocateInstanceIDRequest( |
| + 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_GENERIC(BrowserPluginMsg_AllocateInstanceIDResponse, |
| + OnAllocateInstanceIDResponse(message)) |
| IPC_MESSAGE_HANDLER(BrowserPluginMsg_PluginAtPositionRequest, |
| OnPluginAtPositionRequest); |
| IPC_MESSAGE_UNHANDLED(handled = false) |
| @@ -56,6 +64,18 @@ bool BrowserPluginManagerImpl::OnMessageReceived( |
| return handled; |
| } |
| +void BrowserPluginManagerImpl::OnAllocateInstanceIDResponse( |
| + const IPC::Message& message) { |
| + int request_id = 0; |
| + PickleIterator iter(message); |
| + bool success = iter.ReadInt(&request_id); |
| + DCHECK(success); |
| + BrowserPlugin* plugin = requests_.Lookup(request_id); |
| + requests_.Remove(request_id); |
| + if (plugin) |
| + plugin->OnMessageReceived(message); |
|
lazyboy
2013/01/17 17:39:25
Can we just read both request_id and instance_id (
Fady Samuel
2013/01/17 18:40:38
I'd prefer to leave it this way because eventually
|
| +} |
| + |
| void BrowserPluginManagerImpl::OnPluginAtPositionRequest( |
| const IPC::Message& message, |
| int request_id, |