summaryrefslogtreecommitdiffstats
path: root/content/public
diff options
context:
space:
mode:
Diffstat (limited to 'content/public')
-rw-r--r--content/public/android/java/src/org/chromium/content/browser/webcontents/WebContentsImpl.java9
-rw-r--r--content/public/android/java/src/org/chromium/content_public/browser/WebContents.java17
-rw-r--r--content/public/android/javatests/src/org/chromium/content/browser/ContentViewLocationTest.java8
-rw-r--r--content/public/android/javatests/src/org/chromium/content/browser/JavaBridgeBareboneTest.java2
-rw-r--r--content/public/android/javatests/src/org/chromium/content/browser/JavaBridgeChildFrameTest.java2
-rw-r--r--content/public/android/javatests/src/org/chromium/content/browser/NavigationTest.java6
-rw-r--r--content/public/android/javatests/src/org/chromium/content/browser/TestsJavaScriptEvalTest.java2
-rw-r--r--content/public/browser/render_frame_host.h16
-rw-r--r--content/public/test/android/javatests/src/org/chromium/content/browser/test/util/JavaScriptUtils.java4
-rw-r--r--content/public/test/android/javatests/src/org/chromium/content/browser/test/util/TestCallbackHelperContainer.java6
-rw-r--r--content/public/test/render_view_test.cc2
-rw-r--r--content/public/test/render_view_test.h2
-rw-r--r--content/public/test/test_utils.cc2
13 files changed, 57 insertions, 21 deletions
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 d4530f9..0f23bcd 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
@@ -293,12 +293,17 @@ import java.util.UUID;
}
@Override
- @VisibleForTesting
public void evaluateJavaScript(String script, JavaScriptCallback callback) {
nativeEvaluateJavaScript(mNativeWebContentsAndroid, script, callback);
}
@Override
+ @VisibleForTesting
+ public void evaluateJavaScriptForTests(String script, JavaScriptCallback callback) {
+ nativeEvaluateJavaScriptForTests(mNativeWebContentsAndroid, script, callback);
+ }
+
+ @Override
public void addMessageToDevToolsConsole(int level, String message) {
nativeAddMessageToDevToolsConsole(mNativeWebContentsAndroid, level, message);
}
@@ -421,6 +426,8 @@ import java.util.UUID;
private native void nativeResumeLoadingCreatedWebContents(long nativeWebContentsAndroid);
private native void nativeEvaluateJavaScript(long nativeWebContentsAndroid,
String script, JavaScriptCallback callback);
+ private native void nativeEvaluateJavaScriptForTests(long nativeWebContentsAndroid,
+ String script, JavaScriptCallback callback);
private native void nativeAddMessageToDevToolsConsole(
long nativeWebContentsAndroid, int level, String message);
private native boolean nativeHasAccessedInitialDocument(
diff --git a/content/public/android/java/src/org/chromium/content_public/browser/WebContents.java b/content/public/android/java/src/org/chromium/content_public/browser/WebContents.java
index 5be1f92..5dad2d6 100644
--- a/content/public/android/java/src/org/chromium/content_public/browser/WebContents.java
+++ b/content/public/android/java/src/org/chromium/content_public/browser/WebContents.java
@@ -218,16 +218,31 @@ public interface WebContents extends Parcelable {
* Injects the passed Javascript code in the current page and evaluates it.
* If a result is required, pass in a callback.
*
+ * It is not possible to use this method to evaluate JavaScript on web
+ * content, only on WebUI pages.
+ *
* @param script The Javascript to execute.
* @param callback The callback to be fired off when a result is ready. The script's
* result will be json encoded and passed as the parameter, and the call
* will be made on the main thread.
* If no result is required, pass null.
*/
- @VisibleForTesting
void evaluateJavaScript(String script, JavaScriptCallback callback);
/**
+ * Injects the passed Javascript code in the current page and evaluates it.
+ * If a result is required, pass in a callback.
+ *
+ * @param script The Javascript to execute.
+ * @param callback The callback to be fired off when a result is ready. The script's
+ * result will be json encoded and passed as the parameter, and the call
+ * will be made on the main thread.
+ * If no result is required, pass null.
+ */
+ @VisibleForTesting
+ void evaluateJavaScriptForTests(String script, JavaScriptCallback callback);
+
+ /**
* Adds a log message to dev tools console. |level| must be a value of
* org.chromium.content_public.common.ConsoleMessageLevel.
*/
diff --git a/content/public/android/javatests/src/org/chromium/content/browser/ContentViewLocationTest.java b/content/public/android/javatests/src/org/chromium/content/browser/ContentViewLocationTest.java
index 91d2d04..3d76ef2 100644
--- a/content/public/android/javatests/src/org/chromium/content/browser/ContentViewLocationTest.java
+++ b/content/public/android/javatests/src/org/chromium/content/browser/ContentViewLocationTest.java
@@ -45,7 +45,7 @@ public class ContentViewLocationTest extends ContentShellTestBase {
}
private void pollForPositionCallback() throws Throwable {
- mJavascriptHelper.evaluateJavaScript(getWebContents(),
+ mJavascriptHelper.evaluateJavaScriptForTests(getWebContents(),
"positionCount = 0");
mJavascriptHelper.waitUntilHasValue();
assertEquals(0, Integer.parseInt(mJavascriptHelper.getJsonResultAndClear()));
@@ -53,7 +53,7 @@ public class ContentViewLocationTest extends ContentShellTestBase {
assertTrue(CriteriaHelper.pollForCriteria(new Criteria() {
@Override
public boolean isSatisfied() {
- mJavascriptHelper.evaluateJavaScript(getWebContents(), "positionCount");
+ mJavascriptHelper.evaluateJavaScriptForTests(getWebContents(), "positionCount");
try {
mJavascriptHelper.waitUntilHasValue();
} catch (Exception e) {
@@ -65,7 +65,7 @@ public class ContentViewLocationTest extends ContentShellTestBase {
}
private void startGeolocationWatchPosition() throws Throwable {
- mJavascriptHelper.evaluateJavaScript(getWebContents(),
+ mJavascriptHelper.evaluateJavaScriptForTests(getWebContents(),
"initiate_watchPosition();");
mJavascriptHelper.waitUntilHasValue();
}
@@ -116,7 +116,7 @@ public class ContentViewLocationTest extends ContentShellTestBase {
hideContentViewOnUiThread();
ensureGeolocationRunning(false);
- mJavascriptHelper.evaluateJavaScript(getWebContents(),
+ mJavascriptHelper.evaluateJavaScriptForTests(getWebContents(),
"positionCount = 0");
mJavascriptHelper.waitUntilHasValue();
diff --git a/content/public/android/javatests/src/org/chromium/content/browser/JavaBridgeBareboneTest.java b/content/public/android/javatests/src/org/chromium/content/browser/JavaBridgeBareboneTest.java
index 3f2ad52..c835211 100644
--- a/content/public/android/javatests/src/org/chromium/content/browser/JavaBridgeBareboneTest.java
+++ b/content/public/android/javatests/src/org/chromium/content/browser/JavaBridgeBareboneTest.java
@@ -40,7 +40,7 @@ public class JavaBridgeBareboneTest extends ContentShellTestBase {
private String evaluateJsSync(String jsCode) throws Exception {
OnEvaluateJavaScriptResultHelper javascriptHelper = new OnEvaluateJavaScriptResultHelper();
- javascriptHelper.evaluateJavaScript(getWebContents(), jsCode);
+ javascriptHelper.evaluateJavaScriptForTests(getWebContents(), jsCode);
javascriptHelper.waitUntilHasValue();
return javascriptHelper.getJsonResultAndClear();
}
diff --git a/content/public/android/javatests/src/org/chromium/content/browser/JavaBridgeChildFrameTest.java b/content/public/android/javatests/src/org/chromium/content/browser/JavaBridgeChildFrameTest.java
index 1fda331..fab571f 100644
--- a/content/public/android/javatests/src/org/chromium/content/browser/JavaBridgeChildFrameTest.java
+++ b/content/public/android/javatests/src/org/chromium/content/browser/JavaBridgeChildFrameTest.java
@@ -257,7 +257,7 @@ public class JavaBridgeChildFrameTest extends JavaBridgeTestBase {
runTestOnUiThread(new Runnable() {
@Override
public void run() {
- webContents.evaluateJavaScript(script, resultCallback);
+ webContents.evaluateJavaScriptForTests(script, resultCallback);
}
});
resultCallback.waitForResult();
diff --git a/content/public/android/javatests/src/org/chromium/content/browser/NavigationTest.java b/content/public/android/javatests/src/org/chromium/content/browser/NavigationTest.java
index 32d8d24..ae0ab89 100644
--- a/content/public/android/javatests/src/org/chromium/content/browser/NavigationTest.java
+++ b/content/public/android/javatests/src/org/chromium/content/browser/NavigationTest.java
@@ -118,7 +118,8 @@ public class NavigationTest extends ContentShellTestBase {
OnEvaluateJavaScriptResultHelper javascriptHelper = new OnEvaluateJavaScriptResultHelper();
// Grab the first timestamp.
- javascriptHelper.evaluateJavaScript(contentViewCore.getWebContents(), "getLoadtime();");
+ javascriptHelper.evaluateJavaScriptForTests(
+ contentViewCore.getWebContents(), "getLoadtime();");
javascriptHelper.waitUntilHasValue();
String firstTimestamp = javascriptHelper.getJsonResultAndClear();
assertNotNull("Timestamp was null.", firstTimestamp);
@@ -126,7 +127,8 @@ public class NavigationTest extends ContentShellTestBase {
// Grab the timestamp after a reload and make sure they don't match.
reload(contentViewCore.getWebContents().getNavigationController(),
testCallbackHelperContainer);
- javascriptHelper.evaluateJavaScript(contentViewCore.getWebContents(), "getLoadtime();");
+ javascriptHelper.evaluateJavaScriptForTests(
+ contentViewCore.getWebContents(), "getLoadtime();");
javascriptHelper.waitUntilHasValue();
String secondTimestamp = javascriptHelper.getJsonResultAndClear();
assertNotNull("Timestamp was null.", secondTimestamp);
diff --git a/content/public/android/javatests/src/org/chromium/content/browser/TestsJavaScriptEvalTest.java b/content/public/android/javatests/src/org/chromium/content/browser/TestsJavaScriptEvalTest.java
index 2601348..0eed6b8 100644
--- a/content/public/android/javatests/src/org/chromium/content/browser/TestsJavaScriptEvalTest.java
+++ b/content/public/android/javatests/src/org/chromium/content/browser/TestsJavaScriptEvalTest.java
@@ -39,7 +39,7 @@ public class TestsJavaScriptEvalTest extends ContentShellTestBase {
for (int i = 0; i < 30; ++i) {
for (int j = 0; j < 10; ++j) {
// Start evaluation of a JavaScript script -- we don't need a result.
- webContents.evaluateJavaScript("foobar();", null);
+ webContents.evaluateJavaScriptForTests("foobar();", null);
}
// DOMUtils does need to evaluate a JavaScript and get its result to get DOM bounds.
assertNotNull("Failed to get bounds",
diff --git a/content/public/browser/render_frame_host.h b/content/public/browser/render_frame_host.h
index 3097ff1..e47441d 100644
--- a/content/public/browser/render_frame_host.h
+++ b/content/public/browser/render_frame_host.h
@@ -35,6 +35,11 @@ class CONTENT_EXPORT RenderFrameHost : public IPC::Listener,
// Returns nullptr if the IDs do not correspond to a live RenderFrameHost.
static RenderFrameHost* FromID(int render_process_id, int render_frame_id);
+ // Globally allows for injecting JavaScript into the main world. This feature
+ // is present only to support Android WebView and must not be used in other
+ // configurations.
+ static void AllowInjectingJavaScriptForAndroidWebView();
+
~RenderFrameHost() override {}
// Returns the route id for this frame.
@@ -74,17 +79,24 @@ class CONTENT_EXPORT RenderFrameHost : public IPC::Listener,
// Runs some JavaScript in this frame's context. If a callback is provided, it
// will be used to return the result, when the result is available.
+ // This API can only be called on chrome:// or chrome-devtools:// URLs.
typedef base::Callback<void(const base::Value*)> JavaScriptResultCallback;
virtual void ExecuteJavaScript(const base::string16& javascript) = 0;
virtual void ExecuteJavaScript(const base::string16& javascript,
const JavaScriptResultCallback& callback) = 0;
+
+ // Runs some JavaScript in an isolated world of top of this frame's context.
virtual void ExecuteJavaScriptInIsolatedWorld(
const base::string16& javascript,
const JavaScriptResultCallback& callback,
int world_id) = 0;
- // ONLY FOR TESTS: Same as above but adds a fake UserGestureIndicator around
- // execution. (crbug.com/408426)
+ // ONLY FOR TESTS: Same as above but without restrictions. Optionally, adds a
+ // fake UserGestureIndicator around execution. (crbug.com/408426)
+ virtual void ExecuteJavaScriptForTests(const base::string16& javascript) = 0;
+ virtual void ExecuteJavaScriptForTests(
+ const base::string16& javascript,
+ const JavaScriptResultCallback& callback) = 0;
virtual void ExecuteJavaScriptWithUserGestureForTests(
const base::string16& javascript) = 0;
diff --git a/content/public/test/android/javatests/src/org/chromium/content/browser/test/util/JavaScriptUtils.java b/content/public/test/android/javatests/src/org/chromium/content/browser/test/util/JavaScriptUtils.java
index 42457cc..75cd2e9 100644
--- a/content/public/test/android/javatests/src/org/chromium/content/browser/test/util/JavaScriptUtils.java
+++ b/content/public/test/android/javatests/src/org/chromium/content/browser/test/util/JavaScriptUtils.java
@@ -50,7 +50,7 @@ public class JavaScriptUtils {
ThreadUtils.runOnUiThread(new Runnable() {
@Override
public void run() {
- helper.evaluateJavaScript(webContents, code);
+ helper.evaluateJavaScriptForTests(webContents, code);
}
});
helper.waitUntilHasValue(timeout, timeoutUnits);
@@ -65,7 +65,7 @@ public class JavaScriptUtils {
ThreadUtils.runOnUiThread(new Runnable() {
@Override
public void run() {
- webContents.evaluateJavaScript(code, null);
+ webContents.evaluateJavaScriptForTests(code, null);
}
});
}
diff --git a/content/public/test/android/javatests/src/org/chromium/content/browser/test/util/TestCallbackHelperContainer.java b/content/public/test/android/javatests/src/org/chromium/content/browser/test/util/TestCallbackHelperContainer.java
index cfc53ff..d97e1ef 100644
--- a/content/public/test/android/javatests/src/org/chromium/content/browser/test/util/TestCallbackHelperContainer.java
+++ b/content/public/test/android/javatests/src/org/chromium/content/browser/test/util/TestCallbackHelperContainer.java
@@ -126,7 +126,7 @@ public class TestCallbackHelperContainer {
* @param webContents A WebContents instance to be used.
* @param code A JavaScript code to be evaluated.
*/
- public void evaluateJavaScript(WebContents webContents, String code) {
+ public void evaluateJavaScriptForTests(WebContents webContents, String code) {
JavaScriptCallback callback =
new JavaScriptCallback() {
@Override
@@ -134,12 +134,12 @@ public class TestCallbackHelperContainer {
notifyCalled(jsonResult);
}
};
- webContents.evaluateJavaScript(code, callback);
+ webContents.evaluateJavaScriptForTests(code, callback);
mJsonResult = null;
}
/**
- * Returns true if the evaluation started by evaluateJavaScript() has completed.
+ * Returns true if the evaluation started by evaluateJavaScriptForTests() has completed.
*/
public boolean hasValue() {
return mJsonResult != null;
diff --git a/content/public/test/render_view_test.cc b/content/public/test/render_view_test.cc
index 8f491ba..1f7d78a 100644
--- a/content/public/test/render_view_test.cc
+++ b/content/public/test/render_view_test.cc
@@ -145,7 +145,7 @@ WebLocalFrame* RenderViewTest::GetMainFrame() {
return view_->GetWebView()->mainFrame()->toWebLocalFrame();
}
-void RenderViewTest::ExecuteJavaScript(const char* js) {
+void RenderViewTest::ExecuteJavaScriptForTests(const char* js) {
GetMainFrame()->executeScript(WebScriptSource(WebString::fromUTF8(js)));
}
diff --git a/content/public/test/render_view_test.h b/content/public/test/render_view_test.h
index 36ca0be..ba225d5 100644
--- a/content/public/test/render_view_test.h
+++ b/content/public/test/render_view_test.h
@@ -73,7 +73,7 @@ class RenderViewTest : public testing::Test {
// Executes the given JavaScript in the context of the main frame. The input
// is a NULL-terminated UTF-8 string.
- void ExecuteJavaScript(const char* js);
+ void ExecuteJavaScriptForTests(const char* js);
// Executes the given JavaScript and sets the int value it evaluates to in
// |result|.
diff --git a/content/public/test/test_utils.cc b/content/public/test/test_utils.cc
index 4293f39..8158eee 100644
--- a/content/public/test/test_utils.cc
+++ b/content/public/test/test_utils.cc
@@ -175,7 +175,7 @@ scoped_ptr<base::Value> ExecuteScriptAndGetValue(
RenderFrameHost* render_frame_host, const std::string& script) {
ScriptCallback observer;
- render_frame_host->ExecuteJavaScript(
+ render_frame_host->ExecuteJavaScriptForTests(
base::UTF8ToUTF16(script),
base::Bind(&ScriptCallback::ResultCallback, base::Unretained(&observer)));
base::MessageLoop* loop = base::MessageLoop::current();