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

Side by Side Diff: chrome/browser/ssl/security_state_model.cc

Issue 1473523002: Switch SecurityStateModel ownership to ChromeSecurityStateModelClient (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: delegate -> client Created 5 years 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "chrome/browser/ssl/security_state_model.h" 5 #include "chrome/browser/ssl/security_state_model.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/metrics/field_trial.h" 8 #include "base/metrics/field_trial.h"
9 #include "base/metrics/histogram_macros.h" 9 #include "base/metrics/histogram_macros.h"
10 #include "base/prefs/pref_service.h" 10 #include "base/prefs/pref_service.h"
11 #include "chrome/browser/profiles/profile.h" 11 #include "chrome/browser/profiles/profile.h"
12 #include "chrome/browser/ssl/chrome_security_state_model_client.h" 12 #include "chrome/browser/ssl/chrome_security_state_model_client.h"
13 #include "chrome/common/chrome_constants.h" 13 #include "chrome/common/chrome_constants.h"
14 #include "chrome/common/chrome_switches.h" 14 #include "chrome/common/chrome_switches.h"
15 #include "chrome/common/pref_names.h" 15 #include "chrome/common/pref_names.h"
16 #include "chrome/common/pref_names.h" 16 #include "chrome/common/pref_names.h"
17 #include "content/public/browser/cert_store.h" 17 #include "content/public/browser/cert_store.h"
18 #include "content/public/browser/navigation_entry.h" 18 #include "content/public/browser/navigation_entry.h"
19 #include "content/public/browser/navigation_handle.h" 19 #include "content/public/browser/navigation_handle.h"
20 #include "content/public/browser/web_contents.h" 20 #include "content/public/browser/web_contents.h"
21 #include "content/public/common/origin_util.h" 21 #include "content/public/common/origin_util.h"
22 #include "net/ssl/ssl_cipher_suite_names.h" 22 #include "net/ssl/ssl_cipher_suite_names.h"
23 #include "net/ssl/ssl_connection_status_flags.h" 23 #include "net/ssl/ssl_connection_status_flags.h"
24 24
25 #if defined(OS_CHROMEOS) 25 #if defined(OS_CHROMEOS)
26 #include "chrome/browser/chromeos/policy/policy_cert_service.h" 26 #include "chrome/browser/chromeos/policy/policy_cert_service.h"
27 #include "chrome/browser/chromeos/policy/policy_cert_service_factory.h" 27 #include "chrome/browser/chromeos/policy/policy_cert_service_factory.h"
28 #endif 28 #endif
29 29
30 DEFINE_WEB_CONTENTS_USER_DATA_KEY(SecurityStateModel);
31
32 namespace { 30 namespace {
33 31
34 SecurityStateModel::SecurityLevel GetSecurityLevelForNonSecureFieldTrial() { 32 SecurityStateModel::SecurityLevel GetSecurityLevelForNonSecureFieldTrial() {
35 std::string choice = 33 std::string choice =
36 base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII( 34 base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
37 switches::kMarkNonSecureAs); 35 switches::kMarkNonSecureAs);
38 std::string group = base::FieldTrialList::FindFullName("MarkNonSecureAs"); 36 std::string group = base::FieldTrialList::FindFullName("MarkNonSecureAs");
39 37
40 // Do not change this enum. It is used in the histogram. 38 // Do not change this enum. It is used in the histogram.
41 enum MarkNonSecureStatus { NEUTRAL, DUBIOUS, NON_SECURE, LAST_STATUS }; 39 enum MarkNonSecureStatus { NEUTRAL, DUBIOUS, NON_SECURE, LAST_STATUS };
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after
187 mixed_content_status(SecurityStateModel::NO_MIXED_CONTENT), 185 mixed_content_status(SecurityStateModel::NO_MIXED_CONTENT),
188 scheme_is_cryptographic(false), 186 scheme_is_cryptographic(false),
189 cert_status(0), 187 cert_status(0),
190 cert_id(0), 188 cert_id(0),
191 security_bits(-1), 189 security_bits(-1),
192 connection_status(0), 190 connection_status(0),
193 is_secure_protocol_and_ciphersuite(false) {} 191 is_secure_protocol_and_ciphersuite(false) {}
194 192
195 SecurityStateModel::SecurityInfo::~SecurityInfo() {} 193 SecurityStateModel::SecurityInfo::~SecurityInfo() {}
196 194
195 SecurityStateModel::SecurityStateModel(content::WebContents* web_contents)
196 : web_contents_(web_contents) {}
197
197 SecurityStateModel::~SecurityStateModel() {} 198 SecurityStateModel::~SecurityStateModel() {}
198 199
199 const SecurityStateModel::SecurityInfo& SecurityStateModel::GetSecurityInfo() 200 const SecurityStateModel::SecurityInfo& SecurityStateModel::GetSecurityInfo()
200 const { 201 const {
201 content::NavigationEntry* entry = 202 content::NavigationEntry* entry =
202 web_contents_->GetController().GetVisibleEntry(); 203 web_contents_->GetController().GetVisibleEntry();
203 if (!entry) { 204 if (!entry) {
204 security_info_ = SecurityInfo(); 205 security_info_ = SecurityInfo();
205 visible_url_ = GURL(); 206 visible_url_ = GURL();
206 visible_ssl_status_ = content::SSLStatus(); 207 visible_ssl_status_ = content::SSLStatus();
(...skipping 16 matching lines...) Expand all
223 224
224 SecurityInfoForRequest( 225 SecurityInfoForRequest(
225 entry->GetURL(), entry->GetSSL(), 226 entry->GetURL(), entry->GetSSL(),
226 Profile::FromBrowserContext(web_contents_->GetBrowserContext()), cert, 227 Profile::FromBrowserContext(web_contents_->GetBrowserContext()), cert,
227 client_->UsedPolicyInstalledCertificate(), &security_info_); 228 client_->UsedPolicyInstalledCertificate(), &security_info_);
228 visible_url_ = entry->GetURL(); 229 visible_url_ = entry->GetURL();
229 visible_ssl_status_ = entry->GetSSL(); 230 visible_ssl_status_ = entry->GetSSL();
230 return security_info_; 231 return security_info_;
231 } 232 }
232 233
234 void SecurityStateModel::SetClient(SecurityStateModelClient* client) {
235 client_ = client;
236 }
237
233 // static 238 // static
234 void SecurityStateModel::SecurityInfoForRequest( 239 void SecurityStateModel::SecurityInfoForRequest(
235 const GURL& url, 240 const GURL& url,
236 const content::SSLStatus& ssl, 241 const content::SSLStatus& ssl,
237 Profile* profile, 242 Profile* profile,
238 const scoped_refptr<net::X509Certificate>& cert, 243 const scoped_refptr<net::X509Certificate>& cert,
239 bool used_policy_installed_certificate, 244 bool used_policy_installed_certificate,
240 SecurityInfo* security_info) { 245 SecurityInfo* security_info) {
241 security_info->cert_id = ssl.cert_id; 246 security_info->cert_id = ssl.cert_id;
242 security_info->sha1_deprecation_status = GetSHA1DeprecationStatus(cert, ssl); 247 security_info->sha1_deprecation_status = GetSHA1DeprecationStatus(cert, ssl);
(...skipping 10 matching lines...) Expand all
253 258
254 security_info->sct_verify_statuses.clear(); 259 security_info->sct_verify_statuses.clear();
255 for (const auto& sct : ssl.signed_certificate_timestamp_ids) { 260 for (const auto& sct : ssl.signed_certificate_timestamp_ids) {
256 security_info->sct_verify_statuses.push_back(sct.status); 261 security_info->sct_verify_statuses.push_back(sct.status);
257 } 262 }
258 263
259 security_info->security_level = GetSecurityLevelForRequest( 264 security_info->security_level = GetSecurityLevelForRequest(
260 url, ssl, profile, cert, security_info->sha1_deprecation_status, 265 url, ssl, profile, cert, security_info->sha1_deprecation_status,
261 security_info->mixed_content_status, used_policy_installed_certificate); 266 security_info->mixed_content_status, used_policy_installed_certificate);
262 } 267 }
263
264 SecurityStateModel::SecurityStateModel(content::WebContents* web_contents)
265 : web_contents_(web_contents),
266 client_(new ChromeSecurityStateModelClient(web_contents)) {}
OLDNEW
« no previous file with comments | « chrome/browser/ssl/security_state_model.h ('k') | chrome/browser/ssl/security_state_model_android.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698