summaryrefslogtreecommitdiffstats
path: root/chrome/browser/prerender
diff options
context:
space:
mode:
authormmenke@chromium.org <mmenke@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-02 15:10:33 +0000
committermmenke@chromium.org <mmenke@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-02 15:10:33 +0000
commitf66a8ed1e4c4f693239548c162ffcd4b862b4654 (patch)
treed28e8fe7d1c1f13ef14ee485f73c6545111e1b22 /chrome/browser/prerender
parent340ed7281b723434141d46cc6f9deb016165a5c0 (diff)
downloadchromium_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.cc52
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);