• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
ssl_info()33   const net::SSLInfo& ssl_info() const { return ssl_info_; }
cert_error()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