| Index: content/browser/android/java/gin_java_bridge_dispatcher_host.h
|
| diff --git a/content/browser/android/java/gin_java_bridge_dispatcher_host.h b/content/browser/android/java/gin_java_bridge_dispatcher_host.h
|
| index 615c2b03770af4197ec1a0799a0cfe3bc4191b65..48fcbb588bbfa14a115eab8befc32d842ab6accf 100644
|
| --- a/content/browser/android/java/gin_java_bridge_dispatcher_host.h
|
| +++ b/content/browser/android/java/gin_java_bridge_dispatcher_host.h
|
| @@ -76,20 +76,15 @@ class GinJavaBridgeDispatcherHost
|
| GinJavaBoundObject::ObjectID object_id);
|
|
|
| bool IsValidRenderFrameHost(RenderFrameHost* render_frame_host);
|
| - void SendReply(RenderFrameHost* render_frame_host, IPC::Message* reply_msg);
|
| void SendMethods(RenderFrameHost* render_frame_host,
|
| - IPC::Message* reply_msg,
|
| const std::set<std::string>& method_names);
|
| void SendHasMethodReply(RenderFrameHost* render_frame_host,
|
| - IPC::Message* reply_msg,
|
| bool result);
|
| void ProcessMethodInvocationResult(
|
| RenderFrameHost* render_frame_host,
|
| - IPC::Message* reply_msg,
|
| scoped_refptr<GinJavaMethodInvocationHelper> result);
|
| void ProcessMethodInvocationObjectResult(
|
| RenderFrameHost* render_frame_host,
|
| - IPC::Message* reply_msg,
|
| scoped_refptr<GinJavaMethodInvocationHelper> result);
|
| GinJavaBoundObject::ObjectID AddObject(
|
| const base::android::JavaRef<jobject>& object,
|
| @@ -101,6 +96,8 @@ class GinJavaBridgeDispatcherHost
|
| void RemoveHolder(RenderFrameHost* holder,
|
| const GinJavaBoundObject::ObjectMap::iterator& from,
|
| size_t count);
|
| + bool HasPendingReply(RenderFrameHost* render_frame_host) const;
|
| + IPC::Message* TakePendingReply(RenderFrameHost* render_frame_host);
|
|
|
| // Every time a GinJavaBoundObject backed by a real Java object is
|
| // created/destroyed, we insert/remove a strong ref to that Java object into
|
| @@ -114,6 +111,13 @@ class GinJavaBridgeDispatcherHost
|
| typedef std::map<std::string, GinJavaBoundObject::ObjectID> NamedObjectMap;
|
| NamedObjectMap named_objects_;
|
|
|
| + // Keep track of pending calls out to Java such that we can send a synchronous
|
| + // reply to the renderer waiting on the response should the RenderFrame be
|
| + // destroyed while the reply is pending.
|
| + // Only used on the UI thread.
|
| + typedef std::map<RenderFrameHost*, IPC::Message*> PendingReplyMap;
|
| + PendingReplyMap pending_replies_;
|
| +
|
| DISALLOW_COPY_AND_ASSIGN(GinJavaBridgeDispatcherHost);
|
| };
|
|
|
|
|