Chromium Code Reviews| Index: content/browser/renderer_host/java/java_bridge_dispatcher_host_manager.cc |
| diff --git a/content/browser/renderer_host/java/java_bridge_dispatcher_host_manager.cc b/content/browser/renderer_host/java/java_bridge_dispatcher_host_manager.cc |
| index 8d587bd76bcdf4e7de5eef32da59d4b317c93b7d..0d5223883392981e9d49ef216fbe403befa264e4 100644 |
| --- a/content/browser/renderer_host/java/java_bridge_dispatcher_host_manager.cc |
| +++ b/content/browser/renderer_host/java/java_bridge_dispatcher_host_manager.cc |
| @@ -13,6 +13,7 @@ |
| #include "content/browser/renderer_host/java/java_bound_object.h" |
| #include "content/browser/renderer_host/java/java_bridge_dispatcher_host.h" |
| #include "content/common/android/hash_set.h" |
| +#include "content/common/java_bridge_messages.h" |
| #include "content/public/browser/browser_thread.h" |
| #include "content/public/browser/render_frame_host.h" |
| #include "third_party/WebKit/public/web/WebBindings.h" |
| @@ -20,9 +21,13 @@ |
| namespace content { |
| JavaBridgeDispatcherHostManager::JavaBridgeDispatcherHostManager( |
| - WebContents* web_contents) |
| + WebContents* web_contents, |
| + jobject retained_object_set) |
| : WebContentsObserver(web_contents), |
| + retained_object_set_(base::android::AttachCurrentThread(), |
| + retained_object_set), |
| allow_object_contents_inspection_(true) { |
| + DCHECK(retained_object_set); |
|
benm (inactive)
2014/05/07 13:51:43
should this be retained_object_set_ (i.e. the memb
mnaganov (inactive)
2014/05/07 15:12:35
Here we are checking that we have received an actu
|
| } |
| JavaBridgeDispatcherHostManager::~JavaBridgeDispatcherHostManager() { |
| @@ -48,27 +53,6 @@ void JavaBridgeDispatcherHostManager::AddNamedObject(const base::string16& name, |
| } |
| } |
| -void JavaBridgeDispatcherHostManager::SetRetainedObjectSet( |
| - const JavaObjectWeakGlobalRef& retained_object_set) { |
| - // It's an error to replace the retained_object_set_ after it's been set, |
| - // so we check that it hasn't already been here. |
| - // TODO(benm): It'd be better to pass the set in the constructor to avoid |
| - // the chance of this happening; but that's tricky as this get's constructed |
| - // before ContentViewCore (which owns the set). Best solution may be to move |
| - // ownership of the JavaBridgerDispatchHostManager from WebContents to |
| - // ContentViewCore? |
| - JNIEnv* env = base::android::AttachCurrentThread(); |
| - base::android::ScopedJavaLocalRef<jobject> new_retained_object_set = |
| - retained_object_set.get(env); |
| - base::android::ScopedJavaLocalRef<jobject> current_retained_object_set = |
| - retained_object_set_.get(env); |
| - if (!env->IsSameObject(new_retained_object_set.obj(), |
| - current_retained_object_set.obj())) { |
| - DCHECK(current_retained_object_set.is_null()); |
| - retained_object_set_ = retained_object_set; |
| - } |
| -} |
| - |
| void JavaBridgeDispatcherHostManager::RemoveNamedObject( |
| const base::string16& name) { |
| ObjectMap::iterator iter = objects_.find(name); |
| @@ -85,11 +69,6 @@ void JavaBridgeDispatcherHostManager::RemoveNamedObject( |
| } |
| } |
| -void JavaBridgeDispatcherHostManager::OnGetChannelHandle( |
| - RenderFrameHost* render_frame_host, IPC::Message* reply_msg) { |
| - instances_[render_frame_host]->OnGetChannelHandle(reply_msg); |
| -} |
| - |
| void JavaBridgeDispatcherHostManager::RenderFrameCreated( |
| RenderFrameHost* render_frame_host) { |
| // Creates a JavaBridgeDispatcherHost for the specified RenderViewHost and |
| @@ -132,6 +111,23 @@ void JavaBridgeDispatcherHostManager::DocumentAvailableInMainFrame() { |
| } |
| } |
| +bool JavaBridgeDispatcherHostManager::OnMessageReceived( |
| + const IPC::Message& message, |
| + RenderFrameHost* render_frame_host) { |
| + DCHECK(render_frame_host); |
| + scoped_refptr<JavaBridgeDispatcherHost> instance = |
| + instances_[render_frame_host]; |
| + bool handled = true; |
| + IPC_BEGIN_MESSAGE_MAP(JavaBridgeDispatcherHostManager, message) |
| + IPC_MESSAGE_FORWARD_DELAY_REPLY( |
| + JavaBridgeHostMsg_GetChannelHandle, |
| + instance.get(), |
| + JavaBridgeDispatcherHost::OnGetChannelHandle) |
| + IPC_MESSAGE_UNHANDLED(handled = false) |
| + IPC_END_MESSAGE_MAP() |
| + return handled; |
| +} |
| + |
| void JavaBridgeDispatcherHostManager::JavaBoundObjectCreated( |
| const base::android::JavaRef<jobject>& object) { |
| DCHECK_CURRENTLY_ON(BrowserThread::UI); |