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

Side by Side Diff: ios/web/net/request_tracker_impl.mm

Issue 1136643004: Switch remaining functions from SchemeIsSecure() to SchemeIsCryptographic(). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebasing. Created 5 years, 7 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
« no previous file with comments | « google_apis/gaia/gaia_auth_util.cc ('k') | ios/web/net/request_tracker_impl_unittest.mm » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "ios/web/net/request_tracker_impl.h" 5 #include "ios/web/net/request_tracker_impl.h"
6 6
7 #include <pthread.h> 7 #include <pthread.h>
8 8
9 #include "base/containers/hash_tables.h" 9 #include "base/containers/hash_tables.h"
10 #include "base/location.h" 10 #include "base/location.h"
(...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after
281 // TODO(noyau): In iOS there is no notion of resource type. The insecure 281 // TODO(noyau): In iOS there is no notion of resource type. The insecure
282 // content could be an image (DISPLAYED_INSECURE_CONTENT) or a script 282 // content could be an image (DISPLAYED_INSECURE_CONTENT) or a script
283 // (RAN_INSECURE_CONTENT). The status of the page is different for both, but 283 // (RAN_INSECURE_CONTENT). The status of the page is different for both, but
284 // there is not enough information from UIWebView to differentiate the two 284 // there is not enough information from UIWebView to differentiate the two
285 // cases. 285 // cases.
286 status_.content_status = web::SSLStatus::DISPLAYED_INSECURE_CONTENT; 286 status_.content_status = web::SSLStatus::DISPLAYED_INSECURE_CONTENT;
287 } else { 287 } else {
288 status_.content_status = web::SSLStatus::NORMAL_CONTENT; 288 status_.content_status = web::SSLStatus::NORMAL_CONTENT;
289 } 289 }
290 290
291 if (!url_.SchemeIsSecure()) { 291 if (!url_.SchemeIsCryptographic()) {
292 // Should not happen as the sslInfo is valid. 292 // Should not happen as the sslInfo is valid.
293 NOTREACHED(); 293 NOTREACHED();
294 status_.security_style = web::SECURITY_STYLE_UNAUTHENTICATED; 294 status_.security_style = web::SECURITY_STYLE_UNAUTHENTICATED;
295 } else if (net::IsCertStatusError(status_.cert_status) && 295 } else if (net::IsCertStatusError(status_.cert_status) &&
296 !net::IsCertStatusMinorError(status_.cert_status)) { 296 !net::IsCertStatusMinorError(status_.cert_status)) {
297 // Minor errors don't lower the security style to 297 // Minor errors don't lower the security style to
298 // SECURITY_STYLE_AUTHENTICATION_BROKEN. 298 // SECURITY_STYLE_AUTHENTICATION_BROKEN.
299 status_.security_style = web::SECURITY_STYLE_AUTHENTICATION_BROKEN; 299 status_.security_style = web::SECURITY_STYLE_AUTHENTICATION_BROKEN;
300 } else { 300 } else {
301 // This page is secure. 301 // This page is secure.
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
488 // calculation. 488 // calculation.
489 counts_by_request_.clear(); 489 counts_by_request_.clear();
490 estimate_start_index_ = counts_.size(); 490 estimate_start_index_ = counts_.size();
491 new_estimate_round_ = false; 491 new_estimate_round_ = false;
492 } 492 }
493 const GURL& url = request->original_url(); 493 const GURL& url = request->original_url();
494 TrackerCounts* counts = new TrackerCounts( 494 TrackerCounts* counts = new TrackerCounts(
495 GURLByRemovingRefFromGURL(url), request); 495 GURLByRemovingRefFromGURL(url), request);
496 counts_.push_back(counts); 496 counts_.push_back(counts);
497 counts_by_request_[request] = counts; 497 counts_by_request_[request] = counts;
498 if (page_url_.SchemeIsSecure() && !url.SchemeIsSecure()) 498 if (page_url_.SchemeIsCryptographic() && !url.SchemeIsCryptographic())
499 has_mixed_content_ = true; 499 has_mixed_content_ = true;
500 Notify(); 500 Notify();
501 } 501 }
502 502
503 void RequestTrackerImpl::CaptureHeaders(net::URLRequest* request) { 503 void RequestTrackerImpl::CaptureHeaders(net::URLRequest* request) {
504 DCHECK_CURRENTLY_ON_WEB_THREAD(web::WebThread::IO); 504 DCHECK_CURRENTLY_ON_WEB_THREAD(web::WebThread::IO);
505 if (is_closing_) 505 if (is_closing_)
506 return; 506 return;
507 507
508 if (!request->response_headers()) 508 if (!request->response_headers())
(...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after
804 } 804 }
805 805
806 void RequestTrackerImpl::SSLNotify() { 806 void RequestTrackerImpl::SSLNotify() {
807 DCHECK_CURRENTLY_ON_WEB_THREAD(web::WebThread::IO); 807 DCHECK_CURRENTLY_ON_WEB_THREAD(web::WebThread::IO);
808 if (is_closing_) 808 if (is_closing_)
809 return; 809 return;
810 810
811 if (!counts_.size()) 811 if (!counts_.size())
812 return; // Nothing yet to notify. 812 return; // Nothing yet to notify.
813 813
814 if (!page_url_.SchemeIsSecure()) 814 if (!page_url_.SchemeIsCryptographic())
815 return; 815 return;
816 816
817 const GURL page_origin = page_url_.GetOrigin(); 817 const GURL page_origin = page_url_.GetOrigin();
818 ScopedVector<TrackerCounts>::iterator it; 818 ScopedVector<TrackerCounts>::iterator it;
819 for (it = counts_.begin(); it != counts_.end(); ++it) { 819 for (it = counts_.begin(); it != counts_.end(); ++it) {
820 if (!(*it)->ssl_info.is_valid()) 820 if (!(*it)->ssl_info.is_valid())
821 continue; // No SSL info at this point in time on this tracker. 821 continue; // No SSL info at this point in time on this tracker.
822 822
823 GURL request_origin = (*it)->url.GetOrigin(); 823 GURL request_origin = (*it)->url.GetOrigin();
824 if (request_origin != page_origin) 824 if (request_origin != page_origin)
(...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after
1096 previous_estimate_ += maxBump; 1096 previous_estimate_ += maxBump;
1097 } 1097 }
1098 1098
1099 return previous_estimate_; 1099 return previous_estimate_;
1100 } 1100 }
1101 1101
1102 void RequestTrackerImpl::RecomputeMixedContent( 1102 void RequestTrackerImpl::RecomputeMixedContent(
1103 const TrackerCounts* split_position) { 1103 const TrackerCounts* split_position) {
1104 DCHECK_CURRENTLY_ON_WEB_THREAD(web::WebThread::IO); 1104 DCHECK_CURRENTLY_ON_WEB_THREAD(web::WebThread::IO);
1105 // Check if the mixed content before trimming was correct. 1105 // Check if the mixed content before trimming was correct.
1106 if (page_url_.SchemeIsSecure() && has_mixed_content_) { 1106 if (page_url_.SchemeIsCryptographic() && has_mixed_content_) {
1107 bool old_url_has_mixed_content = false; 1107 bool old_url_has_mixed_content = false;
1108 const GURL origin = page_url_.GetOrigin(); 1108 const GURL origin = page_url_.GetOrigin();
1109 ScopedVector<TrackerCounts>::iterator it = counts_.begin(); 1109 ScopedVector<TrackerCounts>::iterator it = counts_.begin();
1110 while (it != counts_.end() && *it != split_position) { 1110 while (it != counts_.end() && *it != split_position) {
1111 if (!(*it)->url.SchemeIsSecure() && 1111 if (!(*it)->url.SchemeIsCryptographic() &&
1112 origin == (*it)->first_party_for_cookies_origin) { 1112 origin == (*it)->first_party_for_cookies_origin) {
1113 old_url_has_mixed_content = true; 1113 old_url_has_mixed_content = true;
1114 break; 1114 break;
1115 } 1115 }
1116 ++it; 1116 ++it;
1117 } 1117 }
1118 if (!old_url_has_mixed_content) { 1118 if (!old_url_has_mixed_content) {
1119 // We marked the previous page with incorrect data about its mixed 1119 // We marked the previous page with incorrect data about its mixed
1120 // content. Turns out that the elements that triggered that condition 1120 // content. Turns out that the elements that triggered that condition
1121 // where in fact in a subsequent page. Duh. 1121 // where in fact in a subsequent page. Duh.
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
1161 } 1161 }
1162 } 1162 }
1163 1163
1164 void RequestTrackerImpl::TrimToURL(const GURL& full_url, id user_info) { 1164 void RequestTrackerImpl::TrimToURL(const GURL& full_url, id user_info) {
1165 DCHECK_CURRENTLY_ON_WEB_THREAD(web::WebThread::IO); 1165 DCHECK_CURRENTLY_ON_WEB_THREAD(web::WebThread::IO);
1166 1166
1167 GURL url = GURLByRemovingRefFromGURL(full_url); 1167 GURL url = GURLByRemovingRefFromGURL(full_url);
1168 1168
1169 // Locate the request with this url, if present. 1169 // Locate the request with this url, if present.
1170 bool new_url_has_mixed_content = false; 1170 bool new_url_has_mixed_content = false;
1171 bool url_scheme_is_secure = url.SchemeIsSecure(); 1171 bool url_scheme_is_secure = url.SchemeIsCryptographic();
1172 ScopedVector<TrackerCounts>::const_reverse_iterator rit = counts_.rbegin(); 1172 ScopedVector<TrackerCounts>::const_reverse_iterator rit = counts_.rbegin();
1173 while (rit != counts_.rend() && (*rit)->url != url) { 1173 while (rit != counts_.rend() && (*rit)->url != url) {
1174 if (url_scheme_is_secure && !(*rit)->url.SchemeIsSecure() && 1174 if (url_scheme_is_secure && !(*rit)->url.SchemeIsCryptographic() &&
1175 (*rit)->first_party_for_cookies_origin == url.GetOrigin()) { 1175 (*rit)->first_party_for_cookies_origin == url.GetOrigin()) {
1176 new_url_has_mixed_content = true; 1176 new_url_has_mixed_content = true;
1177 } 1177 }
1178 ++rit; 1178 ++rit;
1179 } 1179 }
1180 1180
1181 // |split_position| will be set to the count for the passed url if it exists. 1181 // |split_position| will be set to the count for the passed url if it exists.
1182 TrackerCounts* split_position = NULL; 1182 TrackerCounts* split_position = NULL;
1183 if (rit != counts_.rend()) { 1183 if (rit != counts_.rend()) {
1184 split_position = (*rit); 1184 split_position = (*rit);
1185 } else { 1185 } else {
1186 // The URL was not found, everything will be trimmed. The mixed content 1186 // The URL was not found, everything will be trimmed. The mixed content
1187 // calculation is invalid. 1187 // calculation is invalid.
1188 new_url_has_mixed_content = false; 1188 new_url_has_mixed_content = false;
1189 1189
1190 // In the case of a page loaded via a HTML5 manifest there is no page 1190 // In the case of a page loaded via a HTML5 manifest there is no page
1191 // boundary to be found. However the latest count is a request for a 1191 // boundary to be found. However the latest count is a request for a
1192 // manifest. This tries to detect this peculiar case. 1192 // manifest. This tries to detect this peculiar case.
1193 // This is important as if this request for the manifest is on the same 1193 // This is important as if this request for the manifest is on the same
1194 // domain as the page itself this will allow retrieval of the SSL 1194 // domain as the page itself this will allow retrieval of the SSL
1195 // information. 1195 // information.
1196 if (url_scheme_is_secure && counts_.size()) { 1196 if (url_scheme_is_secure && counts_.size()) {
1197 TrackerCounts* back = counts_.back(); 1197 TrackerCounts* back = counts_.back();
1198 const GURL& back_url = back->url; 1198 const GURL& back_url = back->url;
1199 if (back_url.SchemeIsSecure() && 1199 if (back_url.SchemeIsCryptographic() &&
1200 back_url.GetOrigin() == url.GetOrigin() && 1200 back_url.GetOrigin() == url.GetOrigin() && !back->is_subrequest) {
1201 !back->is_subrequest) {
1202 split_position = back; 1201 split_position = back;
1203 } 1202 }
1204 } 1203 }
1205 } 1204 }
1206 RecomputeMixedContent(split_position); 1205 RecomputeMixedContent(split_position);
1207 RecomputeCertificatePolicy(split_position); 1206 RecomputeCertificatePolicy(split_position);
1208 1207
1209 // Trim up to that element. 1208 // Trim up to that element.
1210 ScopedVector<TrackerCounts>::iterator it = counts_.begin(); 1209 ScopedVector<TrackerCounts>::iterator it = counts_.begin();
1211 while (it != counts_.end() && *it != split_position) { 1210 while (it != counts_.end() && *it != split_position) {
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
1299 })); 1298 }));
1300 } 1299 }
1301 } 1300 }
1302 1301
1303 void RequestTrackerImpl::SetCertificatePolicyCacheForTest( 1302 void RequestTrackerImpl::SetCertificatePolicyCacheForTest(
1304 web::CertificatePolicyCache* cache) { 1303 web::CertificatePolicyCache* cache) {
1305 policy_cache_ = cache; 1304 policy_cache_ = cache;
1306 } 1305 }
1307 1306
1308 } // namespace web 1307 } // namespace web
OLDNEW
« no previous file with comments | « google_apis/gaia/gaia_auth_util.cc ('k') | ios/web/net/request_tracker_impl_unittest.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698