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

Unified Diff: chrome/browser/ssl/ssl_blocking_page.cc

Issue 2303413002: Simplify security_interstitials::ControllerClient and other related classes (Closed)
Patch Set: Jialiu comments Created 4 years, 3 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/ssl/ssl_blocking_page.h ('k') | chrome/browser/ssl/ssl_browser_tests.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ssl/ssl_blocking_page.cc
diff --git a/chrome/browser/ssl/ssl_blocking_page.cc b/chrome/browser/ssl/ssl_blocking_page.cc
index db70bbbc203fba49a2bd3db981c0f4ee9d46a2d9..72ada1b604ba4da515b77b86aec7f4a92cd9fc31 100644
--- a/chrome/browser/ssl/ssl_blocking_page.cc
+++ b/chrome/browser/ssl/ssl_blocking_page.cc
@@ -98,12 +98,77 @@ void RecordSSLExpirationPageEventState(bool expired_but_previously_allowed,
}
}
+std::unique_ptr<ChromeMetricsHelper> CreateMetricsHelper(
+ content::WebContents* web_contents,
+ int cert_error,
+ const GURL& request_url,
+ bool overridable) {
+ // Set up the metrics helper for the SSLErrorUI.
+ security_interstitials::MetricsHelper::ReportDetails reporting_info;
+ reporting_info.metric_prefix =
+ overridable ? "ssl_overridable" : "ssl_nonoverridable";
+ reporting_info.rappor_prefix = kSSLRapporPrefix;
+ reporting_info.deprecated_rappor_prefix = kDeprecatedSSLRapporPrefix;
+ reporting_info.rappor_report_type = rappor::LOW_FREQUENCY_UMA_RAPPOR_TYPE;
+ reporting_info.deprecated_rappor_report_type = rappor::UMA_RAPPOR_TYPE;
+ return base::MakeUnique<ChromeMetricsHelper>(
+ web_contents, request_url, reporting_info,
+ GetSamplingEventName(overridable, cert_error));
+}
+
} // namespace
// static
InterstitialPageDelegate::TypeID SSLBlockingPage::kTypeForTesting =
&SSLBlockingPage::kTypeForTesting;
+// static
+SSLBlockingPage* SSLBlockingPage::Create(
+ content::WebContents* web_contents,
+ int cert_error,
+ const net::SSLInfo& ssl_info,
+ const GURL& request_url,
+ int options_mask,
+ const base::Time& time_triggered,
+ std::unique_ptr<SSLCertReporter> ssl_cert_reporter,
+ const base::Callback<void(content::CertificateRequestResultType)>&
+ callback) {
+ bool overridable = IsOverridable(
+ options_mask,
+ Profile::FromBrowserContext(web_contents->GetBrowserContext()));
+ std::unique_ptr<ChromeMetricsHelper> metrics_helper(
+ CreateMetricsHelper(web_contents, cert_error, request_url, overridable));
+ metrics_helper.get()->StartRecordingCaptivePortalMetrics(overridable);
+ return new SSLBlockingPage(web_contents, cert_error, ssl_info, request_url,
+ options_mask, time_triggered,
+ std::move(ssl_cert_reporter), overridable,
+ std::move(metrics_helper), callback);
+}
+
+bool SSLBlockingPage::ShouldCreateNewNavigation() const {
+ return true;
+}
+
+InterstitialPageDelegate::TypeID SSLBlockingPage::GetTypeForTesting() const {
+ return SSLBlockingPage::kTypeForTesting;
+}
+
+SSLBlockingPage::~SSLBlockingPage() {
+ if (!callback_.is_null()) {
+ // The page is closed without the user having chosen what to do, default to
+ // deny.
+ RecordSSLExpirationPageEventState(expired_but_previously_allowed_, false,
+ overridable_);
+ NotifyDenyCertificate();
+ }
+}
+
+void SSLBlockingPage::PopulateInterstitialStrings(
+ base::DictionaryValue* load_time_data) {
+ ssl_error_ui_->PopulateStringsForHTML(load_time_data);
+ cert_report_helper_->PopulateExtendedReportingOption(load_time_data);
+}
+
// Note that we always create a navigation entry with SSL errors.
// No error happening loading a sub-resource triggers an interstitial so far.
SSLBlockingPage::SSLBlockingPage(
@@ -114,13 +179,15 @@ SSLBlockingPage::SSLBlockingPage(
int options_mask,
const base::Time& time_triggered,
std::unique_ptr<SSLCertReporter> ssl_cert_reporter,
+ bool overridable,
+ std::unique_ptr<ChromeMetricsHelper> metrics_helper,
const base::Callback<void(content::CertificateRequestResultType)>& callback)
- : SecurityInterstitialPage(web_contents, request_url),
+ : SecurityInterstitialPage(web_contents,
+ request_url,
+ std::move(metrics_helper)),
callback_(callback),
ssl_info_(ssl_info),
- overridable_(IsOverridable(
- options_mask,
- Profile::FromBrowserContext(web_contents->GetBrowserContext()))),
+ overridable_(overridable),
expired_but_previously_allowed_(
(options_mask & SSLErrorUI::EXPIRED_BUT_PREVIOUSLY_ALLOWED) != 0) {
// Override prefs for the SSLErrorUI.
@@ -135,20 +202,6 @@ SSLBlockingPage::SSLBlockingPage(
else
options_mask &= ~SSLErrorUI::SOFT_OVERRIDE_ENABLED;
- // Set up the metrics helper for the SSLErrorUI.
- security_interstitials::MetricsHelper::ReportDetails reporting_info;
- reporting_info.metric_prefix =
- overridable_ ? "ssl_overridable" : "ssl_nonoverridable";
- reporting_info.rappor_prefix = kSSLRapporPrefix;
- reporting_info.deprecated_rappor_prefix = kDeprecatedSSLRapporPrefix;
- reporting_info.rappor_report_type = rappor::LOW_FREQUENCY_UMA_RAPPOR_TYPE;
- reporting_info.deprecated_rappor_report_type = rappor::UMA_RAPPOR_TYPE;
- ChromeMetricsHelper* chrome_metrics_helper =
- new ChromeMetricsHelper(web_contents, request_url, reporting_info,
- GetSamplingEventName(overridable_, cert_error));
- chrome_metrics_helper->StartRecordingCaptivePortalMetrics(overridable_);
- controller()->set_metrics_helper(base::WrapUnique(chrome_metrics_helper));
-
cert_report_helper_.reset(new CertReportHelper(
std::move(ssl_cert_reporter), web_contents, request_url, ssl_info,
certificate_reporting::ErrorReport::INTERSTITIAL_SSL, overridable_,
@@ -157,35 +210,10 @@ SSLBlockingPage::SSLBlockingPage(
ssl_error_ui_.reset(new SSLErrorUI(request_url, cert_error, ssl_info,
options_mask, time_triggered,
controller()));
-
// Creating an interstitial without showing (e.g. from chrome://interstitials)
// it leaks memory, so don't create it here.
}
-bool SSLBlockingPage::ShouldCreateNewNavigation() const {
- return true;
-}
-
-InterstitialPageDelegate::TypeID SSLBlockingPage::GetTypeForTesting() const {
- return SSLBlockingPage::kTypeForTesting;
-}
-
-SSLBlockingPage::~SSLBlockingPage() {
- if (!callback_.is_null()) {
- // The page is closed without the user having chosen what to do, default to
- // deny.
- RecordSSLExpirationPageEventState(
- expired_but_previously_allowed_, false, overridable_);
- NotifyDenyCertificate();
- }
-}
-
-void SSLBlockingPage::PopulateInterstitialStrings(
- base::DictionaryValue* load_time_data) {
- ssl_error_ui_->PopulateStringsForHTML(load_time_data);
- cert_report_helper_->PopulateExtendedReportingOption(load_time_data);
-}
-
void SSLBlockingPage::OverrideEntry(NavigationEntry* entry) {
entry->GetSSL() = content::SSLStatus(
content::SECURITY_STYLE_AUTHENTICATION_BROKEN, ssl_info_.cert, ssl_info_);
« no previous file with comments | « chrome/browser/ssl/ssl_blocking_page.h ('k') | chrome/browser/ssl/ssl_browser_tests.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698