summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/prerender/prerender_browsertest.cc22
-rw-r--r--chrome/test/data/prerender/prerender_download_location.html11
-rw-r--r--chrome/test/data/prerender/prerender_redirect.html12
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>