From 14ea977ff2e300fd131d3ca8ff6f5311f5fd1df8 Mon Sep 17 00:00:00 2001 From: Jochen Eisinger Date: Fri, 24 Jul 2015 14:04:37 +0200 Subject: Reland "Add ExecuteJavaScriptForTest and make all tests use it" Original issue's description: > Additionally, restrict the URLs that ExecuteJavaScript can be invoked on > to chrome-controlled URLs. > > R=jam@chromium.org > BUG=507809 > > Review URL: https://codereview.chromium.org/1123783002 > > Cr-Commit-Position: refs/heads/master@{#340231} R=mkwst@chromium.org TBR=jam@chromium.org BUG=507809 CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel Review URL: https://codereview.chromium.org/1258593002 . Cr-Commit-Position: refs/heads/master@{#340260} --- content/public/browser/render_frame_host.h | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'content/public/browser') 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 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; -- cgit v1.1