Commit 5b0f3e82 authored by Jinsuk Kim's avatar Jinsuk Kim Committed by Commit Bot

Android: Move more methods to test-only targets

Moved new test-only methods added to WebContents/RenderFrameHost
in https://crrev.com/c/1163831 to targets content*test_support.

Bug: 862153, 875742
Change-Id: Id9be5f53b45e2b28861a35401bba71020cf5fc0f
Reviewed-on: https://chromium-review.googlesource.com/1180824Reviewed-by: default avatarBo <boliu@chromium.org>
Reviewed-by: default avatarMichael Thiessen <mthiesse@chromium.org>
Commit-Queue: Jinsuk Kim <jinsukkim@chromium.org>
Cr-Commit-Position: refs/heads/master@{#584660}
parent 8cda2b7c
...@@ -15,9 +15,10 @@ import org.chromium.base.test.util.UrlUtils; ...@@ -15,9 +15,10 @@ import org.chromium.base.test.util.UrlUtils;
import org.chromium.chrome.browser.UrlConstants; import org.chromium.chrome.browser.UrlConstants;
import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.test.ChromeActivityTestRule; import org.chromium.chrome.test.ChromeActivityTestRule;
import org.chromium.content.browser.test.RenderFrameHostTestExt;
import org.chromium.content.browser.test.util.CriteriaHelper; import org.chromium.content.browser.test.util.CriteriaHelper;
import org.chromium.content.browser.test.util.JavaScriptUtils; import org.chromium.content.browser.test.util.JavaScriptUtils;
import org.chromium.content_public.browser.RenderFrameHost; import org.chromium.content.browser.test.util.WebContentsUtils;
import org.chromium.content_public.browser.WebContents; import org.chromium.content_public.browser.WebContents;
import java.lang.annotation.Retention; import java.lang.annotation.Retention;
...@@ -345,12 +346,12 @@ public abstract class XrTestFramework { ...@@ -345,12 +346,12 @@ public abstract class XrTestFramework {
private static String runJavaScriptInFrameInternal( private static String runJavaScriptInFrameInternal(
String js, int timeout, final WebContents webContents, boolean failOnTimeout) { String js, int timeout, final WebContents webContents, boolean failOnTimeout) {
final AtomicReference<RenderFrameHost> rfh = new AtomicReference<RenderFrameHost>(); RenderFrameHostTestExt rfh = ThreadUtils.runOnUiThreadBlockingNoException(
ThreadUtils.runOnUiThreadBlocking(() -> { rfh.set(webContents.getFocusedFrame()); }); () -> new RenderFrameHostTestExt(WebContentsUtils.getFocusedFrame(webContents)));
Assert.assertTrue("Did not get a focused frame", rfh.get() != null); Assert.assertTrue("Did not get a focused frame", rfh != null);
final CountDownLatch latch = new CountDownLatch(1); final CountDownLatch latch = new CountDownLatch(1);
final AtomicReference<String> result = new AtomicReference<String>(); final AtomicReference<String> result = new AtomicReference<String>();
rfh.get().executeJavaScriptForTests(js, (String r) -> { rfh.executeJavaScriptForTests(js, (String r) -> {
result.set(r); result.set(r);
latch.countDown(); latch.countDown();
}); });
......
...@@ -60,6 +60,10 @@ public class RenderFrameHostImpl implements RenderFrameHost { ...@@ -60,6 +60,10 @@ public class RenderFrameHostImpl implements RenderFrameHost {
return mDelegate; return mDelegate;
} }
public long getNativePtr() {
return mNativeRenderFrameHostAndroid;
}
@Override @Override
public String getLastCommittedURL() { public String getLastCommittedURL() {
if (mNativeRenderFrameHostAndroid == 0) return null; if (mNativeRenderFrameHostAndroid == 0) return null;
...@@ -95,11 +99,6 @@ public class RenderFrameHostImpl implements RenderFrameHost { ...@@ -95,11 +99,6 @@ public class RenderFrameHostImpl implements RenderFrameHost {
nativeNotifyUserActivation(mNativeRenderFrameHostAndroid); nativeNotifyUserActivation(mNativeRenderFrameHostAndroid);
} }
@Override
public void executeJavaScriptForTests(String script, Callback<String> callback) {
nativeExecuteJavaScriptForTests(mNativeRenderFrameHostAndroid, script, callback);
}
/** /**
* Return the AndroidOverlay routing token for this RenderFrameHostImpl. * Return the AndroidOverlay routing token for this RenderFrameHostImpl.
*/ */
...@@ -114,6 +113,4 @@ public class RenderFrameHostImpl implements RenderFrameHost { ...@@ -114,6 +113,4 @@ public class RenderFrameHostImpl implements RenderFrameHost {
private native UnguessableToken nativeGetAndroidOverlayRoutingToken( private native UnguessableToken nativeGetAndroidOverlayRoutingToken(
long nativeRenderFrameHostAndroid); long nativeRenderFrameHostAndroid);
private native void nativeNotifyUserActivation(long nativeRenderFrameHostAndroid); private native void nativeNotifyUserActivation(long nativeRenderFrameHostAndroid);
private native void nativeExecuteJavaScriptForTests(
long nativeRenderFrameHostAndroid, String script, Callback<String> callback);
} }
...@@ -341,11 +341,6 @@ public class WebContentsImpl implements WebContents, RenderFrameHostDelegate, Wi ...@@ -341,11 +341,6 @@ public class WebContentsImpl implements WebContents, RenderFrameHostDelegate, Wi
return nativeGetMainFrame(mNativeWebContentsAndroid); return nativeGetMainFrame(mNativeWebContentsAndroid);
} }
@Override
public RenderFrameHost getFocusedFrame() {
return nativeGetFocusedFrame(mNativeWebContentsAndroid);
}
@Override @Override
public String getTitle() { public String getTitle() {
return nativeGetTitle(mNativeWebContentsAndroid); return nativeGetTitle(mNativeWebContentsAndroid);
...@@ -900,7 +895,6 @@ public class WebContentsImpl implements WebContents, RenderFrameHostDelegate, Wi ...@@ -900,7 +895,6 @@ public class WebContentsImpl implements WebContents, RenderFrameHostDelegate, Wi
private native void nativeSetTopLevelNativeWindow( private native void nativeSetTopLevelNativeWindow(
long nativeWebContentsAndroid, WindowAndroid windowAndroid); long nativeWebContentsAndroid, WindowAndroid windowAndroid);
private native RenderFrameHost nativeGetMainFrame(long nativeWebContentsAndroid); private native RenderFrameHost nativeGetMainFrame(long nativeWebContentsAndroid);
private native RenderFrameHost nativeGetFocusedFrame(long nativeWebContentsAndroid);
private native String nativeGetTitle(long nativeWebContentsAndroid); private native String nativeGetTitle(long nativeWebContentsAndroid);
private native String nativeGetVisibleURL(long nativeWebContentsAndroid); private native String nativeGetVisibleURL(long nativeWebContentsAndroid);
private native String nativeGetEncoding(long nativeWebContentsAndroid); private native String nativeGetEncoding(long nativeWebContentsAndroid);
......
...@@ -39,15 +39,6 @@ public interface RenderFrameHost { ...@@ -39,15 +39,6 @@ public interface RenderFrameHost {
*/ */
void notifyUserActivation(); void notifyUserActivation();
/**
* Runs the given JavaScript in the RenderFrameHost.
*
* @param script A String containing the JavaScript to run.
* @param callback The Callback that will be called with the result of the JavaScript execution
* serialized to a String using JSONStringValueSerializer.
*/
void executeJavaScriptForTests(String script, Callback<String> callback);
/** /**
* Returns whether we're in incognito mode. * Returns whether we're in incognito mode.
* *
......
...@@ -130,11 +130,6 @@ public interface WebContents extends Parcelable { ...@@ -130,11 +130,6 @@ public interface WebContents extends Parcelable {
*/ */
RenderFrameHost getMainFrame(); RenderFrameHost getMainFrame();
/**
* @return The focused frame in this WebContents.
*/
RenderFrameHost getFocusedFrame();
/** /**
* @return The title for the current visible page. * @return The title for the current visible page.
*/ */
......
...@@ -34,6 +34,7 @@ android_library("content_java_test_support") { ...@@ -34,6 +34,7 @@ android_library("content_java_test_support") {
"javatests/src/org/chromium/content/browser/test/ContentJUnit4ClassRunner.java", "javatests/src/org/chromium/content/browser/test/ContentJUnit4ClassRunner.java",
"javatests/src/org/chromium/content/browser/test/InterstitialPageDelegateAndroid.java", "javatests/src/org/chromium/content/browser/test/InterstitialPageDelegateAndroid.java",
"javatests/src/org/chromium/content/browser/test/NativeLibraryTestRule.java", "javatests/src/org/chromium/content/browser/test/NativeLibraryTestRule.java",
"javatests/src/org/chromium/content/browser/test/RenderFrameHostTestExt.java",
"javatests/src/org/chromium/content/browser/test/mock/MockRenderFrameHost.java", "javatests/src/org/chromium/content/browser/test/mock/MockRenderFrameHost.java",
"javatests/src/org/chromium/content/browser/test/mock/MockWebContents.java", "javatests/src/org/chromium/content/browser/test/mock/MockWebContents.java",
"javatests/src/org/chromium/content/browser/test/util/ClickUtils.java", "javatests/src/org/chromium/content/browser/test/util/ClickUtils.java",
...@@ -62,6 +63,7 @@ generate_jni("content_test_jni") { ...@@ -62,6 +63,7 @@ generate_jni("content_test_jni") {
jni_package = "content/public/test" jni_package = "content/public/test"
sources = [ sources = [
"javatests/src/org/chromium/content/browser/test/InterstitialPageDelegateAndroid.java", "javatests/src/org/chromium/content/browser/test/InterstitialPageDelegateAndroid.java",
"javatests/src/org/chromium/content/browser/test/RenderFrameHostTestExt.java",
"javatests/src/org/chromium/content/browser/test/util/DOMUtils.java", "javatests/src/org/chromium/content/browser/test/util/DOMUtils.java",
"javatests/src/org/chromium/content/browser/test/util/WebContentsUtils.java", "javatests/src/org/chromium/content/browser/test/util/WebContentsUtils.java",
] ]
...@@ -80,6 +82,7 @@ static_library("content_native_test_support") { ...@@ -80,6 +82,7 @@ static_library("content_native_test_support") {
"dom_utils.cc", "dom_utils.cc",
"interstitial_page_delegate_android.cc", "interstitial_page_delegate_android.cc",
"interstitial_page_delegate_android.h", "interstitial_page_delegate_android.h",
"render_frame_host_test_ext.cc",
"web_contents_utils.cc", "web_contents_utils.cc",
] ]
deps = [ deps = [
......
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.content.browser.test;
import org.chromium.base.Callback;
import org.chromium.base.annotations.JNINamespace;
import org.chromium.content.browser.framehost.RenderFrameHostImpl;
import org.chromium.content_public.browser.RenderFrameHost;
/**
* The Java wrapper around RenderFrameHost to allow executing javascript for tests.
*/
@JNINamespace("content")
public class RenderFrameHostTestExt {
private final long mNativeRenderFrameHost;
public RenderFrameHostTestExt(RenderFrameHost host) {
mNativeRenderFrameHost = ((RenderFrameHostImpl) host).getNativePtr();
}
/**
* Runs the given JavaScript in the RenderFrameHost.
*
* @param script A String containing the JavaScript to run.
* @param callback The Callback that will be called with the result of the JavaScript execution
* serialized to a String using JSONStringValueSerializer.
*/
public void executeJavaScriptForTests(String script, Callback<String> callback) {
nativeExecuteJavaScriptForTests(script, callback, mNativeRenderFrameHost);
}
private static native void nativeExecuteJavaScriptForTests(
String script, Callback<String> callback, long nativeRenderFrameHost);
}
...@@ -28,9 +28,6 @@ public class MockRenderFrameHost implements RenderFrameHost { ...@@ -28,9 +28,6 @@ public class MockRenderFrameHost implements RenderFrameHost {
@Override @Override
public void notifyUserActivation() {} public void notifyUserActivation() {}
@Override
public void executeJavaScriptForTests(String script, Callback<String> callback) {}
@Override @Override
public boolean isIncognito() { public boolean isIncognito() {
return false; return false;
......
...@@ -75,11 +75,6 @@ public class MockWebContents implements WebContents { ...@@ -75,11 +75,6 @@ public class MockWebContents implements WebContents {
return renderFrameHost; return renderFrameHost;
} }
@Override
public RenderFrameHost getFocusedFrame() {
return renderFrameHost;
}
@Override @Override
public String getTitle() { public String getTitle() {
return null; return null;
......
...@@ -5,10 +5,12 @@ ...@@ -5,10 +5,12 @@
package org.chromium.content.browser.test.util; package org.chromium.content.browser.test.util;
import org.chromium.base.annotations.JNINamespace; import org.chromium.base.annotations.JNINamespace;
import org.chromium.content_public.browser.RenderFrameHost;
import org.chromium.content_public.browser.WebContents; import org.chromium.content_public.browser.WebContents;
/** /**
* Collection of test-only WebContents utilities. * Collection of test-only WebContents utilities.
* TODO(jinsukkim): Move test utilities to content_public.
*/ */
@JNINamespace("content") @JNINamespace("content")
public class WebContentsUtils { public class WebContentsUtils {
...@@ -22,6 +24,15 @@ public class WebContentsUtils { ...@@ -22,6 +24,15 @@ public class WebContentsUtils {
nativeReportAllFrameSubmissions(webContents, enabled); nativeReportAllFrameSubmissions(webContents, enabled);
} }
/**
* Gets the currently focused {@link RenderFrameHost} instance for a given {@link WebContents}.
* @param webContents The WebContents in use.
*/
public static RenderFrameHost getFocusedFrame(final WebContents webContents) {
return nativeGetFocusedFrame(webContents);
}
private static native void nativeReportAllFrameSubmissions( private static native void nativeReportAllFrameSubmissions(
WebContents webContents, boolean enabled); WebContents webContents, boolean enabled);
private static native RenderFrameHost nativeGetFocusedFrame(WebContents webContents);
} }
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "base/android/callback_android.h"
#include "base/android/jni_string.h"
#include "base/json/json_string_value_serializer.h"
#include "content/public/browser/render_frame_host.h"
#include "content/public/browser/web_contents.h"
#include "jni/RenderFrameHostTestExt_jni.h"
using base::android::JavaParamRef;
using base::android::JavaRef;
using base::android::ScopedJavaLocalRef;
namespace content {
namespace {
void OnExecuteJavaScriptResult(const JavaRef<jobject>& jcallback,
const base::Value* value) {
std::string result;
JSONStringValueSerializer serializer(&result);
bool value_serialized = serializer.SerializeAndOmitBinaryValues(*value);
DCHECK(value_serialized);
base::android::RunStringCallbackAndroid(jcallback, result);
}
} // namespace
void JNI_RenderFrameHostTestExt_ExecuteJavaScriptForTests(
JNIEnv* env,
const JavaParamRef<jclass>& clazz,
const JavaParamRef<jstring>& jscript,
const JavaParamRef<jobject>& jcallback,
jlong render_frame_host_ptr) {
base::string16 script(ConvertJavaStringToUTF16(env, jscript));
auto callback = base::BindRepeating(
&OnExecuteJavaScriptResult,
base::android::ScopedJavaGlobalRef<jobject>(env, jcallback));
RenderFrameHost* render_frame_host =
reinterpret_cast<RenderFrameHost*>(render_frame_host_ptr);
render_frame_host->ExecuteJavaScriptForTests(script, callback);
}
} // namespace content
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
#include "base/android/jni_android.h" #include "base/android/jni_android.h"
#include "base/android/scoped_java_ref.h" #include "base/android/scoped_java_ref.h"
#include "content/browser/frame_host/render_frame_host_impl.h"
#include "content/browser/renderer_host/render_widget_host_impl.h" #include "content/browser/renderer_host/render_widget_host_impl.h"
#include "content/public/browser/render_frame_metadata_provider.h" #include "content/public/browser/render_frame_metadata_provider.h"
#include "content/public/browser/render_view_host.h" #include "content/public/browser/render_view_host.h"
...@@ -11,6 +12,7 @@ ...@@ -11,6 +12,7 @@
#include "jni/WebContentsUtils_jni.h" #include "jni/WebContentsUtils_jni.h"
using base::android::JavaParamRef; using base::android::JavaParamRef;
using base::android::ScopedJavaLocalRef;
namespace content { namespace content {
...@@ -28,4 +30,13 @@ void JNI_WebContentsUtils_ReportAllFrameSubmissions( ...@@ -28,4 +30,13 @@ void JNI_WebContentsUtils_ReportAllFrameSubmissions(
provider->ReportAllFrameSubmissionsForTesting(enabled); provider->ReportAllFrameSubmissionsForTesting(enabled);
} }
ScopedJavaLocalRef<jobject> JNI_WebContentsUtils_GetFocusedFrame(
JNIEnv* env,
const JavaParamRef<jclass>& clazz,
const JavaParamRef<jobject>& jweb_contents) {
WebContents* web_contents = WebContents::FromJavaWebContents(jweb_contents);
return static_cast<RenderFrameHostImpl*>(web_contents->GetFocusedFrame())
->GetJavaRenderFrameHost();
}
} // namespace content } // namespace content
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