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( ...@@ -72,7 +72,8 @@ void WebContentsObserverProxy::RenderFrameCreated(
RenderFrameHost* render_frame_host) { RenderFrameHost* render_frame_host) {
JNIEnv* env = AttachCurrentThread(); JNIEnv* env = AttachCurrentThread();
Java_WebContentsObserverProxy_renderFrameCreated( 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() { void WebContentsObserverProxy::RenderViewReady() {
......
...@@ -11,7 +11,6 @@ import org.chromium.base.annotations.CalledByNative; ...@@ -11,7 +11,6 @@ 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;
...@@ -66,9 +65,9 @@ class WebContentsObserverProxy extends WebContentsObserver { ...@@ -66,9 +65,9 @@ class WebContentsObserverProxy extends WebContentsObserver {
@Override @Override
@CalledByNative @CalledByNative
public void renderFrameCreated(RenderFrameHost renderFrameHost) { public void renderFrameCreated(int renderProcessId, int renderFrameId) {
for (mObserversIterator.rewind(); mObserversIterator.hasNext();) { for (mObserversIterator.rewind(); mObserversIterator.hasNext();) {
mObserversIterator.next().renderFrameCreated(renderFrameHost); mObserversIterator.next().renderFrameCreated(renderProcessId, renderFrameId);
} }
} }
......
...@@ -32,8 +32,12 @@ public abstract class WebContentsObserver { ...@@ -32,8 +32,12 @@ public abstract class WebContentsObserver {
/** /**
* Called when a RenderFrame for renderFrameHost is created in the * Called when a RenderFrame for renderFrameHost is created in the
* renderer process. * 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 * 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