diff options
-rw-r--r-- | chrome/browser/prerender/prerender_browsertest.cc | 22 | ||||
-rw-r--r-- | chrome/test/data/prerender/prerender_download_location.html | 11 | ||||
-rw-r--r-- | chrome/test/data/prerender/prerender_redirect.html | 12 |
3 files changed, 28 insertions, 17 deletions
diff --git a/chrome/browser/prerender/prerender_browsertest.cc b/chrome/browser/prerender/prerender_browsertest.cc index 261827a..544b130 100644 --- a/chrome/browser/prerender/prerender_browsertest.cc +++ b/chrome/browser/prerender/prerender_browsertest.cc @@ -101,7 +101,8 @@ class WaitForLoadPrerenderContentsFactory : public PrerenderContents::Factory { class PrerenderBrowserTest : public InProcessBrowserTest { public: - PrerenderBrowserTest() : use_https_src_server_(false) { + PrerenderBrowserTest() : use_https_src_server_(false), + on_iteration_succeeded_(true) { EnableDOMAutomation(); } @@ -167,6 +168,7 @@ class PrerenderBrowserTest : public InProcessBrowserTest { while (true) { ui_test_utils::RunMessageLoop(); ++navigations; + EXPECT_TRUE(on_iteration_succeeded_); prerender_contents = static_cast<TestPrerenderContents*>( @@ -178,6 +180,11 @@ class PrerenderBrowserTest : public InProcessBrowserTest { break; } prerender_contents->set_did_finish_loading(false); + MessageLoopForUI::current()->PostTask( + FROM_HERE, + NewRunnableMethod(this, + &PrerenderBrowserTest::CallOnIteration, + prerender_contents->render_view_host())); } switch (expected_final_status) { @@ -226,8 +233,16 @@ class PrerenderBrowserTest : public InProcessBrowserTest { } private: + void CallOnIteration(RenderViewHost* rvh) { + on_iteration_succeeded_ = ui_test_utils::ExecuteJavaScript( + rvh, + L"", + L"if (typeof(OnIteration) != 'undefined') {OnIteration();}"); + } + GURL dest_url_; bool use_https_src_server_; + bool on_iteration_succeeded_; }; // Checks that a page is correctly prerendered in the case of a @@ -300,8 +315,9 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderDownloadIFrame) { // Javascript changing the window.location. This should not prerender // successfully. IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderDownloadLocation) { - PrerenderTestURL("prerender_download_location.html", - FINAL_STATUS_DOWNLOAD, 2); + std::string redirect_path; + ASSERT_TRUE(CreateRedirect("../download-test1.lib", &redirect_path)); + PrerenderTestURL(redirect_path, FINAL_STATUS_DOWNLOAD, 2); } // Prerenders a page that contains an automatic download triggered through a diff --git a/chrome/test/data/prerender/prerender_download_location.html b/chrome/test/data/prerender/prerender_download_location.html deleted file mode 100644 index ff6d2ae..0000000 --- a/chrome/test/data/prerender/prerender_download_location.html +++ /dev/null @@ -1,11 +0,0 @@ -<html> - <head><title>Prerender download test - location</title> - <script> - setTimeout( - function() { - window.location = '../download-test1.lib'; - }, 1000); - </script> - </head> - <body></body> -</html> diff --git a/chrome/test/data/prerender/prerender_redirect.html b/chrome/test/data/prerender/prerender_redirect.html index 6813de4..3cd14e4 100644 --- a/chrome/test/data/prerender/prerender_redirect.html +++ b/chrome/test/data/prerender/prerender_redirect.html @@ -3,8 +3,14 @@ This is used to test prerendering in the case of HTML redirection. --> <head> -<title>Prerender Redirect</title> -<meta http-equiv="REFRESH" content="0;REPLACE_WITH_URL"> + <title>Prerender Redirect</title> </head> -<body></body> +<body> + <script> + function OnIteration() { + document.location = 'REPLACE_WITH_URL'; + return true; + } + </script> +</body> </html> |