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

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

Issue 2918313002: Implement new referrer policies (Closed)
Patch Set: rebase 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 GURL referrer = origin_server()->GetURL("/path/to/file.html");
8856 VerifyReferrerAfterRedirect( 8857 VerifyReferrerAfterRedirect(
8857 URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE, 8858 URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE,
8858 origin_server()->GetURL("/path/to/file.html"), 8859 referrer, referrer);
8859 origin_server()->GetURL("/path/to/file.html"));
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"));
8865 8864
8866 VerifyReferrerAfterRedirect( 8865 VerifyReferrerAfterRedirect(
8867 URLRequest::ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN, 8866 URLRequest::ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN, referrer, referrer);
8868 origin_server()->GetURL("/path/to/file.html"),
8869 origin_server()->GetURL("/path/to/file.html"));
8870 8867
8871 VerifyReferrerAfterRedirect(URLRequest::NEVER_CLEAR_REFERRER, 8868 VerifyReferrerAfterRedirect(URLRequest::NEVER_CLEAR_REFERRER, referrer,
8872 origin_server()->GetURL("/path/to/file.html"), 8869 referrer);
8873 origin_server()->GetURL("/path/to/file.html")); 8870
8871 VerifyReferrerAfterRedirect(URLRequest::ORIGIN, referrer.GetOrigin(),
mmenke 2017/06/07 21:04:03 first referrer.GetOrigin() -> referrer
estark 2017/06/08 18:42:58 Unintuitive as it is, this is actually intentional
8872 referrer.GetOrigin());
8873
8874 VerifyReferrerAfterRedirect(
8875 URLRequest::CLEAR_REFERRER_ON_TRANSITION_CROSS_ORIGIN, referrer,
8876 referrer);
8877
8878 VerifyReferrerAfterRedirect(
8879 URLRequest::ORIGIN_CLEAR_ON_TRANSITION_FROM_SECURE_TO_INSECURE,
8880 referrer.GetOrigin(), referrer.GetOrigin());
mmenke 2017/06/07 21:04:02 first referrer.GetOrigin() -> referrer
8881
8882 VerifyReferrerAfterRedirect(URLRequest::NO_REFERRER, GURL(), GURL());
8874 } 8883 }
8875 8884
8876 TEST_F(URLRequestTestReferrerPolicy, HTTPToCrossOriginHTTP) { 8885 TEST_F(URLRequestTestReferrerPolicy, HTTPToCrossOriginHTTP) {
8877 InstantiateCrossOriginServers(net::EmbeddedTestServer::TYPE_HTTP, 8886 InstantiateCrossOriginServers(net::EmbeddedTestServer::TYPE_HTTP,
8878 net::EmbeddedTestServer::TYPE_HTTP); 8887 net::EmbeddedTestServer::TYPE_HTTP);
8888 GURL referrer = origin_server()->GetURL("/path/to/file.html");
8879 8889
8880 VerifyReferrerAfterRedirect( 8890 VerifyReferrerAfterRedirect(
8881 URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE, 8891 URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE,
8882 origin_server()->GetURL("/path/to/file.html"), 8892 referrer, referrer);
8883 origin_server()->GetURL("/path/to/file.html"));
8884 8893
8885 VerifyReferrerAfterRedirect( 8894 VerifyReferrerAfterRedirect(
8886 URLRequest::REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN, 8895 URLRequest::REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN,
8887 origin_server()->GetURL("/path/to/file.html"), 8896 referrer, referrer.GetOrigin());
8888 origin_server()->GetURL("/"));
8889 8897
8890 VerifyReferrerAfterRedirect( 8898 VerifyReferrerAfterRedirect(
8891 URLRequest::ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN, 8899 URLRequest::ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN, referrer,
8892 origin_server()->GetURL("/path/to/file.html"), 8900 referrer.GetOrigin());
8893 origin_server()->GetURL("/"));
8894 8901
8895 VerifyReferrerAfterRedirect(URLRequest::NEVER_CLEAR_REFERRER, 8902 VerifyReferrerAfterRedirect(URLRequest::NEVER_CLEAR_REFERRER, referrer,
8896 origin_server()->GetURL("/path/to/file.html"), 8903 referrer);
8897 origin_server()->GetURL("/path/to/file.html")); 8904
8905 VerifyReferrerAfterRedirect(URLRequest::ORIGIN, referrer.GetOrigin(),
mmenke 2017/06/07 21:04:02 first referrer.GetOrigin() -> referrer
8906 referrer.GetOrigin());
8907
8908 VerifyReferrerAfterRedirect(
8909 URLRequest::CLEAR_REFERRER_ON_TRANSITION_CROSS_ORIGIN, referrer, GURL());
8910
8911 VerifyReferrerAfterRedirect(
8912 URLRequest::ORIGIN_CLEAR_ON_TRANSITION_FROM_SECURE_TO_INSECURE,
8913 referrer.GetOrigin(), referrer.GetOrigin());
mmenke 2017/06/07 21:04:03 first referrer.GetOrigin() -> referrer
8914
8915 VerifyReferrerAfterRedirect(URLRequest::NO_REFERRER, GURL(), GURL());
mmenke 2017/06/07 21:04:01 first GURL() -> referrer
8898 } 8916 }
8899 8917
8900 TEST_F(URLRequestTestReferrerPolicy, HTTPSToSameOriginHTTPS) { 8918 TEST_F(URLRequestTestReferrerPolicy, HTTPSToSameOriginHTTPS) {
8901 InstantiateSameOriginServers(net::EmbeddedTestServer::TYPE_HTTPS); 8919 InstantiateSameOriginServers(net::EmbeddedTestServer::TYPE_HTTPS);
8920 GURL referrer = origin_server()->GetURL("/path/to/file.html");
8902 8921
8903 VerifyReferrerAfterRedirect( 8922 VerifyReferrerAfterRedirect(
8904 URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE, 8923 URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE,
8905 origin_server()->GetURL("/path/to/file.html"), 8924 referrer, referrer);
8906 origin_server()->GetURL("/path/to/file.html"));
8907 8925
8908 VerifyReferrerAfterRedirect( 8926 VerifyReferrerAfterRedirect(
8909 URLRequest::REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN, 8927 URLRequest::REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN,
8910 origin_server()->GetURL("/path/to/file.html"), 8928 referrer, referrer);
8911 origin_server()->GetURL("/path/to/file.html"));
8912 8929
8913 VerifyReferrerAfterRedirect( 8930 VerifyReferrerAfterRedirect(
8914 URLRequest::ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN, 8931 URLRequest::ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN, referrer, referrer);
8915 origin_server()->GetURL("/path/to/file.html"),
8916 origin_server()->GetURL("/path/to/file.html"));
8917 8932
8918 VerifyReferrerAfterRedirect(URLRequest::NEVER_CLEAR_REFERRER, 8933 VerifyReferrerAfterRedirect(URLRequest::NEVER_CLEAR_REFERRER, referrer,
8919 origin_server()->GetURL("/path/to/file.html"), 8934 referrer);
8920 origin_server()->GetURL("/path/to/file.html")); 8935
8936 VerifyReferrerAfterRedirect(URLRequest::ORIGIN, referrer.GetOrigin(),
mmenke 2017/06/07 21:04:03 Please fix the rest of these, too.
8937 referrer.GetOrigin());
8938
8939 VerifyReferrerAfterRedirect(
8940 URLRequest::CLEAR_REFERRER_ON_TRANSITION_CROSS_ORIGIN, referrer,
8941 referrer);
8942
8943 VerifyReferrerAfterRedirect(
8944 URLRequest::ORIGIN_CLEAR_ON_TRANSITION_FROM_SECURE_TO_INSECURE,
8945 referrer.GetOrigin(), referrer.GetOrigin());
8946
8947 VerifyReferrerAfterRedirect(URLRequest::NO_REFERRER, GURL(), GURL());
8921 } 8948 }
8922 8949
8923 TEST_F(URLRequestTestReferrerPolicy, HTTPSToCrossOriginHTTPS) { 8950 TEST_F(URLRequestTestReferrerPolicy, HTTPSToCrossOriginHTTPS) {
8924 InstantiateCrossOriginServers(net::EmbeddedTestServer::TYPE_HTTPS, 8951 InstantiateCrossOriginServers(net::EmbeddedTestServer::TYPE_HTTPS,
8925 net::EmbeddedTestServer::TYPE_HTTPS); 8952 net::EmbeddedTestServer::TYPE_HTTPS);
8953 GURL referrer = origin_server()->GetURL("/path/to/file.html");
8926 8954
8927 VerifyReferrerAfterRedirect( 8955 VerifyReferrerAfterRedirect(
8928 URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE, 8956 URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE,
8929 origin_server()->GetURL("/path/to/file.html"), 8957 referrer, referrer);
8930 origin_server()->GetURL("/path/to/file.html"));
8931 8958
8932 VerifyReferrerAfterRedirect( 8959 VerifyReferrerAfterRedirect(
8933 URLRequest::REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN, 8960 URLRequest::REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN,
8934 origin_server()->GetURL("/path/to/file.html"), 8961 referrer, origin_server()->GetURL("/"));
8962
8963 VerifyReferrerAfterRedirect(
8964 URLRequest::ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN, referrer,
8935 origin_server()->GetURL("/")); 8965 origin_server()->GetURL("/"));
8936 8966
8967 VerifyReferrerAfterRedirect(URLRequest::NEVER_CLEAR_REFERRER, referrer,
8968 referrer);
8969
8970 VerifyReferrerAfterRedirect(URLRequest::ORIGIN, referrer.GetOrigin(),
8971 referrer.GetOrigin());
8972
8937 VerifyReferrerAfterRedirect( 8973 VerifyReferrerAfterRedirect(
8938 URLRequest::ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN, 8974 URLRequest::CLEAR_REFERRER_ON_TRANSITION_CROSS_ORIGIN, referrer, GURL());
8939 origin_server()->GetURL("/path/to/file.html"),
8940 origin_server()->GetURL("/"));
8941 8975
8942 VerifyReferrerAfterRedirect(URLRequest::NEVER_CLEAR_REFERRER, 8976 VerifyReferrerAfterRedirect(
8943 origin_server()->GetURL("/path/to/file.html"), 8977 URLRequest::ORIGIN_CLEAR_ON_TRANSITION_FROM_SECURE_TO_INSECURE,
8944 origin_server()->GetURL("/path/to/file.html")); 8978 referrer.GetOrigin(), referrer.GetOrigin());
8979
8980 VerifyReferrerAfterRedirect(URLRequest::NO_REFERRER, GURL(), GURL());
8945 } 8981 }
8946 8982
8947 TEST_F(URLRequestTestReferrerPolicy, HTTPToHTTPS) { 8983 TEST_F(URLRequestTestReferrerPolicy, HTTPToHTTPS) {
8948 InstantiateCrossOriginServers(net::EmbeddedTestServer::TYPE_HTTP, 8984 InstantiateCrossOriginServers(net::EmbeddedTestServer::TYPE_HTTP,
8949 net::EmbeddedTestServer::TYPE_HTTPS); 8985 net::EmbeddedTestServer::TYPE_HTTPS);
8986 GURL referrer = origin_server()->GetURL("/path/to/file.html");
8950 8987
8951 VerifyReferrerAfterRedirect( 8988 VerifyReferrerAfterRedirect(
8952 URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE, 8989 URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE,
8953 origin_server()->GetURL("/path/to/file.html"), 8990 referrer, referrer);
8954 origin_server()->GetURL("/path/to/file.html"));
8955 8991
8956 VerifyReferrerAfterRedirect( 8992 VerifyReferrerAfterRedirect(
8957 URLRequest::REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN, 8993 URLRequest::REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN,
8958 origin_server()->GetURL("/path/to/file.html"), 8994 referrer, origin_server()->GetURL("/"));
8995
8996 VerifyReferrerAfterRedirect(
8997 URLRequest::ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN, referrer,
8959 origin_server()->GetURL("/")); 8998 origin_server()->GetURL("/"));
8960 8999
9000 VerifyReferrerAfterRedirect(URLRequest::NEVER_CLEAR_REFERRER, referrer,
9001 referrer);
9002
9003 VerifyReferrerAfterRedirect(URLRequest::ORIGIN, referrer.GetOrigin(),
9004 referrer.GetOrigin());
9005
8961 VerifyReferrerAfterRedirect( 9006 VerifyReferrerAfterRedirect(
8962 URLRequest::ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN, 9007 URLRequest::CLEAR_REFERRER_ON_TRANSITION_CROSS_ORIGIN, referrer, GURL());
8963 origin_server()->GetURL("/path/to/file.html"),
8964 origin_server()->GetURL("/"));
8965 9008
8966 VerifyReferrerAfterRedirect(URLRequest::NEVER_CLEAR_REFERRER, 9009 VerifyReferrerAfterRedirect(
8967 origin_server()->GetURL("/path/to/file.html"), 9010 URLRequest::ORIGIN_CLEAR_ON_TRANSITION_FROM_SECURE_TO_INSECURE,
8968 origin_server()->GetURL("/path/to/file.html")); 9011 referrer.GetOrigin(), referrer.GetOrigin());
9012
9013 VerifyReferrerAfterRedirect(URLRequest::NO_REFERRER, GURL(), GURL());
8969 } 9014 }
8970 9015
8971 TEST_F(URLRequestTestReferrerPolicy, HTTPSToHTTP) { 9016 TEST_F(URLRequestTestReferrerPolicy, HTTPSToHTTP) {
8972 InstantiateCrossOriginServers(net::EmbeddedTestServer::TYPE_HTTPS, 9017 InstantiateCrossOriginServers(net::EmbeddedTestServer::TYPE_HTTPS,
8973 net::EmbeddedTestServer::TYPE_HTTP); 9018 net::EmbeddedTestServer::TYPE_HTTP);
9019 GURL referrer = origin_server()->GetURL("/path/to/file.html");
8974 9020
8975 VerifyReferrerAfterRedirect( 9021 VerifyReferrerAfterRedirect(
8976 URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE, 9022 URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE,
8977 origin_server()->GetURL("/path/to/file.html"), GURL()); 9023 referrer, GURL());
8978 9024
8979 VerifyReferrerAfterRedirect( 9025 VerifyReferrerAfterRedirect(
8980 URLRequest::REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN, 9026 URLRequest::REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN,
8981 origin_server()->GetURL("/path/to/file.html"), GURL()); 9027 referrer, GURL());
8982 9028
8983 VerifyReferrerAfterRedirect( 9029 VerifyReferrerAfterRedirect(
8984 URLRequest::ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN, 9030 URLRequest::ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN, referrer,
8985 origin_server()->GetURL("/path/to/file.html"),
8986 origin_server()->GetURL("/")); 9031 origin_server()->GetURL("/"));
8987 9032
8988 VerifyReferrerAfterRedirect(URLRequest::NEVER_CLEAR_REFERRER, 9033 VerifyReferrerAfterRedirect(URLRequest::NEVER_CLEAR_REFERRER, referrer,
8989 origin_server()->GetURL("/path/to/file.html"), 9034 referrer);
8990 origin_server()->GetURL("/path/to/file.html")); 9035
9036 VerifyReferrerAfterRedirect(URLRequest::ORIGIN, referrer.GetOrigin(),
9037 referrer.GetOrigin());
9038
9039 VerifyReferrerAfterRedirect(
9040 URLRequest::CLEAR_REFERRER_ON_TRANSITION_CROSS_ORIGIN, referrer, GURL());
9041
9042 VerifyReferrerAfterRedirect(
9043 URLRequest::ORIGIN_CLEAR_ON_TRANSITION_FROM_SECURE_TO_INSECURE,
9044 referrer.GetOrigin(), GURL());
9045
9046 VerifyReferrerAfterRedirect(URLRequest::NO_REFERRER, GURL(), GURL());
8991 } 9047 }
8992 9048
8993 class HTTPSRequestTest : public testing::Test { 9049 class HTTPSRequestTest : public testing::Test {
8994 public: 9050 public:
8995 HTTPSRequestTest() : default_context_(true) { 9051 HTTPSRequestTest() : default_context_(true) {
8996 default_context_.set_network_delegate(&default_network_delegate_); 9052 default_context_.set_network_delegate(&default_network_delegate_);
8997 default_context_.Init(); 9053 default_context_.Init();
8998 } 9054 }
8999 ~HTTPSRequestTest() override {} 9055 ~HTTPSRequestTest() override {}
9000 9056
(...skipping 2248 matching lines...) Expand 10 before | Expand all | Expand 10 after
11249 AddTestInterceptor()->set_main_intercept_job(std::move(job)); 11305 AddTestInterceptor()->set_main_intercept_job(std::move(job));
11250 11306
11251 req->Start(); 11307 req->Start();
11252 req->Cancel(); 11308 req->Cancel();
11253 base::RunLoop().RunUntilIdle(); 11309 base::RunLoop().RunUntilIdle();
11254 EXPECT_EQ(ERR_ABORTED, d.request_status()); 11310 EXPECT_EQ(ERR_ABORTED, d.request_status());
11255 EXPECT_EQ(0, d.received_redirect_count()); 11311 EXPECT_EQ(0, d.received_redirect_count());
11256 } 11312 }
11257 11313
11258 } // namespace net 11314 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698