Chromium Code Reviews| Index: content/public/android/java/src/org/chromium/content/browser/webcontents/WebContentsImpl.java |
| diff --git a/content/public/android/java/src/org/chromium/content/browser/webcontents/WebContentsImpl.java b/content/public/android/java/src/org/chromium/content/browser/webcontents/WebContentsImpl.java |
| index e948d064a074f037125f5b8f8c262d99e5a21491..72c0ba232268a0140f547917522c23f55b7bdb4a 100644 |
| --- a/content/public/android/java/src/org/chromium/content/browser/webcontents/WebContentsImpl.java |
| +++ b/content/public/android/java/src/org/chromium/content/browser/webcontents/WebContentsImpl.java |
| @@ -20,6 +20,8 @@ import org.chromium.base.annotations.CalledByNative; |
| import org.chromium.base.annotations.JNINamespace; |
| import org.chromium.content.browser.AppWebMessagePort; |
| import org.chromium.content.browser.MediaSessionImpl; |
| +import org.chromium.content.browser.framehost.RenderFrameHostDelegate; |
| +import org.chromium.content.browser.framehost.RenderFrameHostImpl; |
| import org.chromium.content_public.browser.AccessibilitySnapshotCallback; |
| import org.chromium.content_public.browser.AccessibilitySnapshotNode; |
| import org.chromium.content_public.browser.ContentBitmapCallback; |
| @@ -27,6 +29,7 @@ import org.chromium.content_public.browser.ImageDownloadCallback; |
| import org.chromium.content_public.browser.JavaScriptCallback; |
| import org.chromium.content_public.browser.MessagePort; |
| import org.chromium.content_public.browser.NavigationController; |
| +import org.chromium.content_public.browser.RenderFrameHost; |
| import org.chromium.content_public.browser.SmartClipCallback; |
| import org.chromium.content_public.browser.WebContents; |
| import org.chromium.content_public.browser.WebContentsObserver; |
| @@ -43,9 +46,9 @@ import java.util.UUID; |
| * object. |
| */ |
| @JNINamespace("content") |
| -//TODO(tedchoc): Remove the package restriction once this class moves to a non-public content |
| +// TODO(tedchoc): Remove the package restriction once this class moves to a non-public content |
| // package whose visibility will be enforced via DEPS. |
| -/* package */ class WebContentsImpl implements WebContents { |
| +/* package */ class WebContentsImpl implements WebContents, RenderFrameHostDelegate { |
| private static final String PARCEL_VERSION_KEY = "version"; |
| private static final String PARCEL_WEBCONTENTS_KEY = "webcontents"; |
| private static final String PARCEL_PROCESS_GUARD_KEY = "processguard"; |
| @@ -94,6 +97,7 @@ import java.util.UUID; |
| private long mNativeWebContentsAndroid; |
| private NavigationController mNavigationController; |
| + private RenderFrameHost mMainFrame; |
| // Lazily created proxy observer for handling all Java-based WebContentsObservers. |
| private WebContentsObserverProxy mObserverProxy; |
| @@ -153,6 +157,14 @@ import java.util.UUID; |
| return nativeGetTopLevelNativeWindow(mNativeWebContentsAndroid); |
| } |
| + public static WebContents fromRenderFrameHost(RenderFrameHost rfh) { |
|
boliu
2017/03/06 23:12:38
nit: static methods at the top
rwlbuis
2017/03/07 19:44:56
Done.
|
| + RenderFrameHostDelegate delegate = ((RenderFrameHostImpl) rfh).getRenderFrameHostDelegate(); |
| + if (delegate == null) { |
| + return null; |
| + } |
| + return delegate.getAsWebContents(); |
| + } |
| + |
| @Override |
| public void destroy() { |
| if (!ThreadUtils.runningOnUiThread()) { |
| @@ -172,6 +184,14 @@ import java.util.UUID; |
| } |
| @Override |
| + public RenderFrameHost getMainFrame() { |
| + if (mMainFrame == null) { |
| + mMainFrame = nativeGetMainFrame(mNativeWebContentsAndroid); |
| + } |
| + return mMainFrame; |
| + } |
| + |
| + @Override |
| public String getTitle() { |
| return nativeGetTitle(mNativeWebContentsAndroid); |
| } |
| @@ -558,12 +578,18 @@ import java.util.UUID; |
| sizes.add(new Rect(0, 0, width, height)); |
| } |
| + @Override |
| + public WebContents getAsWebContents() { |
| + return this; |
| + } |
| + |
| // This is static to avoid exposing a public destroy method on the native side of this class. |
| private static native void nativeDestroyWebContents(long webContentsAndroidPtr); |
| private static native WebContents nativeFromNativePtr(long webContentsAndroidPtr); |
| private native WindowAndroid nativeGetTopLevelNativeWindow(long nativeWebContentsAndroid); |
| + private native RenderFrameHost nativeGetMainFrame(long nativeWebContentsAndroid); |
| private native String nativeGetTitle(long nativeWebContentsAndroid); |
| private native String nativeGetVisibleURL(long nativeWebContentsAndroid); |
| private native boolean nativeIsLoading(long nativeWebContentsAndroid); |