| 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 "chrome/browser/ssl/ssl_tab_helper.h" | 5 #include "chrome/browser/ssl/ssl_tab_helper.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 113 return cert_.get() ? BUTTON_OK : BUTTON_NONE; | 113 return cert_.get() ? BUTTON_OK : BUTTON_NONE; |
| 114 } | 114 } |
| 115 | 115 |
| 116 string16 SSLCertResultInfoBarDelegate::GetButtonLabel( | 116 string16 SSLCertResultInfoBarDelegate::GetButtonLabel( |
| 117 InfoBarButton button) const { | 117 InfoBarButton button) const { |
| 118 DCHECK_EQ(BUTTON_OK, button); | 118 DCHECK_EQ(BUTTON_OK, button); |
| 119 return l10n_util::GetStringUTF16(IDS_ADD_CERT_SUCCESS_INFOBAR_BUTTON); | 119 return l10n_util::GetStringUTF16(IDS_ADD_CERT_SUCCESS_INFOBAR_BUTTON); |
| 120 } | 120 } |
| 121 | 121 |
| 122 bool SSLCertResultInfoBarDelegate::Accept() { | 122 bool SSLCertResultInfoBarDelegate::Accept() { |
| 123 ShowCertificateViewer( | 123 ShowCertificateViewer(web_contents(), |
| 124 web_contents(), | 124 web_contents()->GetView()->GetTopLevelNativeWindow(), |
| 125 web_contents()->GetView()->GetTopLevelNativeWindow(), | 125 cert_.get()); |
| 126 cert_); | |
| 127 return false; // Hiding the infobar just as the dialog opens looks weird. | 126 return false; // Hiding the infobar just as the dialog opens looks weird. |
| 128 } | 127 } |
| 129 | 128 |
| 130 } // namespace | 129 } // namespace |
| 131 | 130 |
| 132 | 131 |
| 133 // SSLTabHelper::SSLAddCertData ------------------------------------------------ | 132 // SSLTabHelper::SSLAddCertData ------------------------------------------------ |
| 134 | 133 |
| 135 class SSLTabHelper::SSLAddCertData | 134 class SSLTabHelper::SSLAddCertData |
| 136 : public content::NotificationObserver { | 135 : public content::NotificationObserver { |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 210 void SSLTabHelper::ShowClientCertificateRequestDialog( | 209 void SSLTabHelper::ShowClientCertificateRequestDialog( |
| 211 const net::HttpNetworkSession* network_session, | 210 const net::HttpNetworkSession* network_session, |
| 212 net::SSLCertRequestInfo* cert_request_info, | 211 net::SSLCertRequestInfo* cert_request_info, |
| 213 const base::Callback<void(net::X509Certificate*)>& callback) { | 212 const base::Callback<void(net::X509Certificate*)>& callback) { |
| 214 chrome::ShowSSLClientCertificateSelector( | 213 chrome::ShowSSLClientCertificateSelector( |
| 215 web_contents_, network_session, cert_request_info, callback); | 214 web_contents_, network_session, cert_request_info, callback); |
| 216 } | 215 } |
| 217 | 216 |
| 218 void SSLTabHelper::OnVerifyClientCertificateError( | 217 void SSLTabHelper::OnVerifyClientCertificateError( |
| 219 scoped_refptr<SSLAddCertHandler> handler, int error_code) { | 218 scoped_refptr<SSLAddCertHandler> handler, int error_code) { |
| 220 SSLAddCertData* add_cert_data = GetAddCertData(handler); | 219 SSLAddCertData* add_cert_data = GetAddCertData(handler.get()); |
| 221 // Display an infobar with the error message. | 220 // Display an infobar with the error message. |
| 222 // TODO(davidben): Display a more user-friendly error string. | 221 // TODO(davidben): Display a more user-friendly error string. |
| 223 add_cert_data->ShowInfoBar( | 222 add_cert_data->ShowInfoBar( |
| 224 l10n_util::GetStringFUTF16(IDS_ADD_CERT_ERR_INVALID_CERT, | 223 l10n_util::GetStringFUTF16(IDS_ADD_CERT_ERR_INVALID_CERT, |
| 225 base::IntToString16(-error_code), | 224 base::IntToString16(-error_code), |
| 226 ASCIIToUTF16(net::ErrorToString(error_code))), | 225 ASCIIToUTF16(net::ErrorToString(error_code))), |
| 227 NULL); | 226 NULL); |
| 228 } | 227 } |
| 229 | 228 |
| 230 void SSLTabHelper::AskToAddClientCertificate( | 229 void SSLTabHelper::AskToAddClientCertificate( |
| 231 scoped_refptr<SSLAddCertHandler> handler) { | 230 scoped_refptr<SSLAddCertHandler> handler) { |
| 232 NOTREACHED(); // Not implemented yet. | 231 NOTREACHED(); // Not implemented yet. |
| 233 } | 232 } |
| 234 | 233 |
| 235 void SSLTabHelper::OnAddClientCertificateSuccess( | 234 void SSLTabHelper::OnAddClientCertificateSuccess( |
| 236 scoped_refptr<SSLAddCertHandler> handler) { | 235 scoped_refptr<SSLAddCertHandler> handler) { |
| 237 SSLAddCertData* add_cert_data = GetAddCertData(handler); | 236 SSLAddCertData* add_cert_data = GetAddCertData(handler.get()); |
| 238 // Display an infobar to inform the user. | 237 // Display an infobar to inform the user. |
| 239 net::X509Certificate* cert = handler->cert(); | 238 net::X509Certificate* cert = handler->cert(); |
| 240 // TODO(evanm): GetDisplayName should return UTF-16. | 239 // TODO(evanm): GetDisplayName should return UTF-16. |
| 241 add_cert_data->ShowInfoBar( | 240 add_cert_data->ShowInfoBar( |
| 242 l10n_util::GetStringFUTF16(IDS_ADD_CERT_SUCCESS_INFOBAR_LABEL, | 241 l10n_util::GetStringFUTF16(IDS_ADD_CERT_SUCCESS_INFOBAR_LABEL, |
| 243 UTF8ToUTF16(cert->issuer().GetDisplayName())), | 242 UTF8ToUTF16(cert->issuer().GetDisplayName())), |
| 244 cert); | 243 cert); |
| 245 } | 244 } |
| 246 | 245 |
| 247 void SSLTabHelper::OnAddClientCertificateError( | 246 void SSLTabHelper::OnAddClientCertificateError( |
| 248 scoped_refptr<SSLAddCertHandler> handler, int error_code) { | 247 scoped_refptr<SSLAddCertHandler> handler, int error_code) { |
| 249 SSLAddCertData* add_cert_data = GetAddCertData(handler); | 248 SSLAddCertData* add_cert_data = GetAddCertData(handler.get()); |
| 250 // Display an infobar with the error message. | 249 // Display an infobar with the error message. |
| 251 // TODO(davidben): Display a more user-friendly error string. | 250 // TODO(davidben): Display a more user-friendly error string. |
| 252 add_cert_data->ShowInfoBar( | 251 add_cert_data->ShowInfoBar( |
| 253 l10n_util::GetStringFUTF16(IDS_ADD_CERT_ERR_FAILED, | 252 l10n_util::GetStringFUTF16(IDS_ADD_CERT_ERR_FAILED, |
| 254 base::IntToString16(-error_code), | 253 base::IntToString16(-error_code), |
| 255 ASCIIToUTF16(net::ErrorToString(error_code))), | 254 ASCIIToUTF16(net::ErrorToString(error_code))), |
| 256 NULL); | 255 NULL); |
| 257 } | 256 } |
| 258 | 257 |
| 259 void SSLTabHelper::OnAddClientCertificateFinished( | 258 void SSLTabHelper::OnAddClientCertificateFinished( |
| 260 scoped_refptr<SSLAddCertHandler> handler) { | 259 scoped_refptr<SSLAddCertHandler> handler) { |
| 261 // Clean up. | 260 // Clean up. |
| 262 request_id_to_add_cert_data_.erase(handler->network_request_id()); | 261 request_id_to_add_cert_data_.erase(handler->network_request_id()); |
| 263 } | 262 } |
| 264 | 263 |
| 265 SSLTabHelper::SSLAddCertData* | 264 SSLTabHelper::SSLAddCertData* |
| 266 SSLTabHelper::GetAddCertData(SSLAddCertHandler* handler) { | 265 SSLTabHelper::GetAddCertData(SSLAddCertHandler* handler) { |
| 267 // Find/create the slot. | 266 // Find/create the slot. |
| 268 linked_ptr<SSLAddCertData>& ptr_ref = | 267 linked_ptr<SSLAddCertData>& ptr_ref = |
| 269 request_id_to_add_cert_data_[handler->network_request_id()]; | 268 request_id_to_add_cert_data_[handler->network_request_id()]; |
| 270 // Fill it if necessary. | 269 // Fill it if necessary. |
| 271 if (!ptr_ref.get()) | 270 if (!ptr_ref.get()) |
| 272 ptr_ref.reset(new SSLAddCertData(web_contents_)); | 271 ptr_ref.reset(new SSLAddCertData(web_contents_)); |
| 273 return ptr_ref.get(); | 272 return ptr_ref.get(); |
| 274 } | 273 } |
| OLD | NEW |