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

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

Issue 714813003: Referrer Policy: Add new policies to URLRequest. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: I hate compilers. Created 6 years, 1 month 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 "net/url_request/url_request_job.h" 5 #include "net/url_request/url_request_job.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/compiler_specific.h" 8 #include "base/compiler_specific.h"
9 #include "base/message_loop/message_loop.h" 9 #include "base/message_loop/message_loop.h"
10 #include "base/power_monitor/power_monitor.h" 10 #include "base/power_monitor/power_monitor.h"
(...skipping 810 matching lines...) Expand 10 before | Expand all | Expand 10 after
821 network_delegate_->NotifyRawBytesRead(*request_, bytes_read); 821 network_delegate_->NotifyRawBytesRead(*request_, bytes_read);
822 } 822 }
823 823
824 bool URLRequestJob::FilterHasData() { 824 bool URLRequestJob::FilterHasData() {
825 return filter_.get() && filter_->stream_data_len(); 825 return filter_.get() && filter_->stream_data_len();
826 } 826 }
827 827
828 void URLRequestJob::UpdatePacketReadTimes() { 828 void URLRequestJob::UpdatePacketReadTimes() {
829 } 829 }
830 830
831 // Static.
mmenke 2014/11/20 16:23:45 nit: Think "// static" is more common (No period
Mike West 2014/11/21 09:29:29 Done.
832 GURL URLRequestJob::ComputeReferrerForRedirect(
833 const URLRequest& request,
834 const GURL& redirect_destination) {
mmenke 2014/11/20 16:23:45 Definition order should match declaration order.
Mike West 2014/11/21 09:29:29 Done.
835 GURL original_referrer(request.referrer());
836 bool secure_referrer_but_insecure_destination =
837 original_referrer.SchemeIsSecure() &&
838 !redirect_destination.SchemeIsSecure();
839 bool same_origin =
840 original_referrer.GetOrigin() == redirect_destination.GetOrigin();
841 switch (request.referrer_policy()) {
842 case URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE:
843 return secure_referrer_but_insecure_destination ? GURL()
844 : original_referrer;
845
846 case URLRequest::REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN:
847 if (same_origin)
848 return original_referrer;
849 else if (secure_referrer_but_insecure_destination)
850 return GURL();
851 else
852 return original_referrer.GetOrigin();
mmenke 2014/11/20 16:23:45 optional: Think using braces in else/ifs is a lit
Mike West 2014/11/21 09:29:29 Done.
853
854 case URLRequest::ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN:
855 return same_origin ? original_referrer : original_referrer.GetOrigin();
856
857 case URLRequest::NEVER_CLEAR_REFERRER:
858 return original_referrer;
859 }
860
861 NOTREACHED();
862 return GURL();
863 }
864
831 RedirectInfo URLRequestJob::ComputeRedirectInfo(const GURL& location, 865 RedirectInfo URLRequestJob::ComputeRedirectInfo(const GURL& location,
832 int http_status_code) { 866 int http_status_code) {
833 const GURL& url = request_->url(); 867 const GURL& url = request_->url();
834 868
835 RedirectInfo redirect_info; 869 RedirectInfo redirect_info;
836 870
837 redirect_info.status_code = http_status_code; 871 redirect_info.status_code = http_status_code;
838 872
839 // The request method may change, depending on the status code. 873 // The request method may change, depending on the status code.
840 redirect_info.new_method = URLRequest::ComputeMethodForRedirect( 874 redirect_info.new_method = URLRequest::ComputeMethodForRedirect(
(...skipping 15 matching lines...) Expand all
856 890
857 // Update the first-party URL if appropriate. 891 // Update the first-party URL if appropriate.
858 if (request_->first_party_url_policy() == 892 if (request_->first_party_url_policy() ==
859 URLRequest::UPDATE_FIRST_PARTY_URL_ON_REDIRECT) { 893 URLRequest::UPDATE_FIRST_PARTY_URL_ON_REDIRECT) {
860 redirect_info.new_first_party_for_cookies = redirect_info.new_url; 894 redirect_info.new_first_party_for_cookies = redirect_info.new_url;
861 } else { 895 } else {
862 redirect_info.new_first_party_for_cookies = 896 redirect_info.new_first_party_for_cookies =
863 request_->first_party_for_cookies(); 897 request_->first_party_for_cookies();
864 } 898 }
865 899
866 // Suppress the referrer if we're redirecting out of https. 900 // Alter the referrer if we're redirecting out of https or cross-origin.
mmenke 2014/11/20 16:23:45 nit: --we're
Mike West 2014/11/21 09:29:29 Done.
867 if (request_->referrer_policy() == 901 redirect_info.new_referrer =
868 URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE && 902 ComputeReferrerForRedirect(*request_, redirect_info.new_url).spec();
869 GURL(request_->referrer()).SchemeIsSecure() &&
870 !redirect_info.new_url.SchemeIsSecure()) {
871 redirect_info.new_referrer.clear();
872 } else {
873 redirect_info.new_referrer = request_->referrer();
874 }
875 903
876 return redirect_info; 904 return redirect_info;
877 } 905 }
878 906
879 } // namespace net 907 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698