| // Copyright 2017 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "components/security_interstitials/core/safe_browsing_quiet_error_ui.h" |
| |
| #include "base/i18n/time_formatting.h" |
| #include "base/metrics/histogram_macros.h" |
| #include "base/strings/stringprintf.h" |
| #include "base/strings/utf_string_conversions.h" |
| #include "components/google/core/browser/google_util.h" |
| #include "components/grit/components_resources.h" |
| #include "components/security_interstitials/core/common_string_util.h" |
| #include "components/security_interstitials/core/metrics_helper.h" |
| #include "components/strings/grit/components_strings.h" |
| #include "net/base/escape.h" |
| #include "ui/base/l10n/l10n_util.h" |
| |
| namespace security_interstitials { |
| |
| SafeBrowsingQuietErrorUI::SafeBrowsingQuietErrorUI( |
| const GURL& request_url, |
| const GURL& main_frame_url, |
| BaseSafeBrowsingErrorUI::SBInterstitialReason reason, |
| const BaseSafeBrowsingErrorUI::SBErrorDisplayOptions& display_options, |
| const std::string& app_locale, |
| const base::Time& time_triggered, |
| ControllerClient* controller, |
| const bool is_giant_webview) |
| : BaseSafeBrowsingErrorUI(request_url, |
| main_frame_url, |
| reason, |
| display_options, |
| app_locale, |
| time_triggered, |
| controller), |
| is_giant_webview_(is_giant_webview) { |
| controller->metrics_helper()->RecordUserDecision(MetricsHelper::SHOW); |
| controller->metrics_helper()->RecordUserInteraction( |
| MetricsHelper::TOTAL_VISITS); |
| if (is_proceed_anyway_disabled()) { |
| controller->metrics_helper()->RecordUserDecision( |
| security_interstitials::MetricsHelper::PROCEEDING_DISABLED); |
| } |
| } |
| |
| SafeBrowsingQuietErrorUI::~SafeBrowsingQuietErrorUI() { |
| controller()->metrics_helper()->RecordShutdownMetrics(); |
| } |
| |
| void SafeBrowsingQuietErrorUI::PopulateStringsForHtml( |
| base::DictionaryValue* load_time_data) { |
| DCHECK(load_time_data); |
| |
| load_time_data->SetString("type", "SAFEBROWSING"); |
| load_time_data->SetString( |
| "tabTitle", l10n_util::GetStringUTF16(IDS_SAFEBROWSING_V3_TITLE)); |
| load_time_data->SetBoolean("overridable", !is_proceed_anyway_disabled()); |
| load_time_data->SetString( |
| "openDetails", |
| l10n_util::GetStringUTF16(IDS_SAFEBROWSING_V3_OPEN_DETAILS_BUTTON)); |
| load_time_data->SetBoolean("is_giant", is_giant_webview_); |
| |
| bool phishing = |
| interstitial_reason() == BaseSafeBrowsingErrorUI::SB_REASON_PHISHING; |
| load_time_data->SetBoolean("phishing", phishing); |
| load_time_data->SetString( |
| "heading", phishing |
| ? l10n_util::GetStringUTF16(IDS_PHISHING_WEBVIEW_HEADING) |
| : l10n_util::GetStringUTF16(IDS_MALWARE_WEBVIEW_HEADING)); |
| |
| int explanation_ids = -1; |
| if (phishing) |
| explanation_ids = IDS_PHISHING_WEBVIEW_EXPLANATION_PARAGRAPH; |
| else if (interstitial_reason() == BaseSafeBrowsingErrorUI::SB_REASON_MALWARE) |
| explanation_ids = IDS_MALWARE_WEBVIEW_EXPLANATION_PARAGRAPH; |
| |
| if (explanation_ids > -1) { |
| load_time_data->SetString("explanationParagraph", |
| l10n_util::GetStringUTF16(explanation_ids)); |
| } else { |
| NOTREACHED(); |
| } |
| } |
| |
| void SafeBrowsingQuietErrorUI::SetGiantWebViewForTesting( |
| bool is_giant_webview) { |
| is_giant_webview_ = is_giant_webview; |
| } |
| |
| void SafeBrowsingQuietErrorUI::HandleCommand( |
| SecurityInterstitialCommand command) { |
| switch (command) { |
| case CMD_PROCEED: { |
| // User pressed on the button to proceed. |
| if (!is_proceed_anyway_disabled()) { |
| controller()->metrics_helper()->RecordUserDecision( |
| MetricsHelper::PROCEED); |
| controller()->Proceed(); |
| } |
| break; |
| } |
| case CMD_DONT_PROCEED: |
| case CMD_DO_REPORT: |
| case CMD_DONT_REPORT: |
| case CMD_SHOW_MORE_SECTION: |
| case CMD_OPEN_HELP_CENTER: |
| case CMD_RELOAD: |
| case CMD_OPEN_REPORTING_PRIVACY: |
| case CMD_OPEN_WHITEPAPER: |
| case CMD_OPEN_DIAGNOSTIC: |
| case CMD_REPORT_PHISHING_ERROR: |
| case CMD_OPEN_DATE_SETTINGS: |
| case CMD_OPEN_LOGIN: |
| case CMD_ERROR: |
| case CMD_TEXT_FOUND: |
| case CMD_TEXT_NOT_FOUND: |
| NOTREACHED(); |
| break; |
| } |
| } |
| |
| int SafeBrowsingQuietErrorUI::GetHTMLTemplateId() const { |
| return IDR_SECURITY_INTERSTITIAL_QUIET_HTML; |
| }; |
| |
| } // security_interstitials |