Index: content/renderer/java/java_bridge_dispatcher.cc |
diff --git a/content/renderer/java/java_bridge_dispatcher.cc b/content/renderer/java/java_bridge_dispatcher.cc |
index 20b047a9a2ca700978d1cd9e886e09eba2cf002e..c4aff0ba5993be22b62d02e38cfe38e5e7077b46 100644 |
--- a/content/renderer/java/java_bridge_dispatcher.cc |
+++ b/content/renderer/java/java_bridge_dispatcher.cc |
@@ -16,9 +16,20 @@ |
#include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h" |
JavaBridgeDispatcher::JavaBridgeDispatcher( |
- content::RenderView* render_view, |
- const IPC::ChannelHandle& channel_handle) |
+ content::RenderView* render_view) |
: RenderViewObserver(render_view) { |
+} |
+ |
+void JavaBridgeDispatcher::EnsureChannelIsSetUp() { |
+ if (channel_.get()) { |
+ return; |
+ } |
+ |
+ IPC::ChannelHandle channel_handle; |
+ render_view()->Send(new JavaBridgeMsg_GetChannelHandle( |
+ render_view()->GetRoutingId(), |
+ &channel_handle)); |
+ |
channel_.reset(JavaBridgeChannel::GetJavaBridgeChannel( |
channel_handle, ChildProcess::current()->io_message_loop_proxy())); |
} |
@@ -62,6 +73,9 @@ void JavaBridgeDispatcher::OnAddNamedObject( |
const string16& name, |
const NPVariant_Param& variant_param) { |
DCHECK_EQ(variant_param.type, NPVARIANT_PARAM_SENDER_OBJECT_ROUTING_ID); |
+ |
+ EnsureChannelIsSetUp(); |
+ |
// This creates an NPObject, wrapped as an NPVariant. We don't need the |
// containing window or the page URL, as we don't do re-entrant sync IPC. |
NPVariant variant; |