diff options
author | mmenke@chromium.org <mmenke@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-02-28 20:12:33 +0000 |
---|---|---|
committer | mmenke@chromium.org <mmenke@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-02-28 20:12:33 +0000 |
commit | 8d528580733af80c38fe0c806bfb81b887e17709 (patch) | |
tree | b05c84be62be76e71778e6442c858be5e1bfc6e4 /chrome | |
parent | 627d8cb8a729652dfac04f42bad6754a28bc0382 (diff) | |
download | chromium_src-8d528580733af80c38fe0c806bfb81b887e17709.zip chromium_src-8d528580733af80c38fe0c806bfb81b887e17709.tar.gz chromium_src-8d528580733af80c38fe0c806bfb81b887e17709.tar.bz2 |
Beef up prerendering tests a little.
Adds PrerenderBrowserTest.PrerenderNoSSLReferrer, which checks that there
is no referrer when an SSL page prerenders a non-SSL page.
Also modifies PrerenderBrowserTest.PrerenderRedirect to check that plugins
are delay loaded in addition to making sure the prerendered page is used.
BUG=73170
TEST=PrerenderBrowserTest.PrerenderNoSSLReferrer, PrerenderBrowserTest.PrerenderRedirect
Review URL: http://codereview.chromium.org/6580041
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@76250 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
4 files changed, 65 insertions, 23 deletions
diff --git a/chrome/browser/prerender/prerender_browsertest.cc b/chrome/browser/prerender/prerender_browsertest.cc index 1643fd1..3cf31bd 100644 --- a/chrome/browser/prerender/prerender_browsertest.cc +++ b/chrome/browser/prerender/prerender_browsertest.cc @@ -30,6 +30,15 @@ namespace prerender { namespace { +bool CreateRedirect(const std::string& dest_url, std::string* redirect_path) { + std::vector<net::TestServer::StringPair> replacement_text; + replacement_text.push_back(make_pair("REPLACE_WITH_URL", dest_url)); + return net::TestServer::GetFilePathWithReplacements( + "prerender_redirect.html", + replacement_text, + redirect_path); +} + // PrerenderContents that stops the UI message loop on DidStopLoading(). class TestPrerenderContents : public PrerenderContents { public: @@ -92,7 +101,7 @@ class WaitForLoadPrerenderContentsFactory : public PrerenderContents::Factory { class PrerenderBrowserTest : public InProcessBrowserTest { public: - PrerenderBrowserTest() { + PrerenderBrowserTest() : use_https_src_server_(false) { EnableDOMAutomation(); } @@ -126,7 +135,17 @@ class PrerenderBrowserTest : public InProcessBrowserTest { "files/prerender/prerender_loader.html", replacement_text, &replacement_path)); - GURL src_url = test_server()->GetURL(replacement_path); + + net::TestServer* src_server = test_server(); + scoped_ptr<net::TestServer> https_src_server; + if (use_https_src_server_) { + https_src_server.reset( + new net::TestServer(net::TestServer::TYPE_HTTPS, + FilePath(FILE_PATH_LITERAL("chrome/test/data")))); + ASSERT_TRUE(https_src_server->Start()); + src_server = https_src_server.get(); + } + GURL src_url = src_server->GetURL(replacement_path); Profile* profile = browser()->GetSelectedTabContents()->profile(); PrerenderManager* prerender_manager = profile->GetPrerenderManager(); @@ -202,8 +221,13 @@ class PrerenderBrowserTest : public InProcessBrowserTest { EXPECT_TRUE(display_test_result); } + void set_use_https_src(bool use_https_src_server) { + use_https_src_server_ = use_https_src_server; + } + private: GURL dest_url_; + bool use_https_src_server_; }; // Checks that a page is correctly prerendered in the case of a @@ -255,9 +279,12 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderHttpAuthentication) { FINAL_STATUS_AUTH_NEEDED, 1); } -// Checks that redirects work with prerendering. +// Checks that HTML redirects work with prerendering - specifically, checks the +// page is used and plugins aren't loaded. IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderRedirect) { - PrerenderTestURL("prerender_redirect.html", + std::string redirect_path; + ASSERT_TRUE(CreateRedirect("plugin_delay_load.html", &redirect_path)); + PrerenderTestURL(redirect_path, FINAL_STATUS_USED, 2); NavigateToDestURL(); } @@ -291,6 +318,15 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderReferrer) { NavigateToDestURL(); } +// Checks that the referrer is not set when prerendering and the source page is +// HTTPS. +IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderNoSSLReferrer) { + set_use_https_src(true); + PrerenderTestURL("prerender_no_referrer.html", + FINAL_STATUS_USED, 1); + NavigateToDestURL(); +} + // Checks that popups on a prerendered page cause cancellation. IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderPopup) { PrerenderTestURL("prerender_popup.html", @@ -304,14 +340,8 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, FLAKY_PrerenderRedirectToHttps) { FilePath(FILE_PATH_LITERAL("chrome/test/data"))); ASSERT_TRUE(https_server.Start()); GURL https_url = https_server.GetURL("files/prerender/prerender_page.html"); - std::vector<net::TestServer::StringPair> replacement_text; - replacement_text.push_back( - make_pair("REPLACE_WITH_HTTPS_URL", https_url.spec())); std::string redirect_path; - ASSERT_TRUE(net::TestServer::GetFilePathWithReplacements( - "prerender_redirect_to_https.html", - replacement_text, - &redirect_path)); + ASSERT_TRUE(CreateRedirect(https_url.spec(), &redirect_path)); PrerenderTestURL(redirect_path, FINAL_STATUS_HTTPS, 2); diff --git a/chrome/test/data/prerender/prerender_no_referrer.html b/chrome/test/data/prerender/prerender_no_referrer.html new file mode 100644 index 0000000..e8a67d1 --- /dev/null +++ b/chrome/test/data/prerender/prerender_no_referrer.html @@ -0,0 +1,22 @@ +<html> +<!-- +This test makes sure that referrer is not set when it shouldn't be, +such as when the referrer uses https and the destination page does +not. +--> +<head> +<title>Prerender No Referrer Test</title> +<script> +// Check there is no referrer. +function DidPrerenderPass() { + return document.referrer == ""; +} + +// Check there is no referrer. +function DidDisplayPass() { + return document.referrer == ""; +} +</script> +</head> +<body></body> +</html> diff --git a/chrome/test/data/prerender/prerender_redirect.html b/chrome/test/data/prerender/prerender_redirect.html index ac913b1..6813de4 100644 --- a/chrome/test/data/prerender/prerender_redirect.html +++ b/chrome/test/data/prerender/prerender_redirect.html @@ -1,10 +1,10 @@ <html> <!-- -This test checks to make sure that a prerendered page is loaded. +This is used to test prerendering in the case of HTML redirection. --> <head> <title>Prerender Redirect</title> -<meta http-equiv="REFRESH" content="0;prerender_page.html"></HEAD> +<meta http-equiv="REFRESH" content="0;REPLACE_WITH_URL"> </head> <body></body> </html> diff --git a/chrome/test/data/prerender/prerender_redirect_to_https.html b/chrome/test/data/prerender/prerender_redirect_to_https.html deleted file mode 100644 index da031d4..0000000 --- a/chrome/test/data/prerender/prerender_redirect_to_https.html +++ /dev/null @@ -1,10 +0,0 @@ -<html> -<!-- -This test checks to make sure that a prerendered page is loaded. ---> -<head> -<title>Prerender Redirect</title> -<meta http-equiv="REFRESH" content="0;REPLACE_WITH_HTTPS_URL"></HEAD> -</head> -<body></body> -</html> |