From ee19788135cd12b718feed2550ae5a98dc78abdb Mon Sep 17 00:00:00 2001 From: horo Date: Thu, 23 Oct 2014 16:51:45 -0700 Subject: [ServiceWorker] Check ignore_certificate_errors flag in ServiceWorkerWriteToCacheJob. https://codereview.chromium.org/643773004 broke LayoutTest fetch-mixed-content.html. While executing LayoutTest, ignore_certificate_errors is set in LayoutTestBrowserContext. So every cert errors are ignored in HttpStreamFactoryImpl::Job::HandleCertificateError. At this case we should also ignore the cert errors in ServiceWorkerWriteToCacheJob. BUG=426047,425396 Review URL: https://codereview.chromium.org/664343005 Cr-Commit-Position: refs/heads/master@{#300989} --- .../service_worker/service_worker_write_to_cache_job.cc | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'content/browser') diff --git a/content/browser/service_worker/service_worker_write_to_cache_job.cc b/content/browser/service_worker/service_worker_write_to_cache_job.cc index 4a68e01..0baf702a2 100644 --- a/content/browser/service_worker/service_worker_write_to_cache_job.cc +++ b/content/browser/service_worker/service_worker_write_to_cache_job.cc @@ -10,6 +10,7 @@ #include "content/browser/service_worker/service_worker_metrics.h" #include "net/base/io_buffer.h" #include "net/base/net_errors.h" +#include "net/http/http_network_session.h" #include "net/http/http_request_headers.h" #include "net/http/http_response_headers.h" #include "net/http/http_util.h" @@ -346,9 +347,13 @@ void ServiceWorkerWriteToCacheJob::OnResponseStarted( // OnSSLCertificateError is not called when the HTTPS connection is reused. // So we check cert_status here. if (net::IsCertStatusError(request->ssl_info().cert_status)) { - AsyncNotifyDoneHelper(net::URLRequestStatus( - net::URLRequestStatus::FAILED, net::ERR_INSECURE_RESPONSE)); - return; + const net::HttpNetworkSession::Params* session_params = + request->context()->GetNetworkSessionParams(); + if (!session_params || !session_params->ignore_certificate_errors) { + AsyncNotifyDoneHelper(net::URLRequestStatus(net::URLRequestStatus::FAILED, + net::ERR_INSECURE_RESPONSE)); + return; + } } // To prevent most user-uploaded content from being used as a serviceworker. if (version_->script_url() == url_) { -- cgit v1.1