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

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

Issue 2918313002: Implement new referrer policies (Closed)
Patch Set: ios fix 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 8819 matching lines...) Expand 10 before | Expand all | Expand 10 after
8830 EmbeddedTestServer* origin_server() const { return origin_server_.get(); } 8830 EmbeddedTestServer* origin_server() const { return origin_server_.get(); }
8831 8831
8832 private: 8832 private:
8833 std::unique_ptr<EmbeddedTestServer> origin_server_; 8833 std::unique_ptr<EmbeddedTestServer> origin_server_;
8834 std::unique_ptr<EmbeddedTestServer> destination_server_; 8834 std::unique_ptr<EmbeddedTestServer> destination_server_;
8835 }; 8835 };
8836 8836
8837 TEST_F(URLRequestTestReferrerPolicy, HTTPToSameOriginHTTP) { 8837 TEST_F(URLRequestTestReferrerPolicy, HTTPToSameOriginHTTP) {
8838 InstantiateSameOriginServers(net::EmbeddedTestServer::TYPE_HTTP); 8838 InstantiateSameOriginServers(net::EmbeddedTestServer::TYPE_HTTP);
8839 8839
8840 GURL referrer = origin_server()->GetURL("/path/to/file.html");
8840 VerifyReferrerAfterRedirect( 8841 VerifyReferrerAfterRedirect(
8841 URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE, 8842 URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE,
8842 origin_server()->GetURL("/path/to/file.html"), 8843 referrer, referrer);
8843 origin_server()->GetURL("/path/to/file.html"));
8844 8844
8845 VerifyReferrerAfterRedirect( 8845 VerifyReferrerAfterRedirect(
8846 URLRequest::REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN, 8846 URLRequest::REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN,
8847 origin_server()->GetURL("/path/to/file.html"), 8847 referrer, referrer);
8848 origin_server()->GetURL("/path/to/file.html"));
8849 8848
8850 VerifyReferrerAfterRedirect( 8849 VerifyReferrerAfterRedirect(
8851 URLRequest::ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN, 8850 URLRequest::ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN, referrer, referrer);
8852 origin_server()->GetURL("/path/to/file.html"),
8853 origin_server()->GetURL("/path/to/file.html"));
8854 8851
8855 VerifyReferrerAfterRedirect(URLRequest::NEVER_CLEAR_REFERRER, 8852 VerifyReferrerAfterRedirect(URLRequest::NEVER_CLEAR_REFERRER, referrer,
8856 origin_server()->GetURL("/path/to/file.html"), 8853 referrer);
8857 origin_server()->GetURL("/path/to/file.html")); 8854
8855 VerifyReferrerAfterRedirect(URLRequest::ORIGIN, referrer.GetOrigin(),
8856 referrer.GetOrigin());
8857
8858 VerifyReferrerAfterRedirect(
8859 URLRequest::CLEAR_REFERRER_ON_TRANSITION_CROSS_ORIGIN, referrer,
8860 referrer);
8861
8862 VerifyReferrerAfterRedirect(
8863 URLRequest::ORIGIN_CLEAR_ON_TRANSITION_FROM_SECURE_TO_INSECURE,
8864 referrer.GetOrigin(), referrer.GetOrigin());
8865
8866 VerifyReferrerAfterRedirect(URLRequest::NO_REFERRER, GURL(), GURL());
8858 } 8867 }
8859 8868
8860 TEST_F(URLRequestTestReferrerPolicy, HTTPToCrossOriginHTTP) { 8869 TEST_F(URLRequestTestReferrerPolicy, HTTPToCrossOriginHTTP) {
8861 InstantiateCrossOriginServers(net::EmbeddedTestServer::TYPE_HTTP, 8870 InstantiateCrossOriginServers(net::EmbeddedTestServer::TYPE_HTTP,
8862 net::EmbeddedTestServer::TYPE_HTTP); 8871 net::EmbeddedTestServer::TYPE_HTTP);
8872 GURL referrer = origin_server()->GetURL("/path/to/file.html");
8863 8873
8864 VerifyReferrerAfterRedirect( 8874 VerifyReferrerAfterRedirect(
8865 URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE, 8875 URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE,
8866 origin_server()->GetURL("/path/to/file.html"), 8876 referrer, referrer);
8867 origin_server()->GetURL("/path/to/file.html"));
8868 8877
8869 VerifyReferrerAfterRedirect( 8878 VerifyReferrerAfterRedirect(
8870 URLRequest::REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN, 8879 URLRequest::REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN,
8871 origin_server()->GetURL("/path/to/file.html"), 8880 referrer, referrer.GetOrigin());
8872 origin_server()->GetURL("/"));
8873 8881
8874 VerifyReferrerAfterRedirect( 8882 VerifyReferrerAfterRedirect(
8875 URLRequest::ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN, 8883 URLRequest::ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN, referrer,
8876 origin_server()->GetURL("/path/to/file.html"), 8884 referrer.GetOrigin());
8877 origin_server()->GetURL("/"));
8878 8885
8879 VerifyReferrerAfterRedirect(URLRequest::NEVER_CLEAR_REFERRER, 8886 VerifyReferrerAfterRedirect(URLRequest::NEVER_CLEAR_REFERRER, referrer,
8880 origin_server()->GetURL("/path/to/file.html"), 8887 referrer);
8881 origin_server()->GetURL("/path/to/file.html")); 8888
8889 VerifyReferrerAfterRedirect(URLRequest::ORIGIN, referrer.GetOrigin(),
8890 referrer.GetOrigin());
8891
8892 VerifyReferrerAfterRedirect(
8893 URLRequest::CLEAR_REFERRER_ON_TRANSITION_CROSS_ORIGIN, referrer, GURL());
8894
8895 VerifyReferrerAfterRedirect(
8896 URLRequest::ORIGIN_CLEAR_ON_TRANSITION_FROM_SECURE_TO_INSECURE,
8897 referrer.GetOrigin(), referrer.GetOrigin());
8898
8899 VerifyReferrerAfterRedirect(URLRequest::NO_REFERRER, GURL(), GURL());
8882 } 8900 }
8883 8901
8884 TEST_F(URLRequestTestReferrerPolicy, HTTPSToSameOriginHTTPS) { 8902 TEST_F(URLRequestTestReferrerPolicy, HTTPSToSameOriginHTTPS) {
8885 InstantiateSameOriginServers(net::EmbeddedTestServer::TYPE_HTTPS); 8903 InstantiateSameOriginServers(net::EmbeddedTestServer::TYPE_HTTPS);
8904 GURL referrer = origin_server()->GetURL("/path/to/file.html");
8886 8905
8887 VerifyReferrerAfterRedirect( 8906 VerifyReferrerAfterRedirect(
8888 URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE, 8907 URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE,
8889 origin_server()->GetURL("/path/to/file.html"), 8908 referrer, referrer);
8890 origin_server()->GetURL("/path/to/file.html"));
8891 8909
8892 VerifyReferrerAfterRedirect( 8910 VerifyReferrerAfterRedirect(
8893 URLRequest::REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN, 8911 URLRequest::REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN,
8894 origin_server()->GetURL("/path/to/file.html"), 8912 referrer, referrer);
8895 origin_server()->GetURL("/path/to/file.html"));
8896 8913
8897 VerifyReferrerAfterRedirect( 8914 VerifyReferrerAfterRedirect(
8898 URLRequest::ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN, 8915 URLRequest::ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN, referrer, referrer);
8899 origin_server()->GetURL("/path/to/file.html"),
8900 origin_server()->GetURL("/path/to/file.html"));
8901 8916
8902 VerifyReferrerAfterRedirect(URLRequest::NEVER_CLEAR_REFERRER, 8917 VerifyReferrerAfterRedirect(URLRequest::NEVER_CLEAR_REFERRER, referrer,
8903 origin_server()->GetURL("/path/to/file.html"), 8918 referrer);
8904 origin_server()->GetURL("/path/to/file.html")); 8919
8920 VerifyReferrerAfterRedirect(URLRequest::ORIGIN, referrer.GetOrigin(),
8921 referrer.GetOrigin());
8922
8923 VerifyReferrerAfterRedirect(
8924 URLRequest::CLEAR_REFERRER_ON_TRANSITION_CROSS_ORIGIN, referrer,
8925 referrer);
8926
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());
8905 } 8932 }
8906 8933
8907 TEST_F(URLRequestTestReferrerPolicy, HTTPSToCrossOriginHTTPS) { 8934 TEST_F(URLRequestTestReferrerPolicy, HTTPSToCrossOriginHTTPS) {
8908 InstantiateCrossOriginServers(net::EmbeddedTestServer::TYPE_HTTPS, 8935 InstantiateCrossOriginServers(net::EmbeddedTestServer::TYPE_HTTPS,
8909 net::EmbeddedTestServer::TYPE_HTTPS); 8936 net::EmbeddedTestServer::TYPE_HTTPS);
8937 GURL referrer = origin_server()->GetURL("/path/to/file.html");
8910 8938
8911 VerifyReferrerAfterRedirect( 8939 VerifyReferrerAfterRedirect(
8912 URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE, 8940 URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE,
8913 origin_server()->GetURL("/path/to/file.html"), 8941 referrer, referrer);
8914 origin_server()->GetURL("/path/to/file.html"));
8915 8942
8916 VerifyReferrerAfterRedirect( 8943 VerifyReferrerAfterRedirect(
8917 URLRequest::REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN, 8944 URLRequest::REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN,
8918 origin_server()->GetURL("/path/to/file.html"), 8945 referrer, origin_server()->GetURL("/"));
8946
8947 VerifyReferrerAfterRedirect(
8948 URLRequest::ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN, referrer,
8919 origin_server()->GetURL("/")); 8949 origin_server()->GetURL("/"));
8920 8950
8951 VerifyReferrerAfterRedirect(URLRequest::NEVER_CLEAR_REFERRER, referrer,
8952 referrer);
8953
8954 VerifyReferrerAfterRedirect(URLRequest::ORIGIN, referrer.GetOrigin(),
8955 referrer.GetOrigin());
8956
8921 VerifyReferrerAfterRedirect( 8957 VerifyReferrerAfterRedirect(
8922 URLRequest::ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN, 8958 URLRequest::CLEAR_REFERRER_ON_TRANSITION_CROSS_ORIGIN, referrer, GURL());
8923 origin_server()->GetURL("/path/to/file.html"),
8924 origin_server()->GetURL("/"));
8925 8959
8926 VerifyReferrerAfterRedirect(URLRequest::NEVER_CLEAR_REFERRER, 8960 VerifyReferrerAfterRedirect(
8927 origin_server()->GetURL("/path/to/file.html"), 8961 URLRequest::ORIGIN_CLEAR_ON_TRANSITION_FROM_SECURE_TO_INSECURE,
8928 origin_server()->GetURL("/path/to/file.html")); 8962 referrer.GetOrigin(), referrer.GetOrigin());
8963
8964 VerifyReferrerAfterRedirect(URLRequest::NO_REFERRER, GURL(), GURL());
8929 } 8965 }
8930 8966
8931 TEST_F(URLRequestTestReferrerPolicy, HTTPToHTTPS) { 8967 TEST_F(URLRequestTestReferrerPolicy, HTTPToHTTPS) {
8932 InstantiateCrossOriginServers(net::EmbeddedTestServer::TYPE_HTTP, 8968 InstantiateCrossOriginServers(net::EmbeddedTestServer::TYPE_HTTP,
8933 net::EmbeddedTestServer::TYPE_HTTPS); 8969 net::EmbeddedTestServer::TYPE_HTTPS);
8970 GURL referrer = origin_server()->GetURL("/path/to/file.html");
8934 8971
8935 VerifyReferrerAfterRedirect( 8972 VerifyReferrerAfterRedirect(
8936 URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE, 8973 URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE,
8937 origin_server()->GetURL("/path/to/file.html"), 8974 referrer, referrer);
8938 origin_server()->GetURL("/path/to/file.html"));
8939 8975
8940 VerifyReferrerAfterRedirect( 8976 VerifyReferrerAfterRedirect(
8941 URLRequest::REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN, 8977 URLRequest::REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN,
8942 origin_server()->GetURL("/path/to/file.html"), 8978 referrer, origin_server()->GetURL("/"));
8979
8980 VerifyReferrerAfterRedirect(
8981 URLRequest::ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN, referrer,
8943 origin_server()->GetURL("/")); 8982 origin_server()->GetURL("/"));
8944 8983
8984 VerifyReferrerAfterRedirect(URLRequest::NEVER_CLEAR_REFERRER, referrer,
8985 referrer);
8986
8987 VerifyReferrerAfterRedirect(URLRequest::ORIGIN, referrer.GetOrigin(),
8988 referrer.GetOrigin());
8989
8945 VerifyReferrerAfterRedirect( 8990 VerifyReferrerAfterRedirect(
8946 URLRequest::ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN, 8991 URLRequest::CLEAR_REFERRER_ON_TRANSITION_CROSS_ORIGIN, referrer, GURL());
8947 origin_server()->GetURL("/path/to/file.html"),
8948 origin_server()->GetURL("/"));
8949 8992
8950 VerifyReferrerAfterRedirect(URLRequest::NEVER_CLEAR_REFERRER, 8993 VerifyReferrerAfterRedirect(
8951 origin_server()->GetURL("/path/to/file.html"), 8994 URLRequest::ORIGIN_CLEAR_ON_TRANSITION_FROM_SECURE_TO_INSECURE,
8952 origin_server()->GetURL("/path/to/file.html")); 8995 referrer.GetOrigin(), referrer.GetOrigin());
8996
8997 VerifyReferrerAfterRedirect(URLRequest::NO_REFERRER, GURL(), GURL());
8953 } 8998 }
8954 8999
8955 TEST_F(URLRequestTestReferrerPolicy, HTTPSToHTTP) { 9000 TEST_F(URLRequestTestReferrerPolicy, HTTPSToHTTP) {
8956 InstantiateCrossOriginServers(net::EmbeddedTestServer::TYPE_HTTPS, 9001 InstantiateCrossOriginServers(net::EmbeddedTestServer::TYPE_HTTPS,
8957 net::EmbeddedTestServer::TYPE_HTTP); 9002 net::EmbeddedTestServer::TYPE_HTTP);
9003 GURL referrer = origin_server()->GetURL("/path/to/file.html");
8958 9004
8959 VerifyReferrerAfterRedirect( 9005 VerifyReferrerAfterRedirect(
8960 URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE, 9006 URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE,
8961 origin_server()->GetURL("/path/to/file.html"), GURL()); 9007 referrer, GURL());
8962 9008
8963 VerifyReferrerAfterRedirect( 9009 VerifyReferrerAfterRedirect(
8964 URLRequest::REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN, 9010 URLRequest::REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN,
8965 origin_server()->GetURL("/path/to/file.html"), GURL()); 9011 referrer, GURL());
8966 9012
8967 VerifyReferrerAfterRedirect( 9013 VerifyReferrerAfterRedirect(
8968 URLRequest::ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN, 9014 URLRequest::ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN, referrer,
8969 origin_server()->GetURL("/path/to/file.html"),
8970 origin_server()->GetURL("/")); 9015 origin_server()->GetURL("/"));
8971 9016
8972 VerifyReferrerAfterRedirect(URLRequest::NEVER_CLEAR_REFERRER, 9017 VerifyReferrerAfterRedirect(URLRequest::NEVER_CLEAR_REFERRER, referrer,
8973 origin_server()->GetURL("/path/to/file.html"), 9018 referrer);
8974 origin_server()->GetURL("/path/to/file.html")); 9019
9020 VerifyReferrerAfterRedirect(URLRequest::ORIGIN, referrer.GetOrigin(),
9021 referrer.GetOrigin());
9022
9023 VerifyReferrerAfterRedirect(
9024 URLRequest::CLEAR_REFERRER_ON_TRANSITION_CROSS_ORIGIN, referrer, GURL());
9025
9026 VerifyReferrerAfterRedirect(
9027 URLRequest::ORIGIN_CLEAR_ON_TRANSITION_FROM_SECURE_TO_INSECURE,
9028 referrer.GetOrigin(), GURL());
9029
9030 VerifyReferrerAfterRedirect(URLRequest::NO_REFERRER, GURL(), GURL());
8975 } 9031 }
8976 9032
8977 class HTTPSRequestTest : public testing::Test { 9033 class HTTPSRequestTest : public testing::Test {
8978 public: 9034 public:
8979 HTTPSRequestTest() : default_context_(true) { 9035 HTTPSRequestTest() : default_context_(true) {
8980 default_context_.set_network_delegate(&default_network_delegate_); 9036 default_context_.set_network_delegate(&default_network_delegate_);
8981 default_context_.Init(); 9037 default_context_.Init();
8982 } 9038 }
8983 ~HTTPSRequestTest() override {} 9039 ~HTTPSRequestTest() override {}
8984 9040
(...skipping 2248 matching lines...) Expand 10 before | Expand all | Expand 10 after
11233 AddTestInterceptor()->set_main_intercept_job(std::move(job)); 11289 AddTestInterceptor()->set_main_intercept_job(std::move(job));
11234 11290
11235 req->Start(); 11291 req->Start();
11236 req->Cancel(); 11292 req->Cancel();
11237 base::RunLoop().RunUntilIdle(); 11293 base::RunLoop().RunUntilIdle();
11238 EXPECT_EQ(ERR_ABORTED, d.request_status()); 11294 EXPECT_EQ(ERR_ABORTED, d.request_status());
11239 EXPECT_EQ(0, d.received_redirect_count()); 11295 EXPECT_EQ(0, d.received_redirect_count());
11240 } 11296 }
11241 11297
11242 } // namespace net 11298 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698