Index: chrome/browser/safe_browsing/safe_browsing_blocking_page.cc |
diff --git a/chrome/browser/safe_browsing/safe_browsing_blocking_page.cc b/chrome/browser/safe_browsing/safe_browsing_blocking_page.cc |
index baf78fe1ed0ae5491f3cf2981b4714403d9ba665..9be23d0ddde902ad141b6bab867f7b947e56376a 100644 |
--- a/chrome/browser/safe_browsing/safe_browsing_blocking_page.cc |
+++ b/chrome/browser/safe_browsing/safe_browsing_blocking_page.cc |
@@ -10,16 +10,10 @@ |
#include "base/bind.h" |
#include "base/command_line.h" |
-#include "base/i18n/rtl.h" |
#include "base/lazy_instance.h" |
#include "base/macros.h" |
#include "base/memory/ptr_util.h" |
-#include "base/metrics/field_trial.h" |
-#include "base/metrics/histogram_macros.h" |
#include "base/strings/string_number_conversions.h" |
-#include "base/strings/string_piece.h" |
-#include "base/strings/stringprintf.h" |
-#include "base/strings/utf_string_conversions.h" |
#include "base/time/time.h" |
#include "base/values.h" |
#include "chrome/browser/browser_process.h" |
@@ -28,49 +22,25 @@ |
#include "chrome/browser/renderer_preferences_util.h" |
#include "chrome/browser/safe_browsing/threat_details.h" |
#include "chrome/browser/safe_browsing/ui_manager.h" |
-#include "chrome/common/chrome_switches.h" |
#include "chrome/common/pref_names.h" |
-#include "chrome/common/url_constants.h" |
-#include "chrome/grit/generated_resources.h" |
-#include "components/google/core/browser/google_util.h" |
#include "components/prefs/pref_service.h" |
#include "components/safe_browsing_db/safe_browsing_prefs.h" |
-#include "components/security_interstitials/core/common_string_util.h" |
-#include "components/security_interstitials/core/controller_client.h" |
#include "content/public/browser/browser_thread.h" |
#include "content/public/browser/interstitial_page.h" |
-#include "content/public/browser/navigation_controller.h" |
#include "content/public/browser/navigation_entry.h" |
#include "content/public/browser/user_metrics.h" |
#include "content/public/browser/web_contents.h" |
-#include "content/public/common/renderer_preferences.h" |
-#include "net/base/escape.h" |
-#include "ui/base/l10n/l10n_util.h" |
using base::UserMetricsAction; |
using content::BrowserThread; |
using content::InterstitialPage; |
-using content::OpenURLParams; |
-using content::Referrer; |
using content::WebContents; |
+using security_interstitials::SafeBrowsingErrorUI; |
namespace safe_browsing { |
namespace { |
-// For malware interstitial pages, we link the problematic URL to Google's |
-// diagnostic page. |
-#if defined(GOOGLE_CHROME_BUILD) |
-const char kSbDiagnosticUrl[] = |
- "https://www.google.com/safebrowsing/diagnostic?site=%s&client=googlechrome"; |
-#else |
-const char kSbDiagnosticUrl[] = |
- "https://www.google.com/safebrowsing/diagnostic?site=%s&client=chromium"; |
-#endif |
- |
-// URL for the Help Center article on Safe Browsing warnings. |
-const char kLearnMore[] = "https://support.google.com/chrome/answer/99020"; |
- |
// After a safe browsing interstitial where the user opted-in to the report |
// but clicked "proceed anyway", we delay the call to |
// ThreatDetails::FinishCollection() by this much time (in |
@@ -83,10 +53,6 @@ const char kEventNameHarmful[] = "harmful_interstitial_"; |
const char kEventNamePhishing[] = "phishing_interstitial_"; |
const char kEventNameOther[] = "safebrowsing_other_interstitial_"; |
-// Constants for the V4 phishing string upgrades. |
-const char kReportPhishingErrorUrl[] = |
- "https://www.google.com/safebrowsing/report_error/"; |
- |
base::LazyInstance<SafeBrowsingBlockingPage::UnsafeResourceMap> |
g_unsafe_resource_map = LAZY_INSTANCE_INITIALIZER; |
@@ -138,21 +104,24 @@ SafeBrowsingBlockingPage::SafeBrowsingBlockingPage( |
CreateMetricsHelper(web_contents, unsafe_resources)), |
threat_details_proceed_delay_ms_(kThreatDetailsProceedDelayMilliSeconds), |
ui_manager_(ui_manager), |
- is_main_frame_load_blocked_(IsMainPageLoadBlocked(unsafe_resources)), |
main_frame_url_(main_frame_url), |
unsafe_resources_(unsafe_resources), |
- proceeded_(false), |
- interstitial_reason_(GetInterstitialReason(unsafe_resources)) { |
- controller()->metrics_helper()->RecordUserDecision( |
- security_interstitials::MetricsHelper::SHOW); |
- controller()->metrics_helper()->RecordUserInteraction( |
- security_interstitials::MetricsHelper::TOTAL_VISITS); |
- if (IsPrefEnabled(prefs::kSafeBrowsingProceedAnywayDisabled)) { |
- controller()->metrics_helper()->RecordUserDecision( |
- security_interstitials::MetricsHelper::PROCEEDING_DISABLED); |
- } |
- |
- if (!is_main_frame_load_blocked_) { |
+ proceeded_(false) { |
+ // Computes display options based on user profile and blocked resource. |
+ bool is_main_frame_load_blocked = IsMainPageLoadBlocked(unsafe_resources); |
+ bool can_show_threat_details_option = CanShowThreatDetailsOption(); |
+ SafeBrowsingErrorUI::SBErrorDisplayOptions display_options( |
Nathan Parker
2016/12/15 23:30:42
Lots of same-type args are easy to mix up. I was g
Jialiu Lin
2016/12/16 00:51:42
ack. I'll probably touch this part of code later i
|
+ is_main_frame_load_blocked, can_show_threat_details_option, |
+ IsExtendedReportingEnabled(*profile()->GetPrefs()), |
+ IsScout(*profile()->GetPrefs()), |
+ IsPrefEnabled(prefs::kSafeBrowsingProceedAnywayDisabled)); |
+ sb_error_ui_.reset(new SafeBrowsingErrorUI( |
Nathan Parker
2016/12/15 23:30:42
I think the recommended practice is now
sb_error_
Jialiu Lin
2016/12/16 00:51:42
Done.
|
+ unsafe_resources[0].url, main_frame_url_, |
+ GetInterstitialReason(unsafe_resources), display_options, |
+ g_browser_process->GetApplicationLocale(), |
+ base::Time::NowFromSystemTime(), controller())); |
+ |
+ if (!is_main_frame_load_blocked) { |
navigation_entry_index_to_remove_ = |
web_contents->GetController().GetLastCommittedEntryIndex(); |
} else { |
@@ -166,7 +135,7 @@ SafeBrowsingBlockingPage::SafeBrowsingBlockingPage( |
// reports. |
if (unsafe_resources.size() == 1 && |
ShouldReportThreatDetails(unsafe_resources[0].threat_type) && |
- threat_details_.get() == NULL && CanShowThreatDetailsOption()) { |
+ threat_details_.get() == NULL && can_show_threat_details_option) { |
threat_details_ = ThreatDetails::NewThreatDetails(ui_manager_, web_contents, |
unsafe_resources[0]); |
} |
@@ -201,123 +170,9 @@ void SafeBrowsingBlockingPage::CommandReceived(const std::string& page_cmd) { |
bool retval = base::StringToInt(page_cmd, &command); |
DCHECK(retval) << page_cmd; |
- switch (command) { |
- case security_interstitials::CMD_DO_REPORT: { |
- // User enabled SB Extended Reporting via the checkbox. |
- controller()->SetReportingPreference(true); |
- safe_browsing::SetExtendedReportingPrefAndMetric( |
- controller()->GetPrefService(), true, |
- safe_browsing::SBER_OPTIN_SITE_SECURITY_INTERSTITIAL); |
- break; |
- } |
- case security_interstitials::CMD_DONT_REPORT: { |
- // User disabled SB Extended Reporting via the checkbox. |
- controller()->SetReportingPreference(false); |
- safe_browsing::SetExtendedReportingPrefAndMetric( |
- controller()->GetPrefService(), false, |
- safe_browsing::SBER_OPTIN_SITE_SECURITY_INTERSTITIAL); |
- break; |
- } |
- case security_interstitials::CMD_OPEN_HELP_CENTER: { |
- // User pressed "Learn more". |
- metrics_helper()->RecordUserInteraction( |
- security_interstitials::MetricsHelper::SHOW_LEARN_MORE); |
- GURL learn_more_url(kLearnMore); |
- learn_more_url = google_util::AppendGoogleLocaleParam( |
- learn_more_url, g_browser_process->GetApplicationLocale()); |
- OpenURLParams params(learn_more_url, Referrer(), |
- WindowOpenDisposition::CURRENT_TAB, |
- ui::PAGE_TRANSITION_LINK, false); |
- web_contents()->OpenURL(params); |
- break; |
- } |
- case security_interstitials::CMD_OPEN_REPORTING_PRIVACY: { |
- // User pressed on the SB Extended Reporting "privacy policy" link. |
- controller()->OpenExtendedReportingPrivacyPolicy(); |
- break; |
- } |
- case security_interstitials::CMD_PROCEED: { |
- // User pressed on the button to proceed. |
- if (!IsPrefEnabled(prefs::kSafeBrowsingProceedAnywayDisabled)) { |
- metrics_helper()->RecordUserDecision( |
- security_interstitials::MetricsHelper::PROCEED); |
- interstitial_page()->Proceed(); |
- // |this| has been deleted after Proceed() returns. |
- break; |
- } |
- // If the user can't proceed, fall through to CMD_DONT_PROCEED. |
- } |
- case security_interstitials::CMD_DONT_PROCEED: { |
- // User pressed on the button to return to safety. |
- // Don't record the user action here because there are other ways of |
- // triggering DontProceed, like clicking the back button. |
- if (is_main_frame_load_blocked_) { |
- // If the load is blocked, we want to close the interstitial and discard |
- // the pending entry. |
- interstitial_page()->DontProceed(); |
- // |this| has been deleted after DontProceed() returns. |
- break; |
- } |
- |
- // Otherwise the offending entry has committed, and we need to go back or |
- // to a safe page. We will close the interstitial when that page commits. |
- if (web_contents()->GetController().CanGoBack()) { |
- web_contents()->GetController().GoBack(); |
- } else { |
- web_contents()->GetController().LoadURL( |
- GURL(chrome::kChromeUINewTabURL), |
- content::Referrer(), |
- ui::PAGE_TRANSITION_AUTO_TOPLEVEL, |
- std::string()); |
- } |
- break; |
- } |
- case security_interstitials::CMD_OPEN_DIAGNOSTIC: { |
- // User wants to see why this page is blocked. |
- const UnsafeResource& unsafe_resource = unsafe_resources_[0]; |
- std::string bad_url_spec = unsafe_resource.url.spec(); |
- metrics_helper()->RecordUserInteraction( |
- security_interstitials::MetricsHelper::SHOW_DIAGNOSTIC); |
- std::string diagnostic = |
- base::StringPrintf(kSbDiagnosticUrl, |
- net::EscapeQueryParamValue(bad_url_spec, true).c_str()); |
- GURL diagnostic_url(diagnostic); |
- diagnostic_url = google_util::AppendGoogleLocaleParam( |
- diagnostic_url, g_browser_process->GetApplicationLocale()); |
- DCHECK(unsafe_resource.threat_type == SB_THREAT_TYPE_URL_MALWARE || |
- unsafe_resource.threat_type == |
- SB_THREAT_TYPE_CLIENT_SIDE_MALWARE_URL || |
- unsafe_resource.threat_type == SB_THREAT_TYPE_URL_UNWANTED); |
- OpenURLParams params(diagnostic_url, Referrer(), |
- WindowOpenDisposition::CURRENT_TAB, |
- ui::PAGE_TRANSITION_LINK, false); |
- web_contents()->OpenURL(params); |
- break; |
- } |
- case security_interstitials::CMD_SHOW_MORE_SECTION: { |
- // User has opened up the hidden text. |
- metrics_helper()->RecordUserInteraction( |
- security_interstitials::MetricsHelper::SHOW_ADVANCED); |
- break; |
- } |
- case security_interstitials::CMD_REPORT_PHISHING_ERROR: { |
- // User wants to report a phishing error. |
- metrics_helper()->RecordUserInteraction( |
- security_interstitials::MetricsHelper::REPORT_PHISHING_ERROR); |
- GURL phishing_error_url(kReportPhishingErrorUrl); |
- phishing_error_url = google_util::AppendGoogleLocaleParam( |
- phishing_error_url, g_browser_process->GetApplicationLocale()); |
- OpenURLParams params(phishing_error_url, Referrer(), |
- WindowOpenDisposition::CURRENT_TAB, |
- ui::PAGE_TRANSITION_LINK, false); |
- web_contents()->OpenURL(params); |
- break; |
- } |
- case security_interstitials::CMD_OPEN_WHITEPAPER: { |
- controller()->OpenExtendedReportingWhitepaper(); |
- break; |
- } |
- } |
+ sb_error_ui_->HandleCommand( |
+ static_cast<security_interstitials::SecurityInterstitialCommands>( |
+ command)); |
} |
void SafeBrowsingBlockingPage::OverrideRendererPrefs( |
@@ -366,7 +221,7 @@ SafeBrowsingBlockingPage::GetTypeForTesting() const { |
} |
bool SafeBrowsingBlockingPage::ShouldCreateNewNavigation() const { |
- return is_main_frame_load_blocked_; |
+ return sb_error_ui_->is_main_frame_load_blocked(); |
} |
void SafeBrowsingBlockingPage::OnDontProceed() { |
@@ -495,14 +350,14 @@ bool SafeBrowsingBlockingPage::IsMainPageLoadBlocked( |
// static |
std::string SafeBrowsingBlockingPage::GetMetricPrefix( |
const UnsafeResourceList& unsafe_resources, |
- SBInterstitialReason interstitial_reason) { |
+ SafeBrowsingErrorUI::SBInterstitialReason interstitial_reason) { |
bool primary_subresource = unsafe_resources[0].is_subresource; |
switch (interstitial_reason) { |
- case SB_REASON_MALWARE: |
+ case SafeBrowsingErrorUI::SB_REASON_MALWARE: |
return primary_subresource ? "malware_subresource" : "malware"; |
- case SB_REASON_HARMFUL: |
+ case SafeBrowsingErrorUI::SB_REASON_HARMFUL: |
return primary_subresource ? "harmful_subresource" : "harmful"; |
- case SB_REASON_PHISHING: |
+ case SafeBrowsingErrorUI::SB_REASON_PHISHING: |
ThreatPatternType threat_pattern_type = |
unsafe_resources[0].threat_metadata.threat_pattern_type; |
if (threat_pattern_type == ThreatPatternType::PHISHING || |
@@ -544,44 +399,14 @@ std::string SafeBrowsingBlockingPage::GetExtraMetricsSuffix( |
} |
// static |
-std::string SafeBrowsingBlockingPage::GetRapporPrefix( |
- SBInterstitialReason interstitial_reason) { |
- switch (interstitial_reason) { |
- case SB_REASON_MALWARE: |
- return "malware2"; |
- case SB_REASON_HARMFUL: |
- return "harmful2"; |
- case SB_REASON_PHISHING: |
- return "phishing2"; |
- } |
- NOTREACHED(); |
- return std::string(); |
-} |
- |
-// static |
-std::string SafeBrowsingBlockingPage::GetDeprecatedRapporPrefix( |
- SBInterstitialReason interstitial_reason) { |
- switch (interstitial_reason) { |
- case SB_REASON_MALWARE: |
- return "malware"; |
- case SB_REASON_HARMFUL: |
- return "harmful"; |
- case SB_REASON_PHISHING: |
- return "phishing"; |
- } |
- NOTREACHED(); |
- return std::string(); |
-} |
- |
-// static |
std::string SafeBrowsingBlockingPage::GetSamplingEventName( |
- SBInterstitialReason interstitial_reason) { |
+ SafeBrowsingErrorUI::SBInterstitialReason interstitial_reason) { |
switch (interstitial_reason) { |
- case SB_REASON_MALWARE: |
+ case SafeBrowsingErrorUI::SB_REASON_MALWARE: |
return kEventNameMalware; |
- case SB_REASON_HARMFUL: |
+ case SafeBrowsingErrorUI::SB_REASON_HARMFUL: |
return kEventNameHarmful; |
- case SB_REASON_PHISHING: |
+ case SafeBrowsingErrorUI::SB_REASON_PHISHING: |
return kEventNamePhishing; |
default: |
return kEventNameOther; |
@@ -589,7 +414,7 @@ std::string SafeBrowsingBlockingPage::GetSamplingEventName( |
} |
// static |
-SafeBrowsingBlockingPage::SBInterstitialReason |
+SafeBrowsingErrorUI::SBInterstitialReason |
SafeBrowsingBlockingPage::GetInterstitialReason( |
const UnsafeResourceList& unsafe_resources) { |
bool malware = false; |
@@ -612,10 +437,10 @@ SafeBrowsingBlockingPage::GetInterstitialReason( |
} |
DCHECK(phishing || malware || harmful); |
if (malware) |
- return SB_REASON_MALWARE; |
+ return SafeBrowsingErrorUI::SB_REASON_MALWARE; |
else if (harmful) |
- return SB_REASON_HARMFUL; |
- return SB_REASON_PHISHING; |
+ return SafeBrowsingErrorUI::SB_REASON_HARMFUL; |
+ return SafeBrowsingErrorUI::SB_REASON_PHISHING; |
} |
// static |
@@ -623,20 +448,13 @@ std::unique_ptr<ChromeMetricsHelper> |
SafeBrowsingBlockingPage::CreateMetricsHelper( |
WebContents* web_contents, |
const UnsafeResourceList& unsafe_resources) { |
- SBInterstitialReason interstitial_reason = |
+ SafeBrowsingErrorUI::SBInterstitialReason interstitial_reason = |
GetInterstitialReason(unsafe_resources); |
GURL request_url(unsafe_resources[0].url); |
security_interstitials::MetricsHelper::ReportDetails reporting_info; |
reporting_info.metric_prefix = |
GetMetricPrefix(unsafe_resources, interstitial_reason); |
reporting_info.extra_suffix = GetExtraMetricsSuffix(unsafe_resources); |
- reporting_info.rappor_prefix = GetRapporPrefix(interstitial_reason); |
- reporting_info.deprecated_rappor_prefix = |
- GetDeprecatedRapporPrefix(interstitial_reason); |
- reporting_info.rappor_report_type = |
- rappor::LOW_FREQUENCY_SAFEBROWSING_RAPPOR_TYPE; |
- reporting_info.deprecated_rappor_report_type = |
- rappor::SAFEBROWSING_RAPPOR_TYPE; |
return std::unique_ptr<ChromeMetricsHelper>( |
new ChromeMetricsHelper(web_contents, request_url, reporting_info, |
GetSamplingEventName(interstitial_reason))); |
@@ -644,131 +462,7 @@ SafeBrowsingBlockingPage::CreateMetricsHelper( |
void SafeBrowsingBlockingPage::PopulateInterstitialStrings( |
base::DictionaryValue* load_time_data) { |
- CHECK(load_time_data); |
- CHECK(!unsafe_resources_.empty()); |
- |
- load_time_data->SetString("type", "SAFEBROWSING"); |
- load_time_data->SetString( |
- "tabTitle", l10n_util::GetStringUTF16(IDS_SAFEBROWSING_V3_TITLE)); |
- load_time_data->SetString( |
- "openDetails", |
- l10n_util::GetStringUTF16(IDS_SAFEBROWSING_V3_OPEN_DETAILS_BUTTON)); |
- load_time_data->SetString( |
- "closeDetails", |
- l10n_util::GetStringUTF16(IDS_SAFEBROWSING_V3_CLOSE_DETAILS_BUTTON)); |
- load_time_data->SetString( |
- "primaryButtonText", |
- l10n_util::GetStringUTF16(IDS_SAFEBROWSING_OVERRIDABLE_SAFETY_BUTTON)); |
- load_time_data->SetBoolean( |
- "overridable", |
- !IsPrefEnabled(prefs::kSafeBrowsingProceedAnywayDisabled)); |
- security_interstitials::common_string_util::PopulateNewIconStrings( |
- load_time_data); |
- |
- switch (interstitial_reason_) { |
- case SB_REASON_MALWARE: |
- PopulateMalwareLoadTimeData(load_time_data); |
- break; |
- case SB_REASON_HARMFUL: |
- PopulateHarmfulLoadTimeData(load_time_data); |
- break; |
- case SB_REASON_PHISHING: |
- PopulatePhishingLoadTimeData(load_time_data); |
- break; |
- } |
-} |
- |
-void SafeBrowsingBlockingPage::PopulateExtendedReportingOption( |
- base::DictionaryValue* load_time_data) { |
- // Only show checkbox if !(HTTPS || incognito-mode). |
- const bool show = CanShowThreatDetailsOption(); |
- load_time_data->SetBoolean(security_interstitials::kDisplayCheckBox, show); |
- if (!show) |
- return; |
- |
- const std::string privacy_link = base::StringPrintf( |
- security_interstitials::kPrivacyLinkHtml, |
- security_interstitials::CMD_OPEN_REPORTING_PRIVACY, |
- l10n_util::GetStringUTF8(IDS_SAFE_BROWSING_PRIVACY_POLICY_PAGE).c_str()); |
- load_time_data->SetString( |
- security_interstitials::kOptInLink, |
- l10n_util::GetStringFUTF16( |
- ChooseOptInTextResource(*profile()->GetPrefs(), |
- IDS_SAFE_BROWSING_MALWARE_REPORTING_AGREE, |
- IDS_SAFE_BROWSING_SCOUT_REPORTING_AGREE), |
- base::UTF8ToUTF16(privacy_link))); |
- load_time_data->SetBoolean( |
- security_interstitials::kBoxChecked, |
- IsExtendedReportingEnabled(*profile()->GetPrefs())); |
-} |
- |
-void SafeBrowsingBlockingPage::PopulateMalwareLoadTimeData( |
- base::DictionaryValue* load_time_data) { |
- load_time_data->SetBoolean("phishing", false); |
- load_time_data->SetString( |
- "heading", l10n_util::GetStringUTF16(IDS_MALWARE_V3_HEADING)); |
- load_time_data->SetString( |
- "primaryParagraph", |
- l10n_util::GetStringFUTF16( |
- IDS_MALWARE_V3_PRIMARY_PARAGRAPH, |
- GetFormattedHostName())); |
- load_time_data->SetString( |
- "explanationParagraph", |
- is_main_frame_load_blocked_ ? |
- l10n_util::GetStringFUTF16( |
- IDS_MALWARE_V3_EXPLANATION_PARAGRAPH, |
- GetFormattedHostName()) : |
- l10n_util::GetStringFUTF16( |
- IDS_MALWARE_V3_EXPLANATION_PARAGRAPH_SUBRESOURCE, |
- base::UTF8ToUTF16(main_frame_url_.host()), |
- GetFormattedHostName())); |
- load_time_data->SetString( |
- "finalParagraph", |
- l10n_util::GetStringUTF16(IDS_MALWARE_V3_PROCEED_PARAGRAPH)); |
- |
- PopulateExtendedReportingOption(load_time_data); |
-} |
- |
-void SafeBrowsingBlockingPage::PopulateHarmfulLoadTimeData( |
- base::DictionaryValue* load_time_data) { |
- load_time_data->SetBoolean("phishing", false); |
- load_time_data->SetString( |
- "heading", l10n_util::GetStringUTF16(IDS_HARMFUL_V3_HEADING)); |
- load_time_data->SetString( |
- "primaryParagraph", |
- l10n_util::GetStringFUTF16( |
- IDS_HARMFUL_V3_PRIMARY_PARAGRAPH, |
- GetFormattedHostName())); |
- load_time_data->SetString( |
- "explanationParagraph", |
- l10n_util::GetStringFUTF16( |
- IDS_HARMFUL_V3_EXPLANATION_PARAGRAPH, |
- GetFormattedHostName())); |
- load_time_data->SetString( |
- "finalParagraph", |
- l10n_util::GetStringUTF16(IDS_HARMFUL_V3_PROCEED_PARAGRAPH)); |
- |
- PopulateExtendedReportingOption(load_time_data); |
-} |
- |
-void SafeBrowsingBlockingPage::PopulatePhishingLoadTimeData( |
- base::DictionaryValue* load_time_data) { |
- load_time_data->SetBoolean("phishing", true); |
- load_time_data->SetString("heading", |
- l10n_util::GetStringUTF16(IDS_PHISHING_V4_HEADING)); |
- load_time_data->SetString( |
- "primaryParagraph", |
- l10n_util::GetStringFUTF16(IDS_PHISHING_V4_PRIMARY_PARAGRAPH, |
- GetFormattedHostName())); |
- load_time_data->SetString( |
- "explanationParagraph", |
- l10n_util::GetStringFUTF16(IDS_PHISHING_V4_EXPLANATION_PARAGRAPH, |
- GetFormattedHostName())); |
- load_time_data->SetString( |
- "finalParagraph", |
- l10n_util::GetStringUTF16(IDS_PHISHING_V4_PROCEED_AND_REPORT_PARAGRAPH)); |
- |
- PopulateExtendedReportingOption(load_time_data); |
+ sb_error_ui_->PopulateStringsForHTML(load_time_data); |
} |
} // namespace safe_browsing |