Home | History | Annotate | Download | only in ssl
      1 // Copyright (c) 2009 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 #ifndef CHROME_BROWSER_SSL_SSL_CERT_ERROR_HANDLER_H_
      6 #define CHROME_BROWSER_SSL_SSL_CERT_ERROR_HANDLER_H_
      7 #pragma once
      8 
      9 #include <string>
     10 
     11 #include "chrome/browser/ssl/ssl_error_handler.h"
     12 #include "net/base/ssl_info.h"
     13 
     14 namespace net {
     15 class X509Certificate;
     16 }
     17 
     18 // A CertError represents an error that occurred with the certificate in an
     19 // SSL session.  A CertError object exists both on the IO thread and on the UI
     20 // thread and allows us to cancel/continue a request it is associated with.
     21 class SSLCertErrorHandler : public SSLErrorHandler {
     22  public:
     23   // Construct on the IO thread.
     24   SSLCertErrorHandler(ResourceDispatcherHost* rdh,
     25                       net::URLRequest* request,
     26                       ResourceType::Type resource_type,
     27                       int cert_error,
     28                       net::X509Certificate* cert);
     29 
     30   virtual SSLCertErrorHandler* AsSSLCertErrorHandler();
     31 
     32   // These accessors are available on either thread
     33   const net::SSLInfo& ssl_info() const { return ssl_info_; }
     34   int cert_error() const { return cert_error_; }
     35 
     36  protected:
     37   // SSLErrorHandler methods
     38   virtual void OnDispatchFailed();
     39   virtual void OnDispatched();
     40 
     41  private:
     42   virtual ~SSLCertErrorHandler();
     43 
     44   // These read-only members may be accessed on any thread.
     45   net::SSLInfo ssl_info_;
     46   const int cert_error_;  // The error we represent.
     47 
     48   DISALLOW_COPY_AND_ASSIGN(SSLCertErrorHandler);
     49 };
     50 
     51 #endif  // CHROME_BROWSER_SSL_SSL_CERT_ERROR_HANDLER_H_
     52