Chromium Code Reviews| 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..6c6f1306ae3e38c540ed8cf4048a0be504aa3eef 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 |
|
jam
2016/10/05 16:36:02
nit: extra space after SSLManager
estark
2016/10/05 16:53:04
Done.
|
| // 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); |
| }; |