| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/ssl/ssl_blocking_page.h" | 5 #include "chrome/browser/ssl/ssl_blocking_page.h" |
| 6 | 6 |
| 7 #include "base/build_time.h" | 7 #include "base/build_time.h" |
| 8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
| 9 #include "base/i18n/rtl.h" | 9 #include "base/i18n/rtl.h" |
| 10 #include "base/i18n/time_formatting.h" | 10 #include "base/i18n/time_formatting.h" |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 43 #include "ui/base/l10n/l10n_util.h" | 43 #include "ui/base/l10n/l10n_util.h" |
| 44 #include "ui/base/resource/resource_bundle.h" | 44 #include "ui/base/resource/resource_bundle.h" |
| 45 #include "ui/base/webui/jstemplate_builder.h" | 45 #include "ui/base/webui/jstemplate_builder.h" |
| 46 #include "ui/base/webui/web_ui_util.h" | 46 #include "ui/base/webui/web_ui_util.h" |
| 47 | 47 |
| 48 #if defined(ENABLE_CAPTIVE_PORTAL_DETECTION) | 48 #if defined(ENABLE_CAPTIVE_PORTAL_DETECTION) |
| 49 #include "chrome/browser/captive_portal/captive_portal_service.h" | 49 #include "chrome/browser/captive_portal/captive_portal_service.h" |
| 50 #include "chrome/browser/captive_portal/captive_portal_service_factory.h" | 50 #include "chrome/browser/captive_portal/captive_portal_service_factory.h" |
| 51 #endif | 51 #endif |
| 52 | 52 |
| 53 #if defined(OS_WIN) | |
| 54 #include "base/win/windows_version.h" | |
| 55 #endif | |
| 56 | |
| 57 using base::ASCIIToUTF16; | 53 using base::ASCIIToUTF16; |
| 58 using base::TimeTicks; | 54 using base::TimeTicks; |
| 59 using content::InterstitialPage; | 55 using content::InterstitialPage; |
| 60 using content::NavigationController; | 56 using content::NavigationController; |
| 61 using content::NavigationEntry; | 57 using content::NavigationEntry; |
| 62 | 58 |
| 63 namespace { | 59 namespace { |
| 64 | 60 |
| 65 // Constants for the M37 Finch trial. | 61 // Constants for the M37 Finch trial. |
| 66 const char kInterstitialTrialName[] = "SSLInterstitialVersion"; | 62 const char kInterstitialTrialName[] = "SSLInterstitialVersion"; |
| (...skipping 437 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 504 load_time_data.SetString( | 500 load_time_data.SetString( |
| 505 "primaryParagraph", | 501 "primaryParagraph", |
| 506 l10n_util::GetStringFUTF16(IDS_SSL_V2_PRIMARY_PARAGRAPH, url)); | 502 l10n_util::GetStringFUTF16(IDS_SSL_V2_PRIMARY_PARAGRAPH, url)); |
| 507 } | 503 } |
| 508 load_time_data.SetString( | 504 load_time_data.SetString( |
| 509 "openDetails", | 505 "openDetails", |
| 510 l10n_util::GetStringUTF16(IDS_SSL_V2_OPEN_DETAILS_BUTTON)); | 506 l10n_util::GetStringUTF16(IDS_SSL_V2_OPEN_DETAILS_BUTTON)); |
| 511 load_time_data.SetString( | 507 load_time_data.SetString( |
| 512 "closeDetails", | 508 "closeDetails", |
| 513 l10n_util::GetStringUTF16(IDS_SSL_V2_CLOSE_DETAILS_BUTTON)); | 509 l10n_util::GetStringUTF16(IDS_SSL_V2_CLOSE_DETAILS_BUTTON)); |
| 514 | |
| 515 if (overridable_ && !strict_enforcement_) { // Overridable. | 510 if (overridable_ && !strict_enforcement_) { // Overridable. |
| 516 SSLErrorInfo error_info = | 511 SSLErrorInfo error_info = |
| 517 SSLErrorInfo::CreateError( | 512 SSLErrorInfo::CreateError( |
| 518 SSLErrorInfo::NetErrorToErrorType(cert_error_), | 513 SSLErrorInfo::NetErrorToErrorType(cert_error_), |
| 519 ssl_info_.cert.get(), | 514 ssl_info_.cert.get(), |
| 520 request_url_); | 515 request_url_); |
| 521 load_time_data.SetString( | 516 load_time_data.SetString( |
| 522 "explanationParagraph", error_info.details()); | 517 "explanationParagraph", error_info.details()); |
| 523 load_time_data.SetString( | 518 load_time_data.SetString( |
| 524 "primaryButtonText", | 519 "primaryButtonText", |
| 525 l10n_util::GetStringUTF16(IDS_SSL_OVERRIDABLE_SAFETY_BUTTON)); | 520 l10n_util::GetStringUTF16(IDS_SSL_OVERRIDABLE_SAFETY_BUTTON)); |
| 526 load_time_data.SetString( | 521 load_time_data.SetString( |
| 527 "finalParagraph", | 522 "finalParagraph", |
| 528 l10n_util::GetStringFUTF16(IDS_SSL_OVERRIDABLE_PROCEED_PARAGRAPH, url)); | 523 l10n_util::GetStringFUTF16(IDS_SSL_OVERRIDABLE_PROCEED_PARAGRAPH, url)); |
| 529 } else { // Non-overridable. | 524 } else { // Non-overridable. |
| 530 load_time_data.SetBoolean("overridable", false); | 525 load_time_data.SetBoolean("overridable", false); |
| 531 load_time_data.SetString( | 526 SSLErrorInfo::ErrorType type = SSLErrorInfo::CERT_INVALID; |
| 532 "explanationParagraph", | 527 // SSLErrorInfo::NetErrorToErrorType(cert_error_); |
| 533 l10n_util::GetStringFUTF16(IDS_SSL_NONOVERRIDABLE_MORE, url)); | 528 if (type == SSLErrorInfo::CERT_INVALID && SSLErrorClassification:: |
| 529 IsWindowsVersionSP3OrLower()) { |
| 530 load_time_data.SetString( |
| 531 "explanationParagraph", |
| 532 l10n_util::GetStringFUTF16( |
| 533 IDS_SSL_NONOVERRIDABLE_MORE_INVALID_SP3, url)); |
| 534 } else { |
| 535 load_time_data.SetString("explanationParagraph", |
| 536 l10n_util::GetStringFUTF16( |
| 537 IDS_SSL_NONOVERRIDABLE_MORE, url)); |
| 538 } |
| 534 load_time_data.SetString( | 539 load_time_data.SetString( |
| 535 "primaryButtonText", | 540 "primaryButtonText", |
| 536 l10n_util::GetStringUTF16(IDS_SSL_NONOVERRIDABLE_RELOAD_BUTTON)); | 541 l10n_util::GetStringUTF16(IDS_SSL_NONOVERRIDABLE_RELOAD_BUTTON)); |
| 537 // Customize the help link depending on the specific error type. | 542 // Customize the help link depending on the specific error type. |
| 538 // Only mark as HSTS if none of the more specific error types apply, and use | 543 // Only mark as HSTS if none of the more specific error types apply, and use |
| 539 // INVALID as a fallback if no other string is appropriate. | 544 // INVALID as a fallback if no other string is appropriate. |
| 540 SSLErrorInfo::ErrorType type = | |
| 541 SSLErrorInfo::NetErrorToErrorType(cert_error_); | |
| 542 load_time_data.SetInteger("errorType", type); | 545 load_time_data.SetInteger("errorType", type); |
| 543 int help_string = IDS_SSL_NONOVERRIDABLE_INVALID; | 546 int help_string = IDS_SSL_NONOVERRIDABLE_INVALID; |
| 544 switch (type) { | 547 switch (type) { |
| 545 case SSLErrorInfo::CERT_REVOKED: | 548 case SSLErrorInfo::CERT_REVOKED: |
| 546 help_string = IDS_SSL_NONOVERRIDABLE_REVOKED; | 549 help_string = IDS_SSL_NONOVERRIDABLE_REVOKED; |
| 547 break; | 550 break; |
| 548 case SSLErrorInfo::CERT_PINNED_KEY_MISSING: | 551 case SSLErrorInfo::CERT_PINNED_KEY_MISSING: |
| 549 help_string = IDS_SSL_NONOVERRIDABLE_PINNED; | 552 help_string = IDS_SSL_NONOVERRIDABLE_PINNED; |
| 550 break; | 553 break; |
| 551 case SSLErrorInfo::CERT_INVALID: | 554 case SSLErrorInfo::CERT_INVALID: |
| (...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 721 // sure we don't clear the captive portal flag, since the interstitial was | 724 // sure we don't clear the captive portal flag, since the interstitial was |
| 722 // potentially caused by the captive portal. | 725 // potentially caused by the captive portal. |
| 723 captive_portal_detected_ = captive_portal_detected_ || | 726 captive_portal_detected_ = captive_portal_detected_ || |
| 724 (results->result == captive_portal::RESULT_BEHIND_CAPTIVE_PORTAL); | 727 (results->result == captive_portal::RESULT_BEHIND_CAPTIVE_PORTAL); |
| 725 // Also keep track of non-HTTP portals and error cases. | 728 // Also keep track of non-HTTP portals and error cases. |
| 726 captive_portal_no_response_ = captive_portal_no_response_ || | 729 captive_portal_no_response_ = captive_portal_no_response_ || |
| 727 (results->result == captive_portal::RESULT_NO_RESPONSE); | 730 (results->result == captive_portal::RESULT_NO_RESPONSE); |
| 728 } | 731 } |
| 729 #endif | 732 #endif |
| 730 } | 733 } |
| OLD | NEW |