blob: c7e9a8006a46e3f370331d4a831f97c56a4f0467 [file] [log] [blame]
// 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(
SecurityInterstitialCommands 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