Commit 94cadd37 authored by Oksana Zhuravlova's avatar Oksana Zhuravlova Committed by Commit Bot

Plumb WebContentsObserver::RenderFrameCreated to Java

This change exposes a Java method on WebContentsObserverProxy that
allows it to observe render frame creation.
Follow-up CLs will inject objects in the RenderFrameCreated
handler as part of the mojofied Java Bridge browser integration.

Bug: 794320
Change-Id: Ied51a88887e9d53744f253ce7d817d126557b608
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2274328Reviewed-by: default avatarBo <boliu@chromium.org>
Commit-Queue: Oksana Zhuravlova <oksamyt@chromium.org>
Cr-Commit-Position: refs/heads/master@{#784161}
parent a6259aec
...@@ -68,6 +68,13 @@ void WebContentsObserverProxy::WebContentsDestroyed() { ...@@ -68,6 +68,13 @@ void WebContentsObserverProxy::WebContentsDestroyed() {
Java_WebContentsObserverProxy_destroy(env, java_observer_); Java_WebContentsObserverProxy_destroy(env, java_observer_);
} }
void WebContentsObserverProxy::RenderFrameCreated(
RenderFrameHost* render_frame_host) {
JNIEnv* env = AttachCurrentThread();
Java_WebContentsObserverProxy_renderFrameCreated(
env, java_observer_, render_frame_host->GetJavaRenderFrameHost());
}
void WebContentsObserverProxy::RenderViewReady() { void WebContentsObserverProxy::RenderViewReady() {
JNIEnv* env = AttachCurrentThread(); JNIEnv* env = AttachCurrentThread();
Java_WebContentsObserverProxy_renderViewReady(env, java_observer_); Java_WebContentsObserverProxy_renderViewReady(env, java_observer_);
......
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
namespace content { namespace content {
class WebContents; class WebContents;
class RenderFrameHost;
// Extends WebContentsObserver for providing a public Java API for some of the // Extends WebContentsObserver for providing a public Java API for some of the
// the calls it receives. // the calls it receives.
...@@ -31,6 +32,7 @@ class WebContentsObserverProxy : public WebContentsObserver { ...@@ -31,6 +32,7 @@ class WebContentsObserverProxy : public WebContentsObserver {
void Destroy(JNIEnv* env, const base::android::JavaParamRef<jobject>& obj); void Destroy(JNIEnv* env, const base::android::JavaParamRef<jobject>& obj);
private: private:
void RenderFrameCreated(RenderFrameHost* render_frame_host) override;
void RenderViewReady() override; void RenderViewReady() override;
void RenderProcessGone(base::TerminationStatus termination_status) override; void RenderProcessGone(base::TerminationStatus termination_status) override;
void DidStartLoading() override; void DidStartLoading() override;
......
...@@ -11,6 +11,7 @@ import org.chromium.base.annotations.CalledByNative; ...@@ -11,6 +11,7 @@ import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.JNINamespace; import org.chromium.base.annotations.JNINamespace;
import org.chromium.base.annotations.NativeMethods; import org.chromium.base.annotations.NativeMethods;
import org.chromium.content_public.browser.NavigationHandle; import org.chromium.content_public.browser.NavigationHandle;
import org.chromium.content_public.browser.RenderFrameHost;
import org.chromium.content_public.browser.WebContentsObserver; import org.chromium.content_public.browser.WebContentsObserver;
import org.chromium.ui.base.WindowAndroid; import org.chromium.ui.base.WindowAndroid;
...@@ -63,6 +64,14 @@ class WebContentsObserverProxy extends WebContentsObserver { ...@@ -63,6 +64,14 @@ class WebContentsObserverProxy extends WebContentsObserver {
return !mObservers.isEmpty(); return !mObservers.isEmpty();
} }
@Override
@CalledByNative
public void renderFrameCreated(RenderFrameHost renderFrameHost) {
for (mObserversIterator.rewind(); mObserversIterator.hasNext();) {
mObserversIterator.next().renderFrameCreated(renderFrameHost);
}
}
@Override @Override
@CalledByNative @CalledByNative
public void renderViewReady() { public void renderViewReady() {
......
...@@ -29,6 +29,12 @@ public abstract class WebContentsObserver { ...@@ -29,6 +29,12 @@ public abstract class WebContentsObserver {
webContents.addObserver(this); webContents.addObserver(this);
} }
/**
* Called when a RenderFrame for renderFrameHost is created in the
* renderer process.
*/
public void renderFrameCreated(RenderFrameHost renderFrameHost) {}
/** /**
* Called when the RenderView of the current RenderViewHost is ready, e.g. because we recreated * Called when the RenderView of the current RenderViewHost is ready, e.g. because we recreated
* it after a crash. * it after a crash.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment