Index: chrome/browser/ssl/ssl_error_handler.h |
=================================================================== |
--- chrome/browser/ssl/ssl_error_handler.h (revision 87796) |
+++ chrome/browser/ssl/ssl_error_handler.h (working copy) |
@@ -1,144 +0,0 @@ |
-// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#ifndef CHROME_BROWSER_SSL_SSL_ERROR_HANDLER_H_ |
-#define CHROME_BROWSER_SSL_SSL_ERROR_HANDLER_H_ |
-#pragma once |
- |
-#include <string> |
- |
-#include "base/basictypes.h" |
-#include "base/memory/ref_counted.h" |
-#include "chrome/browser/ssl/ssl_manager.h" |
-#include "content/browser/renderer_host/global_request_id.h" |
-#include "googleurl/src/gurl.h" |
-#include "webkit/glue/resource_type.h" |
- |
-class ResourceDispatcherHost; |
-class SSLCertErrorHandler; |
-class TabContents; |
- |
-namespace net { |
-class URLRequest; |
-} // namespace net |
- |
-// An SSLErrorHandler carries information from the IO thread to the UI thread |
-// and is dispatched to the appropriate SSLManager when it arrives on the |
-// UI thread. Subclasses should override the OnDispatched/OnDispatchFailed |
-// methods to implement the actions that should be taken on the UI thread. |
-// These methods can call the different convenience methods ContinueRequest/ |
-// CancelRequest to perform any required action on the net::URLRequest the |
-// ErrorHandler was created with. |
-// |
-// IMPORTANT NOTE: |
-// |
-// If you are not doing anything in OnDispatched/OnDispatchFailed, make sure |
-// you call TakeNoAction(). This is necessary for ensuring the instance is |
-// not leaked. |
-// |
-class SSLErrorHandler : public base::RefCountedThreadSafe<SSLErrorHandler> { |
- public: |
- virtual SSLCertErrorHandler* AsSSLCertErrorHandler(); |
- |
- // Find the appropriate SSLManager for the net::URLRequest and begin handling |
- // this error. |
- // |
- // Call on UI thread. |
- void Dispatch(); |
- |
- // Available on either thread. |
- const GURL& request_url() const { return request_url_; } |
- |
- // Available on either thread. |
- ResourceType::Type resource_type() const { return resource_type_; } |
- |
- // Returns the TabContents this object is associated with. Should be |
- // called from the UI thread. |
- TabContents* GetTabContents(); |
- |
- // Cancels the associated net::URLRequest. |
- // This method can be called from OnDispatchFailed and OnDispatched. |
- void CancelRequest(); |
- |
- // Continue the net::URLRequest ignoring any previous errors. Note that some |
- // errors cannot be ignored, in which case this will result in the request |
- // being canceled. |
- // This method can be called from OnDispatchFailed and OnDispatched. |
- void ContinueRequest(); |
- |
- // Cancels the associated net::URLRequest and mark it as denied. The renderer |
- // processes such request in a special manner, optionally replacing them |
- // with alternate content (typically frames content is replaced with a |
- // warning message). |
- // This method can be called from OnDispatchFailed and OnDispatched. |
- void DenyRequest(); |
- |
- // Does nothing on the net::URLRequest but ensures the current instance ref |
- // count is decremented appropriately. Subclasses that do not want to |
- // take any specific actions in their OnDispatched/OnDispatchFailed should |
- // call this. |
- void TakeNoAction(); |
- |
- protected: |
- friend class base::RefCountedThreadSafe<SSLErrorHandler>; |
- |
- // Construct on the IO thread. |
- SSLErrorHandler(ResourceDispatcherHost* resource_dispatcher_host, |
- net::URLRequest* request, |
- ResourceType::Type resource_type); |
- |
- virtual ~SSLErrorHandler(); |
- |
- // The following 2 methods are the methods subclasses should implement. |
- virtual void OnDispatchFailed(); |
- |
- // Can use the manager_ member. |
- virtual void OnDispatched(); |
- |
- // Should only be accessed on the UI thread. |
- SSLManager* manager_; // Our manager. |
- |
- // The id of the net::URLRequest associated with this object. |
- // Should only be accessed from the IO thread. |
- GlobalRequestID request_id_; |
- |
- // The ResourceDispatcherHost we are associated with. |
- ResourceDispatcherHost* resource_dispatcher_host_; |
- |
- private: |
- // Completes the CancelRequest operation on the IO thread. |
- // Call on the IO thread. |
- void CompleteCancelRequest(int error); |
- |
- // Completes the ContinueRequest operation on the IO thread. |
- // |
- // Call on the IO thread. |
- void CompleteContinueRequest(); |
- |
- // Derefs this instance. |
- // Call on the IO thread. |
- void CompleteTakeNoAction(); |
- |
- // We use these members to find the correct SSLManager when we arrive on |
- // the UI thread. |
- int render_process_host_id_; |
- int tab_contents_id_; |
- |
- // The URL that we requested. |
- // This read-only member can be accessed on any thread. |
- const GURL request_url_; |
- |
- // What kind of resource is associated with the requested that generated |
- // that error. |
- // This read-only member can be accessed on any thread. |
- const ResourceType::Type resource_type_; |
- |
- // A flag to make sure we notify the net::URLRequest exactly once. |
- // Should only be accessed on the IO thread |
- bool request_has_been_notified_; |
- |
- DISALLOW_COPY_AND_ASSIGN(SSLErrorHandler); |
-}; |
- |
-#endif // CHROME_BROWSER_SSL_SSL_ERROR_HANDLER_H_ |