| Index: content/browser/ssl/ssl_manager.h
|
| diff --git a/content/browser/ssl/ssl_manager.h b/content/browser/ssl/ssl_manager.h
|
| index 493d0bad6393fad7bc547aa3de099d0d16180ab3..99d9845c62a3b89ee5cf22b384b9d4b7cdaaaa19 100644
|
| --- a/content/browser/ssl/ssl_manager.h
|
| +++ b/content/browser/ssl/ssl_manager.h
|
| @@ -11,7 +11,6 @@
|
| #include "base/macros.h"
|
| #include "base/memory/weak_ptr.h"
|
| #include "content/browser/ssl/ssl_error_handler.h"
|
| -#include "content/browser/ssl/ssl_policy_backend.h"
|
| #include "content/common/content_export.h"
|
| #include "content/public/browser/global_request_id.h"
|
| #include "net/base/net_errors.h"
|
| @@ -26,19 +25,16 @@ namespace content {
|
| class BrowserContext;
|
| class NavigationEntryImpl;
|
| class NavigationControllerImpl;
|
| -class SSLPolicy;
|
| +class SSLHostStateDelegate;
|
| struct LoadCommittedDetails;
|
| -struct ResourceRedirectDetails;
|
| -struct ResourceRequestDetails;
|
|
|
| -// The SSLManager SSLManager controls the SSL UI elements in a WebContents. It
|
| +// The SSLManager controls the SSL UI elements in a WebContents. It
|
| // listens for various events that influence when these elements should or
|
| // should not be displayed and adjusts them accordingly.
|
| //
|
| // There is one SSLManager per tab.
|
| // The security state (secure/insecure) is stored in the navigation entry.
|
| // Along with it are stored any SSL error code and the associated cert.
|
| -
|
| class CONTENT_EXPORT SSLManager {
|
| public:
|
| // Entry point for SSLCertificateErrors. This function begins the process
|
| @@ -70,20 +66,17 @@ class CONTENT_EXPORT SSLManager {
|
| static void NotifySSLInternalStateChanged(BrowserContext* context);
|
|
|
| // Construct an SSLManager for the specified tab.
|
| - // If |delegate| is NULL, SSLPolicy::GetDefaultPolicy() is used.
|
| explicit SSLManager(NavigationControllerImpl* controller);
|
| virtual ~SSLManager();
|
|
|
| - SSLPolicy* policy() { return policy_.get(); }
|
| - SSLPolicyBackend* backend() { return &backend_; }
|
| -
|
| // The navigation controller associated with this SSLManager. The
|
| // NavigationController is guaranteed to outlive the SSLManager.
|
| NavigationControllerImpl* controller() { return controller_; }
|
|
|
| void DidCommitProvisionalLoad(const LoadCommittedDetails& details);
|
| - void DidStartResourceResponse(const ResourceRequestDetails& details);
|
| - void DidReceiveResourceRedirect(const ResourceRedirectDetails& details);
|
| + void DidStartResourceResponse(const GURL& url,
|
| + bool has_certificate,
|
| + net::CertStatus ssl_cert_status);
|
|
|
| // Entry point for insecure mixed content (loaded over HTTP).
|
| void DidRunInsecureContent(const GURL& security_origin);
|
| @@ -91,7 +84,29 @@ class CONTENT_EXPORT SSLManager {
|
| // Entry point for content loaded with HTTPS certificate errors.
|
| void DidRunContentWithCertErrors(const GURL& security_origin);
|
|
|
| + // An error occurred with the certificate in an SSL connection.
|
| + void OnCertError(std::unique_ptr<SSLErrorHandler> handler);
|
| +
|
| private:
|
| + enum OnCertErrorInternalOptionsMask {
|
| + OVERRIDABLE = 1 << 0,
|
| + STRICT_ENFORCEMENT = 1 << 1,
|
| + EXPIRED_PREVIOUS_DECISION = 1 << 2
|
| + };
|
| +
|
| + // Helper method for handling certificate errors.
|
| + //
|
| + // Options should be a bitmask combination of OnCertErrorInternalOptionsMask.
|
| + // OVERRIDABLE indicates whether or not the user could (assuming perfect
|
| + // knowledge) successfully override the error and still get the security
|
| + // guarantees of TLS. STRICT_ENFORCEMENT indicates whether or not the site the
|
| + // user is trying to connect to has requested strict enforcement of
|
| + // certificate validation (e.g. with HTTP Strict-Transport-Security).
|
| + // EXPIRED_PREVIOUS_DECISION indicates whether a user decision had been
|
| + // previously made but the decision has expired.
|
| + void OnCertErrorInternal(std::unique_ptr<SSLErrorHandler> handler,
|
| + int options_mask);
|
| +
|
| // Updates the NavigationEntry with our current state. This will
|
| // notify the WebContents of an SSL state change if a change was
|
| // actually made.
|
| @@ -100,16 +115,13 @@ class CONTENT_EXPORT SSLManager {
|
| // Notifies the WebContents that the SSL state changed.
|
| void NotifyDidChangeVisibleSSLState();
|
|
|
| - // The backend for the SSLPolicy to actuate its decisions.
|
| - SSLPolicyBackend backend_;
|
| -
|
| - // The SSLPolicy instance for this manager.
|
| - std::unique_ptr<SSLPolicy> policy_;
|
| -
|
| // The NavigationController that owns this SSLManager. We are responsible
|
| // for the security UI of this tab.
|
| NavigationControllerImpl* controller_;
|
|
|
| + // Delegate that manages SSL state specific to each host.
|
| + SSLHostStateDelegate* ssl_host_state_delegate_;
|
| +
|
| DISALLOW_COPY_AND_ASSIGN(SSLManager);
|
| };
|
|
|
|
|