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

Side by Side Diff: components/sessions/ios/ios_serialized_navigation_driver.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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "components/sessions/ios/ios_serialized_navigation_driver.h" 5 #include "components/sessions/ios/ios_serialized_navigation_driver.h"
6 6
7 #include "base/memory/singleton.h" 7 #include "base/memory/singleton.h"
8 #include "components/sessions/core/serialized_navigation_entry.h" 8 #include "components/sessions/core/serialized_navigation_entry.h"
9 #include "ios/web/public/referrer.h" 9 #include "ios/web/public/referrer.h"
10 #include "ios/web/public/referrer_util.h"
10 11
11 namespace sessions { 12 namespace sessions {
12 13
13 namespace { 14 namespace {
14 const int kObsoleteReferrerPolicyAlways = 0; 15 const int kObsoleteReferrerPolicyAlways = 0;
15 const int kObsoleteReferrerPolicyDefault = 1; 16 const int kObsoleteReferrerPolicyDefault = 1;
16 const int kObsoleteReferrerPolicyNever = 2; 17 const int kObsoleteReferrerPolicyNever = 2;
17 const int kObsoleteReferrerPolicyOrigin = 3; 18 const int kObsoleteReferrerPolicyOrigin = 3;
18 } // namespace 19 } // namespace
19 20
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
92 static_cast<web::ReferrerPolicy>(navigation->referrer_policy_)); 93 static_cast<web::ReferrerPolicy>(navigation->referrer_policy_));
93 94
94 if (!navigation->virtual_url_.SchemeIsHTTPOrHTTPS() || 95 if (!navigation->virtual_url_.SchemeIsHTTPOrHTTPS() ||
95 !referrer.url.SchemeIsHTTPOrHTTPS()) { 96 !referrer.url.SchemeIsHTTPOrHTTPS()) {
96 referrer.url = GURL(); 97 referrer.url = GURL();
97 } else { 98 } else {
98 if (referrer.policy < 0 || referrer.policy > web::ReferrerPolicyLast) { 99 if (referrer.policy < 0 || referrer.policy > web::ReferrerPolicyLast) {
99 NOTREACHED(); 100 NOTREACHED();
100 referrer.policy = web::ReferrerPolicyNever; 101 referrer.policy = web::ReferrerPolicyNever;
101 } 102 }
102 bool is_downgrade = referrer.url.SchemeIsCryptographic() && 103 referrer.url = GURL(
103 !navigation->virtual_url_.SchemeIsCryptographic(); 104 ReferrerHeaderValueForNavigation(navigation->virtual_url_, referrer));
104 switch (referrer.policy) {
105 case web::ReferrerPolicyDefault:
106 if (is_downgrade)
107 referrer.url = GURL();
108 break;
109 case web::ReferrerPolicyNoReferrerWhenDowngrade:
110 if (is_downgrade)
111 referrer.url = GURL();
112 case web::ReferrerPolicyAlways:
113 break;
114 case web::ReferrerPolicyNever:
115 referrer.url = GURL();
116 break;
117 case web::ReferrerPolicyOrigin:
118 referrer.url = referrer.url.GetOrigin();
119 break;
120 case web::ReferrerPolicyOriginWhenCrossOrigin:
121 if (navigation->virtual_url_.GetOrigin() != referrer.url.GetOrigin())
122 referrer.url = referrer.url.GetOrigin();
123 break;
124 }
125 } 105 }
126 106
127 // Reset the referrer if it has changed. 107 // Reset the referrer if it has changed.
128 if (navigation->referrer_url_ != referrer.url) { 108 if (navigation->referrer_url_ != referrer.url) {
129 navigation->referrer_url_ = GURL(); 109 navigation->referrer_url_ = GURL();
130 navigation->referrer_policy_ = GetDefaultReferrerPolicy(); 110 navigation->referrer_policy_ = GetDefaultReferrerPolicy();
131 } 111 }
132 } 112 }
133 113
134 std::string IOSSerializedNavigationDriver::StripReferrerFromPageState( 114 std::string IOSSerializedNavigationDriver::StripReferrerFromPageState(
135 const std::string& page_state) const { 115 const std::string& page_state) const {
136 return std::string(); 116 return std::string();
137 } 117 }
138 118
139 } // namespace sessions 119 } // namespace sessions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698