Home | History | Annotate | Download | only in ssl
      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