| Index: chrome/browser/ssl/ssl_browser_tests.cc
|
| diff --git a/chrome/browser/ssl/ssl_browser_tests.cc b/chrome/browser/ssl/ssl_browser_tests.cc
|
| index 59da844d52c303a549a9c989817e7fc46c86922c..d5360498c8cb0b4fe5984f336d96db6637db10b4 100644
|
| --- a/chrome/browser/ssl/ssl_browser_tests.cc
|
| +++ b/chrome/browser/ssl/ssl_browser_tests.cc
|
| @@ -42,7 +42,6 @@
|
| #include "content/public/browser/navigation_entry.h"
|
| #include "content/public/browser/notification_service.h"
|
| #include "content/public/browser/render_frame_host.h"
|
| -#include "content/public/browser/render_process_host.h"
|
| #include "content/public/browser/render_view_host.h"
|
| #include "content/public/browser/render_widget_host_view.h"
|
| #include "content/public/browser/web_contents.h"
|
| @@ -56,15 +55,10 @@
|
| #include "net/base/net_errors.h"
|
| #include "net/base/test_data_directory.h"
|
| #include "net/cert/cert_status_flags.h"
|
| -#include "net/cert/test_root_certs.h"
|
| #include "net/cert/x509_certificate.h"
|
| -#include "net/dns/host_resolver.h"
|
| -#include "net/dns/mock_host_resolver.h"
|
| -#include "net/http/http_transaction_factory.h"
|
| #include "net/ssl/ssl_info.h"
|
| #include "net/test/spawned_test_server/spawned_test_server.h"
|
| #include "net/url_request/url_request_context.h"
|
| -#include "net/url_request/url_request_context_getter.h"
|
|
|
| #if defined(USE_NSS_CERTS)
|
| #include "chrome/browser/net/nss_context.h"
|
| @@ -273,33 +267,6 @@ class MockSSLCertReporter : public SSLCertReporter {
|
|
|
| } // namespace CertificateReporting
|
|
|
| -void RootCertsChangedOnIOThread(
|
| - const scoped_refptr<net::URLRequestContextGetter> context_getter) {
|
| - net::CertDatabase::GetInstance()->NotifyObserversOfCACertChanged(NULL);
|
| - context_getter->GetURLRequestContext()
|
| - ->http_transaction_factory()
|
| - ->GetSession()
|
| - ->CloseAllConnections();
|
| -}
|
| -
|
| -// Alerts the URLRequestContext for the given WebContents that a root
|
| -// certificate has changed state or been removed. This, in turn, clears any
|
| -// cached certificate validation in the cert verifier. This will also close all
|
| -// connections in the socket pool of |contents|, so calls to this should be made
|
| -// with care.
|
| -void RootCertsChanged(WebContents* contents) {
|
| - scoped_refptr<net::URLRequestContextGetter> url_request_context =
|
| - contents->GetBrowserContext()->GetRequestContextForRenderProcess(
|
| - contents->GetRenderProcessHost()->GetID());
|
| - base::RunLoop run_loop;
|
| - content::BrowserThread::PostTaskAndReply(
|
| - content::BrowserThread::IO, FROM_HERE,
|
| - base::Bind(&RootCertsChangedOnIOThread, url_request_context),
|
| - run_loop.QuitClosure());
|
| - run_loop.Run();
|
| - base::RunLoop().RunUntilIdle();
|
| -}
|
| -
|
| } // namespace
|
|
|
| class SSLUITest : public InProcessBrowserTest {
|
| @@ -2349,29 +2316,31 @@ IN_PROC_BROWSER_TEST_F(SSLUITest, InterstitialNotAffectedByHideShow) {
|
| // However, if this is followed by another visit, and a good certificate
|
| // is seen for the same host, the original exception is forgotten.
|
| IN_PROC_BROWSER_TEST_F(SSLUITest, BadCertFollowedByGoodCert) {
|
| + // It is necessary to use |https_server_expired_| rather than
|
| + // |https_server_mismatched| because the former shares a host with
|
| + // |https_server_| and cert exceptions are per host.
|
| + ASSERT_TRUE(https_server_expired_.Start());
|
| ASSERT_TRUE(https_server_.Start());
|
| +
|
| + std::string https_server_expired_host =
|
| + https_server_.GetURL("files/ssl/google.html").host();
|
| std::string https_server_host =
|
| https_server_.GetURL("files/ssl/google.html").host();
|
| + ASSERT_EQ(https_server_expired_host, https_server_host);
|
|
|
| WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents();
|
| - net::TestRootCerts* root_certs = net::TestRootCerts::GetInstance();
|
| -
|
| - ASSERT_TRUE(root_certs);
|
| - root_certs->Clear();
|
|
|
| Profile* profile = Profile::FromBrowserContext(tab->GetBrowserContext());
|
| ChromeSSLHostStateDelegate* state =
|
| reinterpret_cast<ChromeSSLHostStateDelegate*>(
|
| profile->GetSSLHostStateDelegate());
|
|
|
| - ui_test_utils::NavigateToURL(browser(),
|
| - https_server_.GetURL("files/ssl/google.html"));
|
| + ui_test_utils::NavigateToURL(
|
| + browser(), https_server_expired_.GetURL("files/ssl/google.html"));
|
|
|
| ProceedThroughInterstitial(tab);
|
| EXPECT_TRUE(state->HasAllowException(https_server_host));
|
|
|
| - ASSERT_TRUE(https_server_.LoadTestRootCert());
|
| - RootCertsChanged(tab);
|
| ui_test_utils::NavigateToURL(browser(),
|
| https_server_.GetURL("files/ssl/google.html"));
|
| ASSERT_FALSE(tab->GetInterstitialPage());
|
|
|