1c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Copyright (c) 2009 The Chromium Authors. All rights reserved. 2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file. 4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#ifndef CHROME_BROWSER_SSL_SSL_CERT_ERROR_HANDLER_H_ 6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define CHROME_BROWSER_SSL_SSL_CERT_ERROR_HANDLER_H_ 73345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#pragma once 8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include <string> 10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/ssl/ssl_error_handler.h" 12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "net/base/ssl_info.h" 13731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 14731df977c0511bca2206b5f333555b1205ff1f43Iain Merricknamespace net { 15731df977c0511bca2206b5f333555b1205ff1f43Iain Merrickclass X509Certificate; 16731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick} 17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// A CertError represents an error that occurred with the certificate in an 19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// SSL session. A CertError object exists both on the IO thread and on the UI 20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// thread and allows us to cancel/continue a request it is associated with. 21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass SSLCertErrorHandler : public SSLErrorHandler { 22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public: 23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Construct on the IO thread. 24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch SSLCertErrorHandler(ResourceDispatcherHost* rdh, 25201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch net::URLRequest* request, 26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ResourceType::Type resource_type, 27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch int cert_error, 28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch net::X509Certificate* cert); 29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 3021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen virtual SSLCertErrorHandler* AsSSLCertErrorHandler(); 31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // These accessors are available on either thread 33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const net::SSLInfo& ssl_info() const { return ssl_info_; } 34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch int cert_error() const { return cert_error_; } 35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch protected: 37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // SSLErrorHandler methods 38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void OnDispatchFailed(); 39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void OnDispatched(); 40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch private: 42731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick virtual ~SSLCertErrorHandler(); 43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // These read-only members may be accessed on any thread. 45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch net::SSLInfo ssl_info_; 46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const int cert_error_; // The error we represent. 47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch DISALLOW_COPY_AND_ASSIGN(SSLCertErrorHandler); 49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 51c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif // CHROME_BROWSER_SSL_SSL_CERT_ERROR_HANDLER_H_ 52