Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(297)

Side by Side Diff: chrome/browser/referrer_policy_browsertest.cc

Issue 8823008: Test for referrer policy (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | chrome/chrome_tests.gypi » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "base/bind.h"
6 #include "base/string_number_conversions.h"
7 #include "base/utf_string_conversions.h"
8 #include "chrome/browser/ui/browser.h"
9 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h"
10 #include "chrome/test/base/in_process_browser_test.h"
11 #include "chrome/test/base/ui_test_utils.h"
12 #include "net/test/test_server.h"
13
14 namespace {
15
16 const FilePath::CharType kDocRoot[] =
17 FILE_PATH_LITERAL("chrome/test/data/referrer_policy");
18
19 } // namespace
20
21 class ReferrerPolicyTest : public InProcessBrowserTest {
22 public:
23 // Navigates to the given URL and waits for |num_navigations| to occur, and
24 // the title to change to |expected_title|.
25 void NavigateToURLAndWaitForTitle(const GURL& url,
26 const std::string& expected_title,
27 int num_navigations) {
28 ui_test_utils::TitleWatcher title_watcher(
29 browser()->GetSelectedTabContents(),
30 ASCIIToUTF16(expected_title));
31
32 ui_test_utils::NavigateToURLBlockUntilNavigationsComplete(
33 browser(), url, num_navigations);
34
35 EXPECT_EQ(title_watcher.WaitAndGetTitle(), ASCIIToUTF16(expected_title));
36 }
37
38 enum ExpectedReferrer {
39 ExpectedReferrerIsEmpty,
40 ExpectedReferrerIsFull,
41 ExpectedReferrerIsOrigin
42 };
43
44 // Navigates from a page with a given |referrer_policy| (optionally on https)
45 // to a page on http that reports the passed referrer and checks that it
46 // matches the |expected_referrer|.
47 void RunReferrerTest(const std::string referrer_policy,
48 bool start_on_https,
49 ExpectedReferrer expected_referrer) {
50 net::TestServer test_server(net::TestServer::TYPE_HTTP, FilePath(kDocRoot));
51 ASSERT_TRUE(test_server.Start());
52 net::TestServer ssl_test_server(net::TestServer::TYPE_HTTPS,
53 FilePath(kDocRoot));
54 ASSERT_TRUE(ssl_test_server.Start());
55
56 GURL start_url = test_server.GetURL(
57 std::string("files/referrer-policy-start.html?") + referrer_policy +
58 "&port=" + base::IntToString(test_server.host_port_pair().port()));
59 if (start_on_https) {
60 start_url = ssl_test_server.GetURL(
61 std::string("files/referrer-policy-start.html?") + referrer_policy +
62 "&port=" + base::IntToString(test_server.host_port_pair().port()));
63 }
64
65 std::string referrer;
66 switch (expected_referrer) {
67 case ExpectedReferrerIsEmpty:
68 referrer = "Referrer is empty";
69 break;
70 case ExpectedReferrerIsFull:
71 referrer = "Referrer is " + start_url.spec();
72 break;
73 case ExpectedReferrerIsOrigin:
74 referrer = "Referrer is " + start_url.GetWithEmptyPath().spec();
75 break;
76 }
77
78 NavigateToURLAndWaitForTitle(start_url, referrer, 2);
79 }
80 };
81
82 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, Default) {
83 RunReferrerTest("default", false, ExpectedReferrerIsFull);
84 }
85
86 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, Always) {
87 RunReferrerTest("always", false, ExpectedReferrerIsFull);
88 }
89
90 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, Origin) {
91 RunReferrerTest("origin", false, ExpectedReferrerIsOrigin);
92 }
93
94 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, Never) {
95 RunReferrerTest("never", false, ExpectedReferrerIsEmpty);
96 }
97
98 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, HttpsDefault) {
99 RunReferrerTest("default", true, ExpectedReferrerIsEmpty);
100 }
101
102 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, HttpsAlways) {
103 RunReferrerTest("always", true, ExpectedReferrerIsFull);
104 }
105
106 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, HttpsOrigin) {
107 RunReferrerTest("origin", true, ExpectedReferrerIsOrigin);
108 }
109
110 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, HttpsNever) {
111 RunReferrerTest("never", true, ExpectedReferrerIsEmpty);
112 }
113
114 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, Redirect) {
115 net::TestServer test_server(net::TestServer::TYPE_HTTP, FilePath(kDocRoot));
116 ASSERT_TRUE(test_server.Start());
117 net::TestServer ssl_test_server(net::TestServer::TYPE_HTTPS,
118 FilePath(kDocRoot));
119 ASSERT_TRUE(ssl_test_server.Start());
120 GURL start_url = test_server.GetURL(
121 std::string("files/referrer-policy-redirect.html?") +
122 "ssl_port=" + base::IntToString(ssl_test_server.host_port_pair().port()) +
123 "&port=" + base::IntToString(test_server.host_port_pair().port()));
124 std::string referrer = "Referrer is " + start_url.GetWithEmptyPath().spec();
125 NavigateToURLAndWaitForTitle(start_url, referrer, 2);
126 }
OLDNEW
« no previous file with comments | « no previous file | chrome/chrome_tests.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698