Index: chrome/browser/captive_portal/captive_portal_browsertest.cc |
diff --git a/chrome/browser/captive_portal/captive_portal_browsertest.cc b/chrome/browser/captive_portal/captive_portal_browsertest.cc |
index dd999a2fd787982b23df92d4ccae8953d7aecd60..bbe6452e9852f95a2841683d330eb4883d37cb36 100644 |
--- a/chrome/browser/captive_portal/captive_portal_browsertest.cc |
+++ b/chrome/browser/captive_portal/captive_portal_browsertest.cc |
@@ -54,7 +54,10 @@ |
#include "content/public/common/url_constants.h" |
#include "content/public/test/browser_test_utils.h" |
#include "net/base/net_errors.h" |
+#include "net/base/test_data_directory.h" |
+#include "net/cert/x509_certificate.h" |
#include "net/http/transport_security_state.h" |
+#include "net/test/cert_test_util.h" |
#include "net/test/url_request/url_request_failed_job.h" |
#include "net/test/url_request/url_request_mock_http_job.h" |
#include "net/url_request/url_request.h" |
@@ -144,7 +147,8 @@ class URLRequestTimeoutOnDemandJob : public net::URLRequestJob, |
// Fails all active URLRequestTimeoutOnDemandJobs with SSL cert errors. |
// |expected_num_jobs| behaves just as in FailJobs. |
- static void FailJobsWithCertError(int expected_num_jobs); |
+ static void FailJobsWithCertError(int expected_num_jobs, |
+ const net::SSLInfo& ssl_info); |
// Abandon all active URLRequestTimeoutOnDemandJobs. |expected_num_jobs| |
// behaves just as in FailJobs. |
@@ -169,9 +173,9 @@ class URLRequestTimeoutOnDemandJob : public net::URLRequestJob, |
bool RemoveFromList(); |
static void WaitForJobsOnIOThread(int num_jobs); |
- static void FailOrAbandonJobsOnIOThread( |
- int expected_num_jobs, |
- EndJobOperation end_job_operation); |
+ static void FailOrAbandonJobsOnIOThread(int expected_num_jobs, |
+ EndJobOperation end_job_operation, |
+ const net::SSLInfo& ssl_info); |
// Checks if there are at least |num_jobs_to_wait_for_| jobs in |
// |job_list_|. If so, exits the message loop on the UI thread, which |
@@ -239,18 +243,17 @@ void URLRequestTimeoutOnDemandJob::FailJobs(int expected_num_jobs) { |
content::BrowserThread::PostTask( |
content::BrowserThread::IO, FROM_HERE, |
base::Bind(&URLRequestTimeoutOnDemandJob::FailOrAbandonJobsOnIOThread, |
- expected_num_jobs, |
- FAIL_JOBS)); |
+ expected_num_jobs, FAIL_JOBS, net::SSLInfo())); |
} |
// static |
void URLRequestTimeoutOnDemandJob::FailJobsWithCertError( |
- int expected_num_jobs) { |
+ int expected_num_jobs, |
+ const net::SSLInfo& ssl_info) { |
content::BrowserThread::PostTask( |
content::BrowserThread::IO, FROM_HERE, |
base::Bind(&URLRequestTimeoutOnDemandJob::FailOrAbandonJobsOnIOThread, |
- expected_num_jobs, |
- FAIL_JOBS_WITH_CERT_ERROR)); |
+ expected_num_jobs, FAIL_JOBS_WITH_CERT_ERROR, ssl_info)); |
} |
// static |
@@ -258,8 +261,7 @@ void URLRequestTimeoutOnDemandJob::AbandonJobs(int expected_num_jobs) { |
content::BrowserThread::PostTask( |
content::BrowserThread::IO, FROM_HERE, |
base::Bind(&URLRequestTimeoutOnDemandJob::FailOrAbandonJobsOnIOThread, |
- expected_num_jobs, |
- ABANDON_JOBS)); |
+ expected_num_jobs, ABANDON_JOBS, net::SSLInfo())); |
} |
URLRequestTimeoutOnDemandJob::URLRequestTimeoutOnDemandJob( |
@@ -324,7 +326,8 @@ void URLRequestTimeoutOnDemandJob::MaybeStopWaitingForJobsOnIOThread() { |
// static |
void URLRequestTimeoutOnDemandJob::FailOrAbandonJobsOnIOThread( |
int expected_num_jobs, |
- EndJobOperation end_job_operation) { |
+ EndJobOperation end_job_operation, |
+ const net::SSLInfo& ssl_info) { |
ASSERT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
ASSERT_LT(0, expected_num_jobs); |
EXPECT_EQ(last_num_jobs_to_wait_for_, expected_num_jobs); |
@@ -343,11 +346,7 @@ void URLRequestTimeoutOnDemandJob::FailOrAbandonJobsOnIOThread( |
net::ERR_CONNECTION_TIMED_OUT)); |
} else if (end_job_operation == FAIL_JOBS_WITH_CERT_ERROR) { |
DCHECK(job->request()->url().SchemeIsCryptographic()); |
- net::SSLInfo info; |
- info.cert_status = net::CERT_STATUS_COMMON_NAME_INVALID; |
- info.cert = new net::X509Certificate( |
- "bad.host", "CA", base::Time::Max(), base::Time::Max()); |
- job->NotifySSLCertificateError(info, true); |
+ job->NotifySSLCertificateError(ssl_info, true); |
} |
} |
@@ -2863,7 +2862,11 @@ IN_PROC_BROWSER_TEST_F(CaptivePortalBrowserTest, |
CaptivePortalObserver portal_observer(browser()->profile()); |
MultiNavigationObserver navigation_observer; |
- URLRequestTimeoutOnDemandJob::FailJobsWithCertError(1); |
+ net::SSLInfo info; |
+ info.cert_status = net::CERT_STATUS_COMMON_NAME_INVALID; |
+ info.cert = |
+ net::ImportCertFromFile(net::GetTestCertsDirectory(), "ok_cert.pem"); |
+ URLRequestTimeoutOnDemandJob::FailJobsWithCertError(1, info); |
navigation_observer.WaitForNavigations(1); |
EXPECT_EQ(CaptivePortalTabReloader::STATE_NEEDS_RELOAD, |