Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(349)

Side by Side Diff: chrome/browser/ssl/ssl_manager.h

Issue 2126005: Revert 47357 - Revert 47347 (Original patch reviewed at http://codereview.ch... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 10 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CHROME_BROWSER_SSL_SSL_MANAGER_H_ 5 #ifndef CHROME_BROWSER_SSL_SSL_MANAGER_H_
6 #define CHROME_BROWSER_SSL_SSL_MANAGER_H_ 6 #define CHROME_BROWSER_SSL_SSL_MANAGER_H_
7 7
8 #include <string> 8 #include <string>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 20 matching lines...) Expand all
31 // The SSLManager SSLManager controls the SSL UI elements in a TabContents. It 31 // The SSLManager SSLManager controls the SSL UI elements in a TabContents. It
32 // listens for various events that influence when these elements should or 32 // listens for various events that influence when these elements should or
33 // should not be displayed and adjusts them accordingly. 33 // should not be displayed and adjusts them accordingly.
34 // 34 //
35 // There is one SSLManager per tab. 35 // There is one SSLManager per tab.
36 // The security state (secure/insecure) is stored in the navigation entry. 36 // The security state (secure/insecure) is stored in the navigation entry.
37 // Along with it are stored any SSL error code and the associated cert. 37 // Along with it are stored any SSL error code and the associated cert.
38 38
39 class SSLManager : public NotificationObserver { 39 class SSLManager : public NotificationObserver {
40 public: 40 public:
41 // Construct an SSLManager for the specified tab.
42 // If |delegate| is NULL, SSLPolicy::GetDefaultPolicy() is used.
43 explicit SSLManager(NavigationController* controller);
44 ~SSLManager();
45
46 SSLPolicy* policy() { return policy_.get(); }
47 SSLPolicyBackend* backend() { return &backend_; }
48
49 // The navigation controller associated with this SSLManager. The
50 // NavigationController is guaranteed to outlive the SSLManager.
51 NavigationController* controller() { return controller_; }
52
53 static void RegisterUserPrefs(PrefService* prefs); 41 static void RegisterUserPrefs(PrefService* prefs);
54 42
55 // Entry point for SSLCertificateErrors. This function begins the process 43 // Entry point for SSLCertificateErrors. This function begins the process
56 // of resolving a certificate error during an SSL connection. SSLManager 44 // of resolving a certificate error during an SSL connection. SSLManager
57 // will adjust the security UI and either call |Cancel| or 45 // will adjust the security UI and either call |Cancel| or
58 // |ContinueDespiteLastError| on the URLRequest. 46 // |ContinueDespiteLastError| on the URLRequest.
59 // 47 //
60 // Called on the IO thread. 48 // Called on the IO thread.
61 static void OnSSLCertificateError(ResourceDispatcherHost* resource_dispatcher, 49 static void OnSSLCertificateError(ResourceDispatcherHost* resource_dispatcher,
62 URLRequest* request, 50 URLRequest* request,
63 int cert_error, 51 int cert_error,
64 net::X509Certificate* cert); 52 net::X509Certificate* cert);
65 53
66 // Mixed content entry points. 54 // Called when SSL state for a host or tab changes. Broadcasts the
67 void DidDisplayInsecureContent(); 55 // SSL_INTERNAL_STATE_CHANGED notification.
68 void DidRunInsecureContent(const std::string& security_origin); 56 static void NotifySSLInternalStateChanged();
69
70 // Entry point for navigation. This function begins the process of updating
71 // the security UI when the main frame navigates to a new URL.
72 //
73 // Called on the UI thread.
74 virtual void Observe(NotificationType type,
75 const NotificationSource& source,
76 const NotificationDetails& details);
77
78 // This entry point is called directly (instead of via the notification
79 // service) because we need more precise control of the order in which folks
80 // are notified of this event.
81 void DidCommitProvisionalLoad(const NotificationDetails& details);
82
83 // Called to determine if there were any processed SSL errors from request.
84 bool ProcessedSSLErrorFromRequest() const;
85 57
86 // Convenience methods for serializing/deserializing the security info. 58 // Convenience methods for serializing/deserializing the security info.
87 static std::string SerializeSecurityInfo(int cert_id, 59 static std::string SerializeSecurityInfo(int cert_id,
88 int cert_status, 60 int cert_status,
89 int security_bits); 61 int security_bits);
90 static bool DeserializeSecurityInfo(const std::string& state, 62 static bool DeserializeSecurityInfo(const std::string& state,
91 int* cert_id, 63 int* cert_id,
92 int* cert_status, 64 int* cert_status,
93 int* security_bits); 65 int* security_bits);
94 66
95 // Returns "<organization_name> [<country>]". 67 // Returns "<organization_name> [<country>]".
96 static std::wstring GetEVCertName(const net::X509Certificate& cert); 68 static std::wstring GetEVCertName(const net::X509Certificate& cert);
97 69
70 // Construct an SSLManager for the specified tab.
71 // If |delegate| is NULL, SSLPolicy::GetDefaultPolicy() is used.
72 explicit SSLManager(NavigationController* controller);
73 ~SSLManager();
74
75 SSLPolicy* policy() { return policy_.get(); }
76 SSLPolicyBackend* backend() { return &backend_; }
77
78 // The navigation controller associated with this SSLManager. The
79 // NavigationController is guaranteed to outlive the SSLManager.
80 NavigationController* controller() { return controller_; }
81
82 // This entry point is called directly (instead of via the notification
83 // service) because we need more precise control of the order in which folks
84 // are notified of this event.
85 void DidCommitProvisionalLoad(const NotificationDetails& details);
86
87 // Mixed content entry point.
88 void DidRunInsecureContent(const std::string& security_origin);
89
90 // Called to determine if there were any processed SSL errors from request.
91 bool ProcessedSSLErrorFromRequest() const;
92
93 // Entry point for navigation. This function begins the process of updating
94 // the security UI when the main frame navigates to a new URL.
95 //
96 // Called on the UI thread.
97 virtual void Observe(NotificationType type,
98 const NotificationSource& source,
99 const NotificationDetails& details);
100
98 private: 101 private:
99 // SSLMessageInfo contains the information necessary for displaying a message 102 // SSLMessageInfo contains the information necessary for displaying a message
100 // in an info-bar. 103 // in an info-bar.
101 struct SSLMessageInfo { 104 struct SSLMessageInfo {
102 public: 105 public:
103 explicit SSLMessageInfo(const std::wstring& text) 106 explicit SSLMessageInfo(const std::wstring& text)
104 : message(text), 107 : message(text),
105 action(NULL) { } 108 action(NULL) { }
106 109
107 SSLMessageInfo(const std::wstring& message, 110 SSLMessageInfo(const std::wstring& message,
(...skipping 15 matching lines...) Expand all
123 // Entry points for notifications to which we subscribe. Note that 126 // Entry points for notifications to which we subscribe. Note that
124 // DidCommitProvisionalLoad uses the abstract NotificationDetails type since 127 // DidCommitProvisionalLoad uses the abstract NotificationDetails type since
125 // the type we need is in NavigationController which would create a circular 128 // the type we need is in NavigationController which would create a circular
126 // header file dependency. 129 // header file dependency.
127 void DidLoadFromMemoryCache(LoadFromMemoryCacheDetails* details); 130 void DidLoadFromMemoryCache(LoadFromMemoryCacheDetails* details);
128 void DidFailProvisionalLoadWithError(ProvisionalLoadDetails* details); 131 void DidFailProvisionalLoadWithError(ProvisionalLoadDetails* details);
129 void DidStartResourceResponse(ResourceRequestDetails* details); 132 void DidStartResourceResponse(ResourceRequestDetails* details);
130 void DidReceiveResourceRedirect(ResourceRedirectDetails* details); 133 void DidReceiveResourceRedirect(ResourceRedirectDetails* details);
131 void DidChangeSSLInternalState(); 134 void DidChangeSSLInternalState();
132 135
133 // Dispatch NotificationType::SSL_VISIBLE_STATE_CHANGED notification.
134 void DispatchSSLVisibleStateChanged();
135
136 // Update the NavigationEntry with our current state. 136 // Update the NavigationEntry with our current state.
137 void UpdateEntry(NavigationEntry* entry); 137 void UpdateEntry(NavigationEntry* entry);
138 138
139 // The backend for the SSLPolicy to actuate its decisions. 139 // The backend for the SSLPolicy to actuate its decisions.
140 SSLPolicyBackend backend_; 140 SSLPolicyBackend backend_;
141 141
142 // The SSLPolicy instance for this manager. 142 // The SSLPolicy instance for this manager.
143 scoped_ptr<SSLPolicy> policy_; 143 scoped_ptr<SSLPolicy> policy_;
144 144
145 // The NavigationController that owns this SSLManager. We are responsible 145 // The NavigationController that owns this SSLManager. We are responsible
146 // for the security UI of this tab. 146 // for the security UI of this tab.
147 NavigationController* controller_; 147 NavigationController* controller_;
148 148
149 // Handles registering notifications with the NotificationService. 149 // Handles registering notifications with the NotificationService.
150 NotificationRegistrar registrar_; 150 NotificationRegistrar registrar_;
151 151
152 DISALLOW_COPY_AND_ASSIGN(SSLManager); 152 DISALLOW_COPY_AND_ASSIGN(SSLManager);
153 }; 153 };
154 154
155 #endif // CHROME_BROWSER_SSL_SSL_MANAGER_H_ 155 #endif // CHROME_BROWSER_SSL_SSL_MANAGER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698