Index: net/url_request/url_request_unittest.cc |
diff --git a/net/url_request/url_request_unittest.cc b/net/url_request/url_request_unittest.cc |
index ea3a9d4476760493469bc55b842e01b8fcfc6e79..6257b29296d5193917a6f1c8f4adff3b1463638d 100644 |
--- a/net/url_request/url_request_unittest.cc |
+++ b/net/url_request/url_request_unittest.cc |
@@ -8853,141 +8853,244 @@ class URLRequestTestReferrerPolicy : public URLRequestTest { |
TEST_F(URLRequestTestReferrerPolicy, HTTPToSameOriginHTTP) { |
InstantiateSameOriginServers(net::EmbeddedTestServer::TYPE_HTTP); |
+ GURL referrer = origin_server()->GetURL("/path/to/file.html"); |
VerifyReferrerAfterRedirect( |
URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE, |
- origin_server()->GetURL("/path/to/file.html"), |
- origin_server()->GetURL("/path/to/file.html")); |
+ referrer, referrer); |
VerifyReferrerAfterRedirect( |
URLRequest::REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN, |
- origin_server()->GetURL("/path/to/file.html"), |
- origin_server()->GetURL("/path/to/file.html")); |
+ referrer, referrer); |
VerifyReferrerAfterRedirect( |
- URLRequest::ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN, |
- origin_server()->GetURL("/path/to/file.html"), |
- origin_server()->GetURL("/path/to/file.html")); |
+ URLRequest::ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN, referrer, referrer); |
- VerifyReferrerAfterRedirect(URLRequest::NEVER_CLEAR_REFERRER, |
- origin_server()->GetURL("/path/to/file.html"), |
- origin_server()->GetURL("/path/to/file.html")); |
+ VerifyReferrerAfterRedirect(URLRequest::NEVER_CLEAR_REFERRER, referrer, |
+ referrer); |
+ |
+ // The original referrer set on the request is expected to obey the referrer |
+ // policy and already be stripped to the origin; thus this test case just |
+ // checks that this policy doesn't cause the referrer to change when following |
+ // a redirect. |
+ VerifyReferrerAfterRedirect(URLRequest::ORIGIN, referrer.GetOrigin(), |
+ referrer.GetOrigin()); |
+ |
+ VerifyReferrerAfterRedirect( |
+ URLRequest::CLEAR_REFERRER_ON_TRANSITION_CROSS_ORIGIN, referrer, |
+ referrer); |
+ |
+ // The original referrer set on the request is expected to obey the referrer |
+ // policy and already be stripped to the origin; thus this test case just |
+ // checks that this policy doesn't cause the referrer to change when following |
+ // a redirect. |
+ VerifyReferrerAfterRedirect( |
+ URLRequest::ORIGIN_CLEAR_ON_TRANSITION_FROM_SECURE_TO_INSECURE, |
+ referrer.GetOrigin(), referrer.GetOrigin()); |
+ |
+ VerifyReferrerAfterRedirect(URLRequest::NO_REFERRER, GURL(), GURL()); |
} |
TEST_F(URLRequestTestReferrerPolicy, HTTPToCrossOriginHTTP) { |
InstantiateCrossOriginServers(net::EmbeddedTestServer::TYPE_HTTP, |
net::EmbeddedTestServer::TYPE_HTTP); |
+ GURL referrer = origin_server()->GetURL("/path/to/file.html"); |
VerifyReferrerAfterRedirect( |
URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE, |
- origin_server()->GetURL("/path/to/file.html"), |
- origin_server()->GetURL("/path/to/file.html")); |
+ referrer, referrer); |
VerifyReferrerAfterRedirect( |
URLRequest::REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN, |
- origin_server()->GetURL("/path/to/file.html"), |
- origin_server()->GetURL("/")); |
+ referrer, referrer.GetOrigin()); |
VerifyReferrerAfterRedirect( |
- URLRequest::ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN, |
- origin_server()->GetURL("/path/to/file.html"), |
- origin_server()->GetURL("/")); |
+ URLRequest::ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN, referrer, |
+ referrer.GetOrigin()); |
+ |
+ VerifyReferrerAfterRedirect(URLRequest::NEVER_CLEAR_REFERRER, referrer, |
+ referrer); |
+ |
+ // The original referrer set on the request is expected to obey the referrer |
+ // policy and already be stripped to the origin; thus this test case just |
+ // checks that this policy doesn't cause the referrer to change when following |
+ // a redirect. |
+ VerifyReferrerAfterRedirect(URLRequest::ORIGIN, referrer.GetOrigin(), |
+ referrer.GetOrigin()); |
- VerifyReferrerAfterRedirect(URLRequest::NEVER_CLEAR_REFERRER, |
- origin_server()->GetURL("/path/to/file.html"), |
- origin_server()->GetURL("/path/to/file.html")); |
+ VerifyReferrerAfterRedirect( |
+ URLRequest::CLEAR_REFERRER_ON_TRANSITION_CROSS_ORIGIN, referrer, GURL()); |
+ |
+ // The original referrer set on the request is expected to obey the referrer |
+ // policy and already be stripped to the origin; thus this test case just |
+ // checks that this policy doesn't cause the referrer to change when following |
+ // a redirect. |
+ VerifyReferrerAfterRedirect( |
+ URLRequest::ORIGIN_CLEAR_ON_TRANSITION_FROM_SECURE_TO_INSECURE, |
+ referrer.GetOrigin(), referrer.GetOrigin()); |
+ |
+ VerifyReferrerAfterRedirect(URLRequest::NO_REFERRER, GURL(), GURL()); |
} |
TEST_F(URLRequestTestReferrerPolicy, HTTPSToSameOriginHTTPS) { |
InstantiateSameOriginServers(net::EmbeddedTestServer::TYPE_HTTPS); |
+ GURL referrer = origin_server()->GetURL("/path/to/file.html"); |
VerifyReferrerAfterRedirect( |
URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE, |
- origin_server()->GetURL("/path/to/file.html"), |
- origin_server()->GetURL("/path/to/file.html")); |
+ referrer, referrer); |
VerifyReferrerAfterRedirect( |
URLRequest::REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN, |
- origin_server()->GetURL("/path/to/file.html"), |
- origin_server()->GetURL("/path/to/file.html")); |
+ referrer, referrer); |
+ |
+ VerifyReferrerAfterRedirect( |
+ URLRequest::ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN, referrer, referrer); |
+ |
+ VerifyReferrerAfterRedirect(URLRequest::NEVER_CLEAR_REFERRER, referrer, |
+ referrer); |
+ |
+ // The original referrer set on the request is expected to obey the referrer |
+ // policy and already be stripped to the origin; thus this test case just |
+ // checks that this policy doesn't cause the referrer to change when following |
+ // a redirect. |
+ VerifyReferrerAfterRedirect(URLRequest::ORIGIN, referrer.GetOrigin(), |
+ referrer.GetOrigin()); |
+ |
+ VerifyReferrerAfterRedirect( |
+ URLRequest::CLEAR_REFERRER_ON_TRANSITION_CROSS_ORIGIN, referrer, |
+ referrer); |
+ // The original referrer set on the request is expected to obey the referrer |
+ // policy and already be stripped to the origin; thus this test case just |
+ // checks that this policy doesn't cause the referrer to change when following |
+ // a redirect. |
VerifyReferrerAfterRedirect( |
- URLRequest::ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN, |
- origin_server()->GetURL("/path/to/file.html"), |
- origin_server()->GetURL("/path/to/file.html")); |
+ URLRequest::ORIGIN_CLEAR_ON_TRANSITION_FROM_SECURE_TO_INSECURE, |
+ referrer.GetOrigin(), referrer.GetOrigin()); |
- VerifyReferrerAfterRedirect(URLRequest::NEVER_CLEAR_REFERRER, |
- origin_server()->GetURL("/path/to/file.html"), |
- origin_server()->GetURL("/path/to/file.html")); |
+ VerifyReferrerAfterRedirect(URLRequest::NO_REFERRER, GURL(), GURL()); |
} |
TEST_F(URLRequestTestReferrerPolicy, HTTPSToCrossOriginHTTPS) { |
InstantiateCrossOriginServers(net::EmbeddedTestServer::TYPE_HTTPS, |
net::EmbeddedTestServer::TYPE_HTTPS); |
+ GURL referrer = origin_server()->GetURL("/path/to/file.html"); |
VerifyReferrerAfterRedirect( |
URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE, |
- origin_server()->GetURL("/path/to/file.html"), |
- origin_server()->GetURL("/path/to/file.html")); |
+ referrer, referrer); |
VerifyReferrerAfterRedirect( |
URLRequest::REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN, |
- origin_server()->GetURL("/path/to/file.html"), |
- origin_server()->GetURL("/")); |
+ referrer, origin_server()->GetURL("/")); |
VerifyReferrerAfterRedirect( |
- URLRequest::ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN, |
- origin_server()->GetURL("/path/to/file.html"), |
+ URLRequest::ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN, referrer, |
origin_server()->GetURL("/")); |
- VerifyReferrerAfterRedirect(URLRequest::NEVER_CLEAR_REFERRER, |
- origin_server()->GetURL("/path/to/file.html"), |
- origin_server()->GetURL("/path/to/file.html")); |
+ VerifyReferrerAfterRedirect(URLRequest::NEVER_CLEAR_REFERRER, referrer, |
+ referrer); |
+ |
+ // The original referrer set on the request is expected to obey the referrer |
+ // policy and already be stripped to the origin; thus this test case just |
+ // checks that this policy doesn't cause the referrer to change when following |
+ // a redirect. |
+ VerifyReferrerAfterRedirect(URLRequest::ORIGIN, referrer.GetOrigin(), |
+ referrer.GetOrigin()); |
+ |
+ VerifyReferrerAfterRedirect( |
+ URLRequest::CLEAR_REFERRER_ON_TRANSITION_CROSS_ORIGIN, referrer, GURL()); |
+ |
+ // The original referrer set on the request is expected to obey the referrer |
+ // policy and already be stripped to the origin; thus this test case just |
+ // checks that this policy doesn't cause the referrer to change when following |
+ // a redirect. |
+ VerifyReferrerAfterRedirect( |
+ URLRequest::ORIGIN_CLEAR_ON_TRANSITION_FROM_SECURE_TO_INSECURE, |
+ referrer.GetOrigin(), referrer.GetOrigin()); |
+ |
+ VerifyReferrerAfterRedirect(URLRequest::NO_REFERRER, GURL(), GURL()); |
} |
TEST_F(URLRequestTestReferrerPolicy, HTTPToHTTPS) { |
InstantiateCrossOriginServers(net::EmbeddedTestServer::TYPE_HTTP, |
net::EmbeddedTestServer::TYPE_HTTPS); |
+ GURL referrer = origin_server()->GetURL("/path/to/file.html"); |
VerifyReferrerAfterRedirect( |
URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE, |
- origin_server()->GetURL("/path/to/file.html"), |
- origin_server()->GetURL("/path/to/file.html")); |
+ referrer, referrer); |
VerifyReferrerAfterRedirect( |
URLRequest::REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN, |
- origin_server()->GetURL("/path/to/file.html"), |
- origin_server()->GetURL("/")); |
+ referrer, origin_server()->GetURL("/")); |
VerifyReferrerAfterRedirect( |
- URLRequest::ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN, |
- origin_server()->GetURL("/path/to/file.html"), |
+ URLRequest::ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN, referrer, |
origin_server()->GetURL("/")); |
- VerifyReferrerAfterRedirect(URLRequest::NEVER_CLEAR_REFERRER, |
- origin_server()->GetURL("/path/to/file.html"), |
- origin_server()->GetURL("/path/to/file.html")); |
+ VerifyReferrerAfterRedirect(URLRequest::NEVER_CLEAR_REFERRER, referrer, |
+ referrer); |
+ |
+ // The original referrer set on the request is expected to obey the referrer |
+ // policy and already be stripped to the origin; thus this test case just |
+ // checks that this policy doesn't cause the referrer to change when following |
+ // a redirect. |
+ VerifyReferrerAfterRedirect(URLRequest::ORIGIN, referrer.GetOrigin(), |
+ referrer.GetOrigin()); |
+ |
+ VerifyReferrerAfterRedirect( |
+ URLRequest::CLEAR_REFERRER_ON_TRANSITION_CROSS_ORIGIN, referrer, GURL()); |
+ |
+ // The original referrer set on the request is expected to obey the referrer |
+ // policy and already be stripped to the origin; thus this test case just |
+ // checks that this policy doesn't cause the referrer to change when following |
+ // a redirect. |
+ VerifyReferrerAfterRedirect( |
+ URLRequest::ORIGIN_CLEAR_ON_TRANSITION_FROM_SECURE_TO_INSECURE, |
+ referrer.GetOrigin(), referrer.GetOrigin()); |
+ |
+ VerifyReferrerAfterRedirect(URLRequest::NO_REFERRER, GURL(), GURL()); |
} |
TEST_F(URLRequestTestReferrerPolicy, HTTPSToHTTP) { |
InstantiateCrossOriginServers(net::EmbeddedTestServer::TYPE_HTTPS, |
net::EmbeddedTestServer::TYPE_HTTP); |
+ GURL referrer = origin_server()->GetURL("/path/to/file.html"); |
VerifyReferrerAfterRedirect( |
URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE, |
- origin_server()->GetURL("/path/to/file.html"), GURL()); |
+ referrer, GURL()); |
VerifyReferrerAfterRedirect( |
URLRequest::REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN, |
- origin_server()->GetURL("/path/to/file.html"), GURL()); |
+ referrer, GURL()); |
VerifyReferrerAfterRedirect( |
- URLRequest::ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN, |
- origin_server()->GetURL("/path/to/file.html"), |
+ URLRequest::ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN, referrer, |
origin_server()->GetURL("/")); |
- VerifyReferrerAfterRedirect(URLRequest::NEVER_CLEAR_REFERRER, |
- origin_server()->GetURL("/path/to/file.html"), |
- origin_server()->GetURL("/path/to/file.html")); |
+ VerifyReferrerAfterRedirect(URLRequest::NEVER_CLEAR_REFERRER, referrer, |
+ referrer); |
+ |
+ // The original referrer set on the request is expected to obey the referrer |
+ // policy and already be stripped to the origin; thus this test case just |
+ // checks that this policy doesn't cause the referrer to change when following |
+ // a redirect. |
+ VerifyReferrerAfterRedirect(URLRequest::ORIGIN, referrer.GetOrigin(), |
+ referrer.GetOrigin()); |
+ |
+ VerifyReferrerAfterRedirect( |
+ URLRequest::CLEAR_REFERRER_ON_TRANSITION_CROSS_ORIGIN, referrer, GURL()); |
+ |
+ // The original referrer set on the request is expected to obey the referrer |
+ // policy and already be stripped to the origin, though it should be |
+ // subsequently cleared during the downgrading redirect. |
+ VerifyReferrerAfterRedirect( |
+ URLRequest::ORIGIN_CLEAR_ON_TRANSITION_FROM_SECURE_TO_INSECURE, |
+ referrer.GetOrigin(), GURL()); |
+ |
+ VerifyReferrerAfterRedirect(URLRequest::NO_REFERRER, GURL(), GURL()); |
} |
class HTTPSRequestTest : public testing::Test { |