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() {
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() {
JNIEnv* env = AttachCurrentThread();
Java_WebContentsObserverProxy_renderViewReady(env, java_observer_);
......
......@@ -20,6 +20,7 @@
namespace content {
class WebContents;
class RenderFrameHost;
// Extends WebContentsObserver for providing a public Java API for some of the
// the calls it receives.
......@@ -31,6 +32,7 @@ class WebContentsObserverProxy : public WebContentsObserver {
void Destroy(JNIEnv* env, const base::android::JavaParamRef<jobject>& obj);
private:
void RenderFrameCreated(RenderFrameHost* render_frame_host) override;
void RenderViewReady() override;
void RenderProcessGone(base::TerminationStatus termination_status) override;
void DidStartLoading() override;
......
......@@ -11,6 +11,7 @@ import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.JNINamespace;
import org.chromium.base.annotations.NativeMethods;
import org.chromium.content_public.browser.NavigationHandle;
import org.chromium.content_public.browser.RenderFrameHost;
import org.chromium.content_public.browser.WebContentsObserver;
import org.chromium.ui.base.WindowAndroid;
......@@ -63,6 +64,14 @@ class WebContentsObserverProxy extends WebContentsObserver {
return !mObservers.isEmpty();
}
@Override
@CalledByNative
public void renderFrameCreated(RenderFrameHost renderFrameHost) {
for (mObserversIterator.rewind(); mObserversIterator.hasNext();) {
mObserversIterator.next().renderFrameCreated(renderFrameHost);
}
}
@Override
@CalledByNative
public void renderViewReady() {
......
......@@ -29,6 +29,12 @@ public abstract class WebContentsObserver {
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
* 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