Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(74)

Side by Side Diff: chrome/browser/ssl/ssl_blocking_page.cc

Issue 416403006: Improve the SSL error display when the clock is wrong. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Less cyber-talk in the strings. Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/app/google_chrome_strings.grd ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 299 matching lines...) Expand 10 before | Expand all | Expand 10 after
310 #if !defined(OS_CHROMEOS) 310 #if !defined(OS_CHROMEOS)
311 base::LaunchOptions options; 311 base::LaunchOptions options;
312 options.wait = false; 312 options.wait = false;
313 #if defined(OS_LINUX) 313 #if defined(OS_LINUX)
314 options.allow_new_privs = true; 314 options.allow_new_privs = true;
315 #endif 315 #endif
316 base::LaunchProcess(command, options, NULL); 316 base::LaunchProcess(command, options, NULL);
317 #endif 317 #endif
318 } 318 }
319 319
320 bool IsErrorDueToBadClock(const base::Time& now, int error) {
321 if (SSLErrorInfo::NetErrorToErrorType(error) !=
322 SSLErrorInfo::CERT_DATE_INVALID) {
323 return false;
324 }
325 return SSLErrorClassification::IsUserClockInThePast(now) ||
326 SSLErrorClassification::IsUserClockInTheFuture(now);
327 }
328
320 } // namespace 329 } // namespace
321 330
322 // Note that we always create a navigation entry with SSL errors. 331 // Note that we always create a navigation entry with SSL errors.
323 // No error happening loading a sub-resource triggers an interstitial so far. 332 // No error happening loading a sub-resource triggers an interstitial so far.
324 SSLBlockingPage::SSLBlockingPage(content::WebContents* web_contents, 333 SSLBlockingPage::SSLBlockingPage(content::WebContents* web_contents,
325 int cert_error, 334 int cert_error,
326 const net::SSLInfo& ssl_info, 335 const net::SSLInfo& ssl_info,
327 const GURL& request_url, 336 const GURL& request_url,
328 int options_mask, 337 int options_mask,
329 const base::Callback<void(bool)>& callback) 338 const base::Callback<void(bool)>& callback)
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
432 base::i18n::WrapStringWithLTRFormatting(&url); 441 base::i18n::WrapStringWithLTRFormatting(&url);
433 webui::SetFontAndTextDirection(&load_time_data); 442 webui::SetFontAndTextDirection(&load_time_data);
434 443
435 // Shared values for both the overridable and non-overridable versions. 444 // Shared values for both the overridable and non-overridable versions.
436 load_time_data.SetBoolean("ssl", true); 445 load_time_data.SetBoolean("ssl", true);
437 load_time_data.SetBoolean("overridable", overridable_); 446 load_time_data.SetBoolean("overridable", overridable_);
438 load_time_data.SetString( 447 load_time_data.SetString(
439 "tabTitle", l10n_util::GetStringUTF16(IDS_SSL_V2_TITLE)); 448 "tabTitle", l10n_util::GetStringUTF16(IDS_SSL_V2_TITLE));
440 load_time_data.SetString( 449 load_time_data.SetString(
441 "heading", l10n_util::GetStringUTF16(IDS_SSL_V2_HEADING)); 450 "heading", l10n_util::GetStringUTF16(IDS_SSL_V2_HEADING));
442 if ((SSLErrorClassification::IsUserClockInThePast( 451
443 base::Time::NowFromSystemTime())) 452 base::Time now = base::Time::NowFromSystemTime();
444 && (SSLErrorInfo::NetErrorToErrorType(cert_error_) == 453 bool bad_clock = IsErrorDueToBadClock(now, cert_error_);
445 SSLErrorInfo::CERT_DATE_INVALID)) { 454 if (bad_clock) {
446 load_time_data.SetString("primaryParagraph", 455 load_time_data.SetString("primaryParagraph",
447 l10n_util::GetStringFUTF16( 456 l10n_util::GetStringFUTF16(
448 IDS_SSL_CLOCK_ERROR, 457 IDS_SSL_CLOCK_ERROR,
449 url, 458 url,
450 base::TimeFormatShortDate(base::Time::Now()))); 459 base::TimeFormatShortDate(now)));
451 } else { 460 } else {
452 load_time_data.SetString( 461 load_time_data.SetString(
453 "primaryParagraph", 462 "primaryParagraph",
454 l10n_util::GetStringFUTF16(IDS_SSL_V2_PRIMARY_PARAGRAPH, url)); 463 l10n_util::GetStringFUTF16(IDS_SSL_V2_PRIMARY_PARAGRAPH, url));
455 } 464 }
465
456 load_time_data.SetString( 466 load_time_data.SetString(
457 "openDetails", 467 "openDetails",
458 l10n_util::GetStringUTF16(IDS_SSL_V2_OPEN_DETAILS_BUTTON)); 468 l10n_util::GetStringUTF16(IDS_SSL_V2_OPEN_DETAILS_BUTTON));
459 load_time_data.SetString( 469 load_time_data.SetString(
460 "closeDetails", 470 "closeDetails",
461 l10n_util::GetStringUTF16(IDS_SSL_V2_CLOSE_DETAILS_BUTTON)); 471 l10n_util::GetStringUTF16(IDS_SSL_V2_CLOSE_DETAILS_BUTTON));
462 load_time_data.SetString("errorCode", net::ErrorToString(cert_error_)); 472 load_time_data.SetString("errorCode", net::ErrorToString(cert_error_));
463 473
464 if (overridable_) { // Overridable. 474 if (overridable_) {
465 SSLErrorInfo error_info = 475 SSLErrorInfo error_info =
466 SSLErrorInfo::CreateError( 476 SSLErrorInfo::CreateError(
467 SSLErrorInfo::NetErrorToErrorType(cert_error_), 477 SSLErrorInfo::NetErrorToErrorType(cert_error_),
468 ssl_info_.cert.get(), 478 ssl_info_.cert.get(),
469 request_url_); 479 request_url_);
470 load_time_data.SetString( 480 if (bad_clock) {
471 "explanationParagraph", error_info.details()); 481 load_time_data.SetString("explanationParagraph",
482 l10n_util::GetStringFUTF16(
483 IDS_SSL_CLOCK_ERROR_EXPLANATION, url));
484 } else {
485 load_time_data.SetString("explanationParagraph", error_info.details());
486 }
472 load_time_data.SetString( 487 load_time_data.SetString(
473 "primaryButtonText", 488 "primaryButtonText",
474 l10n_util::GetStringUTF16(IDS_SSL_OVERRIDABLE_SAFETY_BUTTON)); 489 l10n_util::GetStringUTF16(IDS_SSL_OVERRIDABLE_SAFETY_BUTTON));
475 load_time_data.SetString( 490 load_time_data.SetString(
476 "finalParagraph", 491 "finalParagraph",
477 l10n_util::GetStringFUTF16(IDS_SSL_OVERRIDABLE_PROCEED_PARAGRAPH, url)); 492 l10n_util::GetStringFUTF16(IDS_SSL_OVERRIDABLE_PROCEED_PARAGRAPH,
478 } else { // Non-overridable. 493 url));
479 load_time_data.SetBoolean("overridable", false); 494 } else {
480 SSLErrorInfo::ErrorType type = 495 SSLErrorInfo::ErrorType type =
481 SSLErrorInfo::NetErrorToErrorType(cert_error_); 496 SSLErrorInfo::NetErrorToErrorType(cert_error_);
482 if (type == SSLErrorInfo::CERT_INVALID && SSLErrorClassification:: 497 if (type == SSLErrorInfo::CERT_INVALID && SSLErrorClassification::
483 IsWindowsVersionSP3OrLower()) { 498 IsWindowsVersionSP3OrLower()) {
484 load_time_data.SetString( 499 load_time_data.SetString(
485 "explanationParagraph", 500 "explanationParagraph",
486 l10n_util::GetStringFUTF16( 501 l10n_util::GetStringFUTF16(
487 IDS_SSL_NONOVERRIDABLE_MORE_INVALID_SP3, url)); 502 IDS_SSL_NONOVERRIDABLE_MORE_INVALID_SP3, url));
503 } else if (bad_clock) {
504 load_time_data.SetString("explanationParagraph",
505 l10n_util::GetStringFUTF16(
506 IDS_SSL_CLOCK_ERROR_EXPLANATION, url));
488 } else { 507 } else {
489 load_time_data.SetString("explanationParagraph", 508 load_time_data.SetString("explanationParagraph",
490 l10n_util::GetStringFUTF16( 509 l10n_util::GetStringFUTF16(
491 IDS_SSL_NONOVERRIDABLE_MORE, url)); 510 IDS_SSL_NONOVERRIDABLE_MORE, url));
492 } 511 }
493 load_time_data.SetString( 512 load_time_data.SetString(
494 "primaryButtonText", 513 "primaryButtonText",
495 l10n_util::GetStringUTF16(IDS_SSL_NONOVERRIDABLE_RELOAD_BUTTON)); 514 l10n_util::GetStringUTF16(IDS_SSL_NONOVERRIDABLE_RELOAD_BUTTON));
496 // Customize the help link depending on the specific error type. 515 // Customize the help link depending on the specific error type.
497 // Only mark as HSTS if none of the more specific error types apply, and use 516 // Only mark as HSTS if none of the more specific error types apply, and use
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after
696 // sure we don't clear the captive portal flag, since the interstitial was 715 // sure we don't clear the captive portal flag, since the interstitial was
697 // potentially caused by the captive portal. 716 // potentially caused by the captive portal.
698 captive_portal_detected_ = captive_portal_detected_ || 717 captive_portal_detected_ = captive_portal_detected_ ||
699 (results->result == captive_portal::RESULT_BEHIND_CAPTIVE_PORTAL); 718 (results->result == captive_portal::RESULT_BEHIND_CAPTIVE_PORTAL);
700 // Also keep track of non-HTTP portals and error cases. 719 // Also keep track of non-HTTP portals and error cases.
701 captive_portal_no_response_ = captive_portal_no_response_ || 720 captive_portal_no_response_ = captive_portal_no_response_ ||
702 (results->result == captive_portal::RESULT_NO_RESPONSE); 721 (results->result == captive_portal::RESULT_NO_RESPONSE);
703 } 722 }
704 #endif 723 #endif
705 } 724 }
OLDNEW
« no previous file with comments | « chrome/app/google_chrome_strings.grd ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698