OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 #include "content/browser/ssl/ssl_manager.h" | 5 #include "content/browser/ssl/ssl_manager.h" |
6 | 6 |
7 #include <set> | 7 #include <set> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/strings/utf_string_conversions.h" | 10 #include "base/strings/utf_string_conversions.h" |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
82 } | 82 } |
83 | 83 |
84 // static | 84 // static |
85 void SSLManager::NotifySSLInternalStateChanged(BrowserContext* context) { | 85 void SSLManager::NotifySSLInternalStateChanged(BrowserContext* context) { |
86 SSLManagerSet* managers = static_cast<SSLManagerSet*>( | 86 SSLManagerSet* managers = static_cast<SSLManagerSet*>( |
87 context->GetUserData(kSSLManagerKeyName)); | 87 context->GetUserData(kSSLManagerKeyName)); |
88 | 88 |
89 for (std::set<SSLManager*>::iterator i = managers->get().begin(); | 89 for (std::set<SSLManager*>::iterator i = managers->get().begin(); |
90 i != managers->get().end(); ++i) { | 90 i != managers->get().end(); ++i) { |
91 (*i)->UpdateEntry(NavigationEntryImpl::FromNavigationEntry( | 91 (*i)->UpdateEntry(NavigationEntryImpl::FromNavigationEntry( |
92 (*i)->controller()->GetActiveEntry())); | 92 (*i)->controller()->GetLastCommittedEntry())); |
Charlie Reis
2013/08/16 22:10:14
I like that we're switching to GetLastCommittedEnt
| |
93 } | 93 } |
94 } | 94 } |
95 | 95 |
96 SSLManager::SSLManager(NavigationControllerImpl* controller) | 96 SSLManager::SSLManager(NavigationControllerImpl* controller) |
97 : backend_(controller), | 97 : backend_(controller), |
98 policy_(new SSLPolicy(&backend_)), | 98 policy_(new SSLPolicy(&backend_)), |
99 controller_(controller) { | 99 controller_(controller) { |
100 DCHECK(controller_); | 100 DCHECK(controller_); |
101 | 101 |
102 // Subscribe to various notifications. | 102 // Subscribe to various notifications. |
(...skipping 21 matching lines...) Expand all Loading... | |
124 controller_->GetBrowserContext()->GetUserData(kSSLManagerKeyName)); | 124 controller_->GetBrowserContext()->GetUserData(kSSLManagerKeyName)); |
125 managers->get().erase(this); | 125 managers->get().erase(this); |
126 } | 126 } |
127 | 127 |
128 void SSLManager::DidCommitProvisionalLoad( | 128 void SSLManager::DidCommitProvisionalLoad( |
129 const NotificationDetails& in_details) { | 129 const NotificationDetails& in_details) { |
130 LoadCommittedDetails* details = | 130 LoadCommittedDetails* details = |
131 Details<LoadCommittedDetails>(in_details).ptr(); | 131 Details<LoadCommittedDetails>(in_details).ptr(); |
132 | 132 |
133 NavigationEntryImpl* entry = | 133 NavigationEntryImpl* entry = |
134 NavigationEntryImpl::FromNavigationEntry(controller_->GetActiveEntry()); | 134 NavigationEntryImpl::FromNavigationEntry( |
135 controller_->GetLastCommittedEntry()); | |
135 | 136 |
136 if (details->is_main_frame) { | 137 if (details->is_main_frame) { |
137 if (entry) { | 138 if (entry) { |
138 // Decode the security details. | 139 // Decode the security details. |
139 int ssl_cert_id; | 140 int ssl_cert_id; |
140 net::CertStatus ssl_cert_status; | 141 net::CertStatus ssl_cert_status; |
141 int ssl_security_bits; | 142 int ssl_security_bits; |
142 int ssl_connection_status; | 143 int ssl_connection_status; |
143 DeserializeSecurityInfo(details->serialized_security_info, | 144 DeserializeSecurityInfo(details->serialized_security_info, |
144 &ssl_cert_id, | 145 &ssl_cert_id, |
145 &ssl_cert_status, | 146 &ssl_cert_status, |
146 &ssl_security_bits, | 147 &ssl_security_bits, |
147 &ssl_connection_status); | 148 &ssl_connection_status); |
148 | 149 |
149 // We may not have an entry if this is a navigation to an initial blank | 150 // We may not have an entry if this is a navigation to an initial blank |
150 // page. Reset the SSL information and add the new data we have. | 151 // page. Reset the SSL information and add the new data we have. |
151 entry->GetSSL() = SSLStatus(); | 152 entry->GetSSL() = SSLStatus(); |
152 entry->GetSSL().cert_id = ssl_cert_id; | 153 entry->GetSSL().cert_id = ssl_cert_id; |
153 entry->GetSSL().cert_status = ssl_cert_status; | 154 entry->GetSSL().cert_status = ssl_cert_status; |
154 entry->GetSSL().security_bits = ssl_security_bits; | 155 entry->GetSSL().security_bits = ssl_security_bits; |
155 entry->GetSSL().connection_status = ssl_connection_status; | 156 entry->GetSSL().connection_status = ssl_connection_status; |
156 } | 157 } |
157 } | 158 } |
158 | 159 |
159 UpdateEntry(entry); | 160 UpdateEntry(entry); |
160 } | 161 } |
161 | 162 |
162 void SSLManager::DidDisplayInsecureContent() { | 163 void SSLManager::DidDisplayInsecureContent() { |
163 UpdateEntry( | 164 UpdateEntry( |
164 NavigationEntryImpl::FromNavigationEntry(controller_->GetActiveEntry())); | 165 NavigationEntryImpl::FromNavigationEntry( |
166 controller_->GetLastCommittedEntry())); | |
165 } | 167 } |
166 | 168 |
167 void SSLManager::DidRunInsecureContent(const std::string& security_origin) { | 169 void SSLManager::DidRunInsecureContent(const std::string& security_origin) { |
168 NavigationEntryImpl* navigation_entry = | 170 NavigationEntryImpl* navigation_entry = |
169 NavigationEntryImpl::FromNavigationEntry(controller_->GetActiveEntry()); | 171 NavigationEntryImpl::FromNavigationEntry( |
172 controller_->GetLastCommittedEntry()); | |
170 policy()->DidRunInsecureContent(navigation_entry, security_origin); | 173 policy()->DidRunInsecureContent(navigation_entry, security_origin); |
171 UpdateEntry(navigation_entry); | 174 UpdateEntry(navigation_entry); |
172 } | 175 } |
173 | 176 |
174 void SSLManager::Observe(int type, | 177 void SSLManager::Observe(int type, |
175 const NotificationSource& source, | 178 const NotificationSource& source, |
176 const NotificationDetails& details) { | 179 const NotificationDetails& details) { |
177 // Dispatch by type. | 180 // Dispatch by type. |
178 switch (type) { | 181 switch (type) { |
179 case NOTIFICATION_RESOURCE_RESPONSE_STARTED: | 182 case NOTIFICATION_RESOURCE_RESPONSE_STARTED: |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
240 | 243 |
241 SSLStatus original_ssl_status = entry->GetSSL(); // Copy! | 244 SSLStatus original_ssl_status = entry->GetSSL(); // Copy! |
242 | 245 |
243 policy()->UpdateEntry(entry, controller_->web_contents()); | 246 policy()->UpdateEntry(entry, controller_->web_contents()); |
244 | 247 |
245 if (!entry->GetSSL().Equals(original_ssl_status)) | 248 if (!entry->GetSSL().Equals(original_ssl_status)) |
246 controller_->web_contents()->DidChangeVisibleSSLState(); | 249 controller_->web_contents()->DidChangeVisibleSSLState(); |
247 } | 250 } |
248 | 251 |
249 } // namespace content | 252 } // namespace content |
OLD | NEW |