Commit 76087000 authored by Oksana Zhuravlova's avatar Oksana Zhuravlova Committed by Commit Bot

Update Java WCO#renderFrameCreated to take process and frame IDs

This change updates WebContentsObserverProxy::RenderFrameCreated()
to pass process id and render frame id to Java instead of always
creating a Java RenderFrameHost. This addresses a memory regression and
will allow future code to get a Java RenderFrameHost object on demand.

Bug: 1101948
Change-Id: I61bd8dfdf7eedfd57af10c65747aecc42d1cee8c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2308213Reviewed-by: default avatarBo <boliu@chromium.org>
Commit-Queue: Oksana Zhuravlova <oksamyt@chromium.org>
Cr-Commit-Position: refs/heads/master@{#790216}
parent ace55bd9
......@@ -72,7 +72,8 @@ void WebContentsObserverProxy::RenderFrameCreated(
RenderFrameHost* render_frame_host) {
JNIEnv* env = AttachCurrentThread();
Java_WebContentsObserverProxy_renderFrameCreated(
env, java_observer_, render_frame_host->GetJavaRenderFrameHost());
env, java_observer_, render_frame_host->GetProcess()->GetID(),
render_frame_host->GetRoutingID());
}
void WebContentsObserverProxy::RenderViewReady() {
......
......@@ -11,7 +11,6 @@ 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;
......@@ -66,9 +65,9 @@ class WebContentsObserverProxy extends WebContentsObserver {
@Override
@CalledByNative
public void renderFrameCreated(RenderFrameHost renderFrameHost) {
public void renderFrameCreated(int renderProcessId, int renderFrameId) {
for (mObserversIterator.rewind(); mObserversIterator.hasNext();) {
mObserversIterator.next().renderFrameCreated(renderFrameHost);
mObserversIterator.next().renderFrameCreated(renderProcessId, renderFrameId);
}
}
......
......@@ -32,8 +32,12 @@ public abstract class WebContentsObserver {
/**
* Called when a RenderFrame for renderFrameHost is created in the
* renderer process.
* To avoid creating a RenderFrameHost object without necessity, only process id and frame id
* are passed.
* TODO(crbug.com/1107555): expose a C++ method to get a Java RenderFrameHost by process id and
* frame id.
*/
public void renderFrameCreated(RenderFrameHost renderFrameHost) {}
public void renderFrameCreated(int renderProcessId, int renderFrameId) {}
/**
* Called when the RenderView of the current RenderViewHost is ready, e.g. because we recreated
......
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