OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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_error_handler.h" | 5 #include "chrome/browser/ssl/ssl_error_handler.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 #include <unordered_set> | 8 #include <unordered_set> |
9 #include <utility> | 9 #include <utility> |
10 | 10 |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
70 const int64_t kInterstitialDelayInMilliseconds = 3000; | 70 const int64_t kInterstitialDelayInMilliseconds = 3000; |
71 | 71 |
72 const char kHistogram[] = "interstitial.ssl_error_handler"; | 72 const char kHistogram[] = "interstitial.ssl_error_handler"; |
73 | 73 |
74 // Adds a message to console after navigation commits and then, deletes itself. | 74 // Adds a message to console after navigation commits and then, deletes itself. |
75 // Also deletes itself if the navigation is stopped. | 75 // Also deletes itself if the navigation is stopped. |
76 class CommonNameMismatchRedirectObserver | 76 class CommonNameMismatchRedirectObserver |
77 : public content::WebContentsObserver, | 77 : public content::WebContentsObserver, |
78 public content::WebContentsUserData<CommonNameMismatchRedirectObserver> { | 78 public content::WebContentsUserData<CommonNameMismatchRedirectObserver> { |
79 public: | 79 public: |
| 80 ~CommonNameMismatchRedirectObserver() override {} |
| 81 |
80 static void AddToConsoleAfterNavigation( | 82 static void AddToConsoleAfterNavigation( |
81 content::WebContents* web_contents, | 83 content::WebContents* web_contents, |
82 const std::string& request_url_hostname, | 84 const std::string& request_url_hostname, |
83 const std::string& suggested_url_hostname) { | 85 const std::string& suggested_url_hostname) { |
84 web_contents->SetUserData( | 86 web_contents->SetUserData( |
85 UserDataKey(), | 87 UserDataKey(), |
86 new CommonNameMismatchRedirectObserver( | 88 base::WrapUnique(new CommonNameMismatchRedirectObserver( |
87 web_contents, request_url_hostname, suggested_url_hostname)); | 89 web_contents, request_url_hostname, suggested_url_hostname))); |
88 } | 90 } |
89 | 91 |
90 private: | 92 private: |
91 CommonNameMismatchRedirectObserver(content::WebContents* web_contents, | 93 CommonNameMismatchRedirectObserver(content::WebContents* web_contents, |
92 const std::string& request_url_hostname, | 94 const std::string& request_url_hostname, |
93 const std::string& suggested_url_hostname) | 95 const std::string& suggested_url_hostname) |
94 : WebContentsObserver(web_contents), | 96 : WebContentsObserver(web_contents), |
95 web_contents_(web_contents), | 97 web_contents_(web_contents), |
96 request_url_hostname_(request_url_hostname), | 98 request_url_hostname_(request_url_hostname), |
97 suggested_url_hostname_(suggested_url_hostname) {} | 99 suggested_url_hostname_(suggested_url_hostname) {} |
98 ~CommonNameMismatchRedirectObserver() override {} | |
99 | 100 |
100 // WebContentsObserver: | 101 // WebContentsObserver: |
101 void NavigationStopped() override { | 102 void NavigationStopped() override { |
102 // Deletes |this|. | 103 // Deletes |this|. |
103 web_contents_->RemoveUserData(UserDataKey()); | 104 web_contents_->RemoveUserData(UserDataKey()); |
104 } | 105 } |
105 | 106 |
106 void NavigationEntryCommitted( | 107 void NavigationEntryCommitted( |
107 const content::LoadCommittedDetails& /* load_details */) override { | 108 const content::LoadCommittedDetails& /* load_details */) override { |
108 web_contents_->GetMainFrame()->AddMessageToConsole( | 109 web_contents_->GetMainFrame()->AddMessageToConsole( |
(...skipping 353 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
462 | 463 |
463 Profile* profile = | 464 Profile* profile = |
464 Profile::FromBrowserContext(web_contents->GetBrowserContext()); | 465 Profile::FromBrowserContext(web_contents->GetBrowserContext()); |
465 | 466 |
466 SSLErrorHandler* error_handler = new SSLErrorHandler( | 467 SSLErrorHandler* error_handler = new SSLErrorHandler( |
467 std::unique_ptr<SSLErrorHandler::Delegate>( | 468 std::unique_ptr<SSLErrorHandler::Delegate>( |
468 new SSLErrorHandlerDelegateImpl( | 469 new SSLErrorHandlerDelegateImpl( |
469 web_contents, ssl_info, profile, cert_error, options_mask, | 470 web_contents, ssl_info, profile, cert_error, options_mask, |
470 request_url, std::move(ssl_cert_reporter), callback)), | 471 request_url, std::move(ssl_cert_reporter), callback)), |
471 web_contents, profile, cert_error, ssl_info, request_url, callback); | 472 web_contents, profile, cert_error, ssl_info, request_url, callback); |
472 web_contents->SetUserData(UserDataKey(), error_handler); | 473 web_contents->SetUserData(UserDataKey(), base::WrapUnique(error_handler)); |
473 error_handler->StartHandlingError(); | 474 error_handler->StartHandlingError(); |
474 } | 475 } |
475 | 476 |
476 // static | 477 // static |
477 void SSLErrorHandler::ResetConfigForTesting() { | 478 void SSLErrorHandler::ResetConfigForTesting() { |
478 g_config.Pointer()->ResetForTesting(); | 479 g_config.Pointer()->ResetForTesting(); |
479 } | 480 } |
480 | 481 |
481 // static | 482 // static |
482 void SSLErrorHandler::SetInterstitialDelayForTesting( | 483 void SSLErrorHandler::SetInterstitialDelayForTesting( |
(...skipping 288 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
771 network_time::NetworkTimeTracker* tracker = | 772 network_time::NetworkTimeTracker* tracker = |
772 g_config.Pointer()->network_time_tracker(); | 773 g_config.Pointer()->network_time_tracker(); |
773 ssl_errors::ClockState clock_state = ssl_errors::GetClockState(now, tracker); | 774 ssl_errors::ClockState clock_state = ssl_errors::GetClockState(now, tracker); |
774 if (clock_state == ssl_errors::CLOCK_STATE_FUTURE || | 775 if (clock_state == ssl_errors::CLOCK_STATE_FUTURE || |
775 clock_state == ssl_errors::CLOCK_STATE_PAST) { | 776 clock_state == ssl_errors::CLOCK_STATE_PAST) { |
776 ShowBadClockInterstitial(now, clock_state); | 777 ShowBadClockInterstitial(now, clock_state); |
777 return; // |this| is deleted after showing the interstitial. | 778 return; // |this| is deleted after showing the interstitial. |
778 } | 779 } |
779 ShowSSLInterstitial(); | 780 ShowSSLInterstitial(); |
780 } | 781 } |
OLD | NEW |