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 3 // found in the LICENSE file. 4 5 #include "content/browser/ssl/ssl_cert_error_handler.h" 6 7 #include "content/browser/ssl/ssl_manager.h" 8 #include "content/browser/ssl/ssl_policy.h" 9 #include "net/cert/cert_status_flags.h" 10 #include "net/cert/x509_certificate.h" 11 12 namespace content { 13 14 SSLCertErrorHandler::SSLCertErrorHandler( 15 const base::WeakPtr<Delegate>& delegate, 16 const GlobalRequestID& id, 17 ResourceType::Type resource_type, 18 const GURL& url, 19 int render_process_id, 20 int render_view_id, 21 const net::SSLInfo& ssl_info, 22 bool fatal) 23 : SSLErrorHandler(delegate, id, resource_type, url, render_process_id, 24 render_view_id), 25 ssl_info_(ssl_info), 26 cert_error_(net::MapCertStatusToNetError(ssl_info.cert_status)), 27 fatal_(fatal) { 28 } 29 30 SSLCertErrorHandler* SSLCertErrorHandler::AsSSLCertErrorHandler() { 31 return this; 32 } 33 34 void SSLCertErrorHandler::OnDispatchFailed() { 35 // Requests can fail to dispatch because they don't have a WebContents. See 36 // <http://crbug.com/86537>. In this case we have to make a decision in this 37 // function, so we ignore revocation check failures. 38 if (net::IsCertStatusMinorError(ssl_info().cert_status)) { 39 ContinueRequest(); 40 } else { 41 CancelRequest(); 42 } 43 } 44 45 void SSLCertErrorHandler::OnDispatched() { 46 manager_->policy()->OnCertError(this); 47 } 48 49 SSLCertErrorHandler::~SSLCertErrorHandler() {} 50 51 } // namespace content 52