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

Side by Side Diff: net/url_request/url_request_unittest.cc

Issue 2918313002: Implement new referrer policies (Closed)
Patch Set: update public/platform/OWNERS per presubmit Created 3 years, 6 months 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <memory> 5 #include <memory>
6 #include <utility> 6 #include <utility>
7 7
8 #include "base/memory/ptr_util.h" 8 #include "base/memory/ptr_util.h"
9 #include "base/run_loop.h" 9 #include "base/run_loop.h"
10 #include "build/build_config.h" 10 #include "build/build_config.h"
(...skipping 8835 matching lines...) Expand 10 before | Expand all | Expand 10 after
8846 EmbeddedTestServer* origin_server() const { return origin_server_.get(); } 8846 EmbeddedTestServer* origin_server() const { return origin_server_.get(); }
8847 8847
8848 private: 8848 private:
8849 std::unique_ptr<EmbeddedTestServer> origin_server_; 8849 std::unique_ptr<EmbeddedTestServer> origin_server_;
8850 std::unique_ptr<EmbeddedTestServer> destination_server_; 8850 std::unique_ptr<EmbeddedTestServer> destination_server_;
8851 }; 8851 };
8852 8852
8853 TEST_F(URLRequestTestReferrerPolicy, HTTPToSameOriginHTTP) { 8853 TEST_F(URLRequestTestReferrerPolicy, HTTPToSameOriginHTTP) {
8854 InstantiateSameOriginServers(net::EmbeddedTestServer::TYPE_HTTP); 8854 InstantiateSameOriginServers(net::EmbeddedTestServer::TYPE_HTTP);
8855 8855
8856 VerifyReferrerAfterRedirect( 8856 GURL referrer = origin_server()->GetURL("/path/to/file.html");
8857 URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE, 8857 VerifyReferrerAfterRedirect(
8858 origin_server()->GetURL("/path/to/file.html"), 8858 URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE,
8859 origin_server()->GetURL("/path/to/file.html")); 8859 referrer, referrer);
8860 8860
8861 VerifyReferrerAfterRedirect( 8861 VerifyReferrerAfterRedirect(
8862 URLRequest::REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN, 8862 URLRequest::REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN,
8863 origin_server()->GetURL("/path/to/file.html"), 8863 referrer, referrer);
8864 origin_server()->GetURL("/path/to/file.html")); 8864
8865 8865 VerifyReferrerAfterRedirect(
8866 VerifyReferrerAfterRedirect( 8866 URLRequest::ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN, referrer, referrer);
8867 URLRequest::ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN, 8867
8868 origin_server()->GetURL("/path/to/file.html"), 8868 VerifyReferrerAfterRedirect(URLRequest::NEVER_CLEAR_REFERRER, referrer,
8869 origin_server()->GetURL("/path/to/file.html")); 8869 referrer);
8870 8870
8871 VerifyReferrerAfterRedirect(URLRequest::NEVER_CLEAR_REFERRER, 8871 // The original referrer set on the request is expected to obey the referrer
8872 origin_server()->GetURL("/path/to/file.html"), 8872 // policy and already be stripped to the origin; thus this test case just
8873 origin_server()->GetURL("/path/to/file.html")); 8873 // checks that this policy doesn't cause the referrer to change when following
8874 // a redirect.
8875 VerifyReferrerAfterRedirect(URLRequest::ORIGIN, referrer.GetOrigin(),
8876 referrer.GetOrigin());
8877
8878 VerifyReferrerAfterRedirect(
8879 URLRequest::CLEAR_REFERRER_ON_TRANSITION_CROSS_ORIGIN, referrer,
8880 referrer);
8881
8882 // The original referrer set on the request is expected to obey the referrer
8883 // policy and already be stripped to the origin; thus this test case just
8884 // checks that this policy doesn't cause the referrer to change when following
8885 // a redirect.
8886 VerifyReferrerAfterRedirect(
8887 URLRequest::ORIGIN_CLEAR_ON_TRANSITION_FROM_SECURE_TO_INSECURE,
8888 referrer.GetOrigin(), referrer.GetOrigin());
8889
8890 VerifyReferrerAfterRedirect(URLRequest::NO_REFERRER, GURL(), GURL());
8874 } 8891 }
8875 8892
8876 TEST_F(URLRequestTestReferrerPolicy, HTTPToCrossOriginHTTP) { 8893 TEST_F(URLRequestTestReferrerPolicy, HTTPToCrossOriginHTTP) {
8877 InstantiateCrossOriginServers(net::EmbeddedTestServer::TYPE_HTTP, 8894 InstantiateCrossOriginServers(net::EmbeddedTestServer::TYPE_HTTP,
8878 net::EmbeddedTestServer::TYPE_HTTP); 8895 net::EmbeddedTestServer::TYPE_HTTP);
8879 8896 GURL referrer = origin_server()->GetURL("/path/to/file.html");
8880 VerifyReferrerAfterRedirect( 8897
8881 URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE, 8898 VerifyReferrerAfterRedirect(
8882 origin_server()->GetURL("/path/to/file.html"), 8899 URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE,
8883 origin_server()->GetURL("/path/to/file.html")); 8900 referrer, referrer);
8884 8901
8885 VerifyReferrerAfterRedirect( 8902 VerifyReferrerAfterRedirect(
8886 URLRequest::REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN, 8903 URLRequest::REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN,
8887 origin_server()->GetURL("/path/to/file.html"), 8904 referrer, referrer.GetOrigin());
8888 origin_server()->GetURL("/")); 8905
8889 8906 VerifyReferrerAfterRedirect(
8890 VerifyReferrerAfterRedirect( 8907 URLRequest::ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN, referrer,
8891 URLRequest::ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN, 8908 referrer.GetOrigin());
8892 origin_server()->GetURL("/path/to/file.html"), 8909
8893 origin_server()->GetURL("/")); 8910 VerifyReferrerAfterRedirect(URLRequest::NEVER_CLEAR_REFERRER, referrer,
8894 8911 referrer);
8895 VerifyReferrerAfterRedirect(URLRequest::NEVER_CLEAR_REFERRER, 8912
8896 origin_server()->GetURL("/path/to/file.html"), 8913 // The original referrer set on the request is expected to obey the referrer
8897 origin_server()->GetURL("/path/to/file.html")); 8914 // policy and already be stripped to the origin; thus this test case just
8915 // checks that this policy doesn't cause the referrer to change when following
8916 // a redirect.
8917 VerifyReferrerAfterRedirect(URLRequest::ORIGIN, referrer.GetOrigin(),
8918 referrer.GetOrigin());
8919
8920 VerifyReferrerAfterRedirect(
8921 URLRequest::CLEAR_REFERRER_ON_TRANSITION_CROSS_ORIGIN, referrer, GURL());
8922
8923 // The original referrer set on the request is expected to obey the referrer
8924 // policy and already be stripped to the origin; thus this test case just
8925 // checks that this policy doesn't cause the referrer to change when following
8926 // a redirect.
8927 VerifyReferrerAfterRedirect(
8928 URLRequest::ORIGIN_CLEAR_ON_TRANSITION_FROM_SECURE_TO_INSECURE,
8929 referrer.GetOrigin(), referrer.GetOrigin());
8930
8931 VerifyReferrerAfterRedirect(URLRequest::NO_REFERRER, GURL(), GURL());
8898 } 8932 }
8899 8933
8900 TEST_F(URLRequestTestReferrerPolicy, HTTPSToSameOriginHTTPS) { 8934 TEST_F(URLRequestTestReferrerPolicy, HTTPSToSameOriginHTTPS) {
8901 InstantiateSameOriginServers(net::EmbeddedTestServer::TYPE_HTTPS); 8935 InstantiateSameOriginServers(net::EmbeddedTestServer::TYPE_HTTPS);
8902 8936 GURL referrer = origin_server()->GetURL("/path/to/file.html");
8903 VerifyReferrerAfterRedirect( 8937
8904 URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE, 8938 VerifyReferrerAfterRedirect(
8905 origin_server()->GetURL("/path/to/file.html"), 8939 URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE,
8906 origin_server()->GetURL("/path/to/file.html")); 8940 referrer, referrer);
8907 8941
8908 VerifyReferrerAfterRedirect( 8942 VerifyReferrerAfterRedirect(
8909 URLRequest::REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN, 8943 URLRequest::REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN,
8910 origin_server()->GetURL("/path/to/file.html"), 8944 referrer, referrer);
8911 origin_server()->GetURL("/path/to/file.html")); 8945
8912 8946 VerifyReferrerAfterRedirect(
8913 VerifyReferrerAfterRedirect( 8947 URLRequest::ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN, referrer, referrer);
8914 URLRequest::ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN, 8948
8915 origin_server()->GetURL("/path/to/file.html"), 8949 VerifyReferrerAfterRedirect(URLRequest::NEVER_CLEAR_REFERRER, referrer,
8916 origin_server()->GetURL("/path/to/file.html")); 8950 referrer);
8917 8951
8918 VerifyReferrerAfterRedirect(URLRequest::NEVER_CLEAR_REFERRER, 8952 // The original referrer set on the request is expected to obey the referrer
8919 origin_server()->GetURL("/path/to/file.html"), 8953 // policy and already be stripped to the origin; thus this test case just
8920 origin_server()->GetURL("/path/to/file.html")); 8954 // checks that this policy doesn't cause the referrer to change when following
8955 // a redirect.
8956 VerifyReferrerAfterRedirect(URLRequest::ORIGIN, referrer.GetOrigin(),
8957 referrer.GetOrigin());
8958
8959 VerifyReferrerAfterRedirect(
8960 URLRequest::CLEAR_REFERRER_ON_TRANSITION_CROSS_ORIGIN, referrer,
8961 referrer);
8962
8963 // The original referrer set on the request is expected to obey the referrer
8964 // policy and already be stripped to the origin; thus this test case just
8965 // checks that this policy doesn't cause the referrer to change when following
8966 // a redirect.
8967 VerifyReferrerAfterRedirect(
8968 URLRequest::ORIGIN_CLEAR_ON_TRANSITION_FROM_SECURE_TO_INSECURE,
8969 referrer.GetOrigin(), referrer.GetOrigin());
8970
8971 VerifyReferrerAfterRedirect(URLRequest::NO_REFERRER, GURL(), GURL());
8921 } 8972 }
8922 8973
8923 TEST_F(URLRequestTestReferrerPolicy, HTTPSToCrossOriginHTTPS) { 8974 TEST_F(URLRequestTestReferrerPolicy, HTTPSToCrossOriginHTTPS) {
8924 InstantiateCrossOriginServers(net::EmbeddedTestServer::TYPE_HTTPS, 8975 InstantiateCrossOriginServers(net::EmbeddedTestServer::TYPE_HTTPS,
8925 net::EmbeddedTestServer::TYPE_HTTPS); 8976 net::EmbeddedTestServer::TYPE_HTTPS);
8926 8977 GURL referrer = origin_server()->GetURL("/path/to/file.html");
8927 VerifyReferrerAfterRedirect( 8978
8928 URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE, 8979 VerifyReferrerAfterRedirect(
8929 origin_server()->GetURL("/path/to/file.html"), 8980 URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE,
8930 origin_server()->GetURL("/path/to/file.html")); 8981 referrer, referrer);
8931 8982
8932 VerifyReferrerAfterRedirect( 8983 VerifyReferrerAfterRedirect(
8933 URLRequest::REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN, 8984 URLRequest::REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN,
8934 origin_server()->GetURL("/path/to/file.html"), 8985 referrer, origin_server()->GetURL("/"));
8986
8987 VerifyReferrerAfterRedirect(
8988 URLRequest::ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN, referrer,
8935 origin_server()->GetURL("/")); 8989 origin_server()->GetURL("/"));
8936 8990
8937 VerifyReferrerAfterRedirect( 8991 VerifyReferrerAfterRedirect(URLRequest::NEVER_CLEAR_REFERRER, referrer,
8938 URLRequest::ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN, 8992 referrer);
8939 origin_server()->GetURL("/path/to/file.html"), 8993
8940 origin_server()->GetURL("/")); 8994 // The original referrer set on the request is expected to obey the referrer
8941 8995 // policy and already be stripped to the origin; thus this test case just
8942 VerifyReferrerAfterRedirect(URLRequest::NEVER_CLEAR_REFERRER, 8996 // checks that this policy doesn't cause the referrer to change when following
8943 origin_server()->GetURL("/path/to/file.html"), 8997 // a redirect.
8944 origin_server()->GetURL("/path/to/file.html")); 8998 VerifyReferrerAfterRedirect(URLRequest::ORIGIN, referrer.GetOrigin(),
8999 referrer.GetOrigin());
9000
9001 VerifyReferrerAfterRedirect(
9002 URLRequest::CLEAR_REFERRER_ON_TRANSITION_CROSS_ORIGIN, referrer, GURL());
9003
9004 // The original referrer set on the request is expected to obey the referrer
9005 // policy and already be stripped to the origin; thus this test case just
9006 // checks that this policy doesn't cause the referrer to change when following
9007 // a redirect.
9008 VerifyReferrerAfterRedirect(
9009 URLRequest::ORIGIN_CLEAR_ON_TRANSITION_FROM_SECURE_TO_INSECURE,
9010 referrer.GetOrigin(), referrer.GetOrigin());
9011
9012 VerifyReferrerAfterRedirect(URLRequest::NO_REFERRER, GURL(), GURL());
8945 } 9013 }
8946 9014
8947 TEST_F(URLRequestTestReferrerPolicy, HTTPToHTTPS) { 9015 TEST_F(URLRequestTestReferrerPolicy, HTTPToHTTPS) {
8948 InstantiateCrossOriginServers(net::EmbeddedTestServer::TYPE_HTTP, 9016 InstantiateCrossOriginServers(net::EmbeddedTestServer::TYPE_HTTP,
8949 net::EmbeddedTestServer::TYPE_HTTPS); 9017 net::EmbeddedTestServer::TYPE_HTTPS);
8950 9018 GURL referrer = origin_server()->GetURL("/path/to/file.html");
8951 VerifyReferrerAfterRedirect( 9019
8952 URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE, 9020 VerifyReferrerAfterRedirect(
8953 origin_server()->GetURL("/path/to/file.html"), 9021 URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE,
8954 origin_server()->GetURL("/path/to/file.html")); 9022 referrer, referrer);
8955 9023
8956 VerifyReferrerAfterRedirect( 9024 VerifyReferrerAfterRedirect(
8957 URLRequest::REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN, 9025 URLRequest::REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN,
8958 origin_server()->GetURL("/path/to/file.html"), 9026 referrer, origin_server()->GetURL("/"));
9027
9028 VerifyReferrerAfterRedirect(
9029 URLRequest::ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN, referrer,
8959 origin_server()->GetURL("/")); 9030 origin_server()->GetURL("/"));
8960 9031
8961 VerifyReferrerAfterRedirect( 9032 VerifyReferrerAfterRedirect(URLRequest::NEVER_CLEAR_REFERRER, referrer,
8962 URLRequest::ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN, 9033 referrer);
8963 origin_server()->GetURL("/path/to/file.html"), 9034
8964 origin_server()->GetURL("/")); 9035 // The original referrer set on the request is expected to obey the referrer
8965 9036 // policy and already be stripped to the origin; thus this test case just
8966 VerifyReferrerAfterRedirect(URLRequest::NEVER_CLEAR_REFERRER, 9037 // checks that this policy doesn't cause the referrer to change when following
8967 origin_server()->GetURL("/path/to/file.html"), 9038 // a redirect.
8968 origin_server()->GetURL("/path/to/file.html")); 9039 VerifyReferrerAfterRedirect(URLRequest::ORIGIN, referrer.GetOrigin(),
9040 referrer.GetOrigin());
9041
9042 VerifyReferrerAfterRedirect(
9043 URLRequest::CLEAR_REFERRER_ON_TRANSITION_CROSS_ORIGIN, referrer, GURL());
9044
9045 // The original referrer set on the request is expected to obey the referrer
9046 // policy and already be stripped to the origin; thus this test case just
9047 // checks that this policy doesn't cause the referrer to change when following
9048 // a redirect.
9049 VerifyReferrerAfterRedirect(
9050 URLRequest::ORIGIN_CLEAR_ON_TRANSITION_FROM_SECURE_TO_INSECURE,
9051 referrer.GetOrigin(), referrer.GetOrigin());
9052
9053 VerifyReferrerAfterRedirect(URLRequest::NO_REFERRER, GURL(), GURL());
8969 } 9054 }
8970 9055
8971 TEST_F(URLRequestTestReferrerPolicy, HTTPSToHTTP) { 9056 TEST_F(URLRequestTestReferrerPolicy, HTTPSToHTTP) {
8972 InstantiateCrossOriginServers(net::EmbeddedTestServer::TYPE_HTTPS, 9057 InstantiateCrossOriginServers(net::EmbeddedTestServer::TYPE_HTTPS,
8973 net::EmbeddedTestServer::TYPE_HTTP); 9058 net::EmbeddedTestServer::TYPE_HTTP);
8974 9059 GURL referrer = origin_server()->GetURL("/path/to/file.html");
8975 VerifyReferrerAfterRedirect( 9060
8976 URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE, 9061 VerifyReferrerAfterRedirect(
8977 origin_server()->GetURL("/path/to/file.html"), GURL()); 9062 URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE,
8978 9063 referrer, GURL());
8979 VerifyReferrerAfterRedirect( 9064
8980 URLRequest::REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN, 9065 VerifyReferrerAfterRedirect(
8981 origin_server()->GetURL("/path/to/file.html"), GURL()); 9066 URLRequest::REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN,
8982 9067 referrer, GURL());
8983 VerifyReferrerAfterRedirect( 9068
8984 URLRequest::ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN, 9069 VerifyReferrerAfterRedirect(
8985 origin_server()->GetURL("/path/to/file.html"), 9070 URLRequest::ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN, referrer,
8986 origin_server()->GetURL("/")); 9071 origin_server()->GetURL("/"));
8987 9072
8988 VerifyReferrerAfterRedirect(URLRequest::NEVER_CLEAR_REFERRER, 9073 VerifyReferrerAfterRedirect(URLRequest::NEVER_CLEAR_REFERRER, referrer,
8989 origin_server()->GetURL("/path/to/file.html"), 9074 referrer);
8990 origin_server()->GetURL("/path/to/file.html")); 9075
9076 // The original referrer set on the request is expected to obey the referrer
9077 // policy and already be stripped to the origin; thus this test case just
9078 // checks that this policy doesn't cause the referrer to change when following
9079 // a redirect.
9080 VerifyReferrerAfterRedirect(URLRequest::ORIGIN, referrer.GetOrigin(),
9081 referrer.GetOrigin());
9082
9083 VerifyReferrerAfterRedirect(
9084 URLRequest::CLEAR_REFERRER_ON_TRANSITION_CROSS_ORIGIN, referrer, GURL());
9085
9086 // The original referrer set on the request is expected to obey the referrer
9087 // policy and already be stripped to the origin, though it should be
9088 // subsequently cleared during the downgrading redirect.
9089 VerifyReferrerAfterRedirect(
9090 URLRequest::ORIGIN_CLEAR_ON_TRANSITION_FROM_SECURE_TO_INSECURE,
9091 referrer.GetOrigin(), GURL());
9092
9093 VerifyReferrerAfterRedirect(URLRequest::NO_REFERRER, GURL(), GURL());
8991 } 9094 }
8992 9095
8993 class HTTPSRequestTest : public testing::Test { 9096 class HTTPSRequestTest : public testing::Test {
8994 public: 9097 public:
8995 HTTPSRequestTest() : default_context_(true) { 9098 HTTPSRequestTest() : default_context_(true) {
8996 default_context_.set_network_delegate(&default_network_delegate_); 9099 default_context_.set_network_delegate(&default_network_delegate_);
8997 default_context_.Init(); 9100 default_context_.Init();
8998 } 9101 }
8999 ~HTTPSRequestTest() override {} 9102 ~HTTPSRequestTest() override {}
9000 9103
(...skipping 2248 matching lines...) Expand 10 before | Expand all | Expand 10 after
11249 AddTestInterceptor()->set_main_intercept_job(std::move(job)); 11352 AddTestInterceptor()->set_main_intercept_job(std::move(job));
11250 11353
11251 req->Start(); 11354 req->Start();
11252 req->Cancel(); 11355 req->Cancel();
11253 base::RunLoop().RunUntilIdle(); 11356 base::RunLoop().RunUntilIdle();
11254 EXPECT_EQ(ERR_ABORTED, d.request_status()); 11357 EXPECT_EQ(ERR_ABORTED, d.request_status());
11255 EXPECT_EQ(0, d.received_redirect_count()); 11358 EXPECT_EQ(0, d.received_redirect_count());
11256 } 11359 }
11257 11360
11258 } // namespace net 11361 } // namespace net
OLDNEW
« no previous file with comments | « net/url_request/url_request_job_unittest.cc ('k') | third_party/WebKit/LayoutTests/TestExpectations » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698