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