diff options
author | mmenke@chromium.org <mmenke@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-03-02 15:10:33 +0000 |
---|---|---|
committer | mmenke@chromium.org <mmenke@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-03-02 15:10:33 +0000 |
commit | f66a8ed1e4c4f693239548c162ffcd4b862b4654 (patch) | |
tree | d28e8fe7d1c1f13ef14ee485f73c6545111e1b22 /chrome/browser/prerender | |
parent | 340ed7281b723434141d46cc6f9deb016165a5c0 (diff) | |
download | chromium_src-f66a8ed1e4c4f693239548c162ffcd4b862b4654.zip chromium_src-f66a8ed1e4c4f693239548c162ffcd4b862b4654.tar.gz chromium_src-f66a8ed1e4c4f693239548c162ffcd4b862b4654.tar.bz2 |
Adds PrerenderBrowserTest.PrerenderNoSSLReferrer, which checks that there
is no referrer when an SSL page prerenders a non-SSL page.
Note that this patch is most of patch http://codereview.chromium.org/6580041
(reverted http://src.chromium.org/viewvc/chrome?view=rev&revision=76304).
The only difference is the redirect test is not modified to use plugins.
After the patch, the buildbots were periodically failing
PrerenderBrowserTest.PrerenderRedirect with lock errors (2 times out of 10+
runs). See, e.g.
http://build.chromium.org/p/chromium/builders/Linux%20Tests%20x64/builds/5976/steps/browser_tests/logs/PrerenderRedirect
(Note that the percents in the URL are incorrectly escaped by the
codereview page, so the URL has to be copied and pasted to be used).
I believe the issue is that the other prerender browser test that uses plugins
is not shutting down the plugin process properly. I want to see if I can
reproduce the issue locally and fix it, not because the change I reverted
is so important, but because if I'm right, it could be a cause of future
test flake.
BUG=73170
TEST=PrerenderBrowserTest.PrerenderNoSSLReferrer
Review URL: http://codereview.chromium.org/6591068
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@76542 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/prerender')
-rw-r--r-- | chrome/browser/prerender/prerender_browsertest.cc | 52 |
1 files changed, 41 insertions, 11 deletions
diff --git a/chrome/browser/prerender/prerender_browsertest.cc b/chrome/browser/prerender/prerender_browsertest.cc index 1643fd1..72f8831 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("prerender_page.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); |