mitm_software_ui.cc 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. // Copyright 2017 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "components/security_interstitials/core/mitm_software_ui.h"
  5. #include "base/i18n/time_formatting.h"
  6. #include "base/strings/escape.h"
  7. #include "base/strings/utf_string_conversions.h"
  8. #include "build/build_config.h"
  9. #include "components/security_interstitials/core/common_string_util.h"
  10. #include "components/security_interstitials/core/metrics_helper.h"
  11. #include "components/ssl_errors/error_info.h"
  12. #include "components/strings/grit/components_strings.h"
  13. #include "ui/base/l10n/l10n_util.h"
  14. namespace security_interstitials {
  15. MITMSoftwareUI::MITMSoftwareUI(const GURL& request_url,
  16. int cert_error,
  17. const net::SSLInfo& ssl_info,
  18. const std::string& mitm_software_name,
  19. bool is_enterprise_managed,
  20. ControllerClient* controller)
  21. : request_url_(request_url),
  22. cert_error_(cert_error),
  23. ssl_info_(ssl_info),
  24. mitm_software_name_(mitm_software_name),
  25. is_enterprise_managed_(is_enterprise_managed),
  26. controller_(controller) {
  27. controller_->metrics_helper()->RecordUserInteraction(
  28. security_interstitials::MetricsHelper::TOTAL_VISITS);
  29. }
  30. MITMSoftwareUI::~MITMSoftwareUI() {
  31. controller_->metrics_helper()->RecordShutdownMetrics();
  32. }
  33. void MITMSoftwareUI::PopulateStringsForHTML(base::Value::Dict& load_time_data) {
  34. // Shared with other SSL errors.
  35. common_string_util::PopulateSSLLayoutStrings(cert_error_, load_time_data);
  36. common_string_util::PopulateSSLDebuggingStrings(
  37. ssl_info_, base::Time::NowFromSystemTime(), load_time_data);
  38. // Set display booleans.
  39. load_time_data.Set("overridable", false);
  40. load_time_data.Set("hide_primary_button", true);
  41. load_time_data.Set("bad_clock", false);
  42. // Set strings that are shared between enterprise and non-enterprise
  43. // interstitials.
  44. load_time_data.Set("tabTitle", l10n_util::GetStringUTF16(IDS_SSL_V2_TITLE));
  45. load_time_data.Set("heading",
  46. l10n_util::GetStringUTF16(IDS_MITM_SOFTWARE_HEADING));
  47. load_time_data.Set("primaryButtonText", "");
  48. load_time_data.Set("finalParagraph", "");
  49. if (is_enterprise_managed_) {
  50. MITMSoftwareUI::PopulateEnterpriseUserStringsForHTML(load_time_data);
  51. return;
  52. }
  53. MITMSoftwareUI::PopulateAtHomeUserStringsForHTML(load_time_data);
  54. }
  55. void MITMSoftwareUI::HandleCommand(SecurityInterstitialCommand command) {
  56. switch (command) {
  57. case CMD_DO_REPORT:
  58. controller_->SetReportingPreference(true);
  59. break;
  60. case CMD_DONT_REPORT:
  61. controller_->SetReportingPreference(false);
  62. break;
  63. case CMD_SHOW_MORE_SECTION:
  64. controller_->metrics_helper()->RecordUserInteraction(
  65. security_interstitials::MetricsHelper::SHOW_ADVANCED);
  66. break;
  67. case CMD_OPEN_REPORTING_PRIVACY:
  68. controller_->OpenExtendedReportingPrivacyPolicy(true);
  69. break;
  70. case CMD_OPEN_WHITEPAPER:
  71. controller_->OpenExtendedReportingWhitepaper(true);
  72. break;
  73. case CMD_OPEN_ENHANCED_PROTECTION_SETTINGS:
  74. controller_->metrics_helper()->RecordUserInteraction(
  75. security_interstitials::MetricsHelper::OPEN_ENHANCED_PROTECTION);
  76. controller_->OpenEnhancedProtectionSettings();
  77. break;
  78. case CMD_DONT_PROCEED:
  79. case CMD_OPEN_HELP_CENTER:
  80. case CMD_RELOAD:
  81. case CMD_PROCEED:
  82. case CMD_OPEN_DATE_SETTINGS:
  83. case CMD_OPEN_DIAGNOSTIC:
  84. case CMD_OPEN_LOGIN:
  85. case CMD_REPORT_PHISHING_ERROR:
  86. // Not supported by the SSL error page.
  87. NOTREACHED() << "Unsupported command: " << command;
  88. break;
  89. case CMD_ERROR:
  90. case CMD_TEXT_FOUND:
  91. case CMD_TEXT_NOT_FOUND:
  92. // Commands are for testing.
  93. break;
  94. }
  95. }
  96. void MITMSoftwareUI::PopulateEnterpriseUserStringsForHTML(
  97. base::Value::Dict& load_time_data) {
  98. load_time_data.Set(
  99. "primaryParagraph",
  100. l10n_util::GetStringFUTF16(
  101. IDS_MITM_SOFTWARE_PRIMARY_PARAGRAPH_ENTERPRISE,
  102. base::EscapeForHTML(base::UTF8ToUTF16(mitm_software_name_))));
  103. load_time_data.Set(
  104. "explanationParagraph",
  105. l10n_util::GetStringFUTF16(
  106. IDS_MITM_SOFTWARE_EXPLANATION_ENTERPRISE,
  107. base::EscapeForHTML(base::UTF8ToUTF16(mitm_software_name_)),
  108. l10n_util::GetStringUTF16(IDS_MITM_SOFTWARE_EXPLANATION)));
  109. }
  110. void MITMSoftwareUI::PopulateAtHomeUserStringsForHTML(
  111. base::Value::Dict& load_time_data) {
  112. load_time_data.Set(
  113. "primaryParagraph",
  114. l10n_util::GetStringFUTF16(
  115. IDS_MITM_SOFTWARE_PRIMARY_PARAGRAPH_NONENTERPRISE,
  116. base::EscapeForHTML(base::UTF8ToUTF16(mitm_software_name_))));
  117. load_time_data.Set(
  118. "explanationParagraph",
  119. l10n_util::GetStringFUTF16(
  120. IDS_MITM_SOFTWARE_EXPLANATION_NONENTERPRISE,
  121. base::EscapeForHTML(base::UTF8ToUTF16(mitm_software_name_)),
  122. l10n_util::GetStringUTF16(IDS_MITM_SOFTWARE_EXPLANATION)));
  123. }
  124. } // namespace security_interstitials