Chromium Code Reviews| Index: chrome/browser/ui/cocoa/ssl_client_certificate_selector.mm |
| =================================================================== |
| --- chrome/browser/ui/cocoa/ssl_client_certificate_selector.mm (revision 121323) |
| +++ chrome/browser/ui/cocoa/ssl_client_certificate_selector.mm (working copy) |
| @@ -14,11 +14,12 @@ |
| #include "base/string_util.h" |
| #include "base/sys_string_conversions.h" |
| #include "base/utf_string_conversions.h" |
| +#include "chrome/browser/ssl/ssl_client_auth_observer.h" |
| #import "chrome/browser/ui/cocoa/constrained_window_mac.h" |
| #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" |
| -#include "content/browser/ssl/ssl_client_auth_handler.h" |
| #include "content/public/browser/browser_thread.h" |
| #include "grit/generated_resources.h" |
| +#include "net/base/ssl_cert_request_info.h" |
| #include "net/base/x509_certificate.h" |
| #include "ui/base/l10n/l10n_util_mac.h" |
| @@ -38,10 +39,6 @@ |
| @interface SSLClientCertificateSelectorCocoa : NSObject { |
| @private |
| - // The handler to report back to. |
| - scoped_refptr<SSLClientAuthHandler> handler_; |
| - // The certificate request we serve. |
| - scoped_refptr<net::SSLCertRequestInfo> certRequestInfo_; |
| // The list of identities offered to the user. |
| scoped_nsobject<NSMutableArray> identities_; |
| // The corresponding list of certificates. |
| @@ -52,8 +49,9 @@ |
| scoped_ptr<NotificationProxy> observer_; |
| } |
| -- (id)initWithHandler:(SSLClientAuthHandler*)handler |
| - certRequestInfo:(net::SSLCertRequestInfo*)certRequestInfo; |
| +- (id)initObserver:(const net::HttpNetworkSession*)networkSession |
|
Avi (use Gerrit)
2012/02/13 20:10:37
initWithObserver (and all the places that's used)
jam
2012/02/13 20:59:00
Done.
|
| + certRequestInfo:(net::SSLCertRequestInfo*)certRequestInfo |
| + callback:(const base::Callback<void(net::X509Certificate*)>&) callback; |
|
Avi (use Gerrit)
2012/02/13 20:10:37
80 columns. Even in ObjC. Also, there's no space a
jam
2012/02/13 20:59:00
Done.
|
| - (void)onNotification; |
| - (void)displayDialog:(TabContentsWrapper*)wrapper; |
| @end |
| @@ -113,10 +111,11 @@ |
| class NotificationProxy : public SSLClientAuthObserver { |
| public: |
| - NotificationProxy(net::SSLCertRequestInfo* cert_request_info, |
| - SSLClientAuthHandler* handler, |
| + NotificationProxy(const net::HttpNetworkSession* network_session, |
| + net::SSLCertRequestInfo* cert_request_info, |
| + const base::Callback<void(net::X509Certificate*)>& callback, |
| SSLClientCertificateSelectorCocoa* controller) |
| - : SSLClientAuthObserver(cert_request_info, handler), |
| + : SSLClientAuthObserver(network_session, cert_request_info, callback), |
| controller_(controller) { |
| } |
| @@ -135,13 +134,15 @@ |
| void ShowSSLClientCertificateSelector( |
| TabContentsWrapper* wrapper, |
| + const net::HttpNetworkSession* network_session, |
| net::SSLCertRequestInfo* cert_request_info, |
| - SSLClientAuthHandler* delegate) { |
| + const base::Callback<void(net::X509Certificate*)>& callback) { |
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| SSLClientCertificateSelectorCocoa* selector = |
| [[[SSLClientCertificateSelectorCocoa alloc] |
| - initWithHandler:delegate |
| - certRequestInfo:cert_request_info] autorelease]; |
| + initObserver:network_session |
| + certRequestInfo:cert_request_info |
| + callback:callback] autorelease]; |
| [selector displayDialog:wrapper]; |
| } |
| @@ -149,15 +150,15 @@ |
| @implementation SSLClientCertificateSelectorCocoa |
| -- (id)initWithHandler:(SSLClientAuthHandler*)handler |
| - certRequestInfo:(net::SSLCertRequestInfo*)certRequestInfo { |
| - DCHECK(handler); |
| +- (id)initObserver:(const net::HttpNetworkSession*)networkSession |
| + certRequestInfo:(net::SSLCertRequestInfo*)certRequestInfo |
| + callback:(const base::Callback<void(net::X509Certificate*)>&) callback { |
|
Avi (use Gerrit)
2012/02/13 20:10:37
same 80 col issue, same removal of space to fix it
jam
2012/02/13 20:59:00
Done.
|
| + DCHECK(networkSession); |
| DCHECK(certRequestInfo); |
| if ((self = [super init])) { |
| - handler_ = handler; |
| - certRequestInfo_ = certRequestInfo; |
| window_ = NULL; |
| - observer_.reset(new NotificationProxy(certRequestInfo, handler, self)); |
| + observer_.reset(new NotificationProxy( |
| + networkSession, certRequestInfo, callback, self)); |
| } |
| return self; |
| } |
| @@ -179,33 +180,29 @@ |
| // Finally, tell the backend which identity (or none) the user selected. |
| observer_->StopObserving(); |
| - if (handler_) { |
| - handler_->CertificateSelected(cert); |
| - handler_ = NULL; |
| - } |
| + observer_->CertificateSelected(cert); |
| // Close the constrained window. |
| DCHECK(window_); |
| window_->CloseConstrainedWindow(); |
| } |
| - (void)onNotification { |
| - handler_ = NULL; |
| window_->CloseConstrainedWindow(); |
| } |
| - (void)displayDialog:(TabContentsWrapper*)wrapper { |
| DCHECK(!window_); |
| // Create an array of CFIdentityRefs for the certificates: |
| - size_t numCerts = certRequestInfo_->client_certs.size(); |
| + size_t numCerts = observer_->cert_request_info()->client_certs.size(); |
| identities_.reset([[NSMutableArray alloc] initWithCapacity:numCerts]); |
| for (size_t i = 0; i < numCerts; ++i) { |
| SecCertificateRef cert; |
| - cert = certRequestInfo_->client_certs[i]->os_cert_handle(); |
| + cert = observer_->cert_request_info()->client_certs[i]->os_cert_handle(); |
| SecIdentityRef identity; |
| if (SecIdentityCreateWithCertificate(NULL, cert, &identity) == noErr) { |
| [identities_ addObject:(id)identity]; |
| CFRelease(identity); |
| - certificates_.push_back(certRequestInfo_->client_certs[i]); |
| + certificates_.push_back(observer_->cert_request_info()->client_certs[i]); |
| } |
| } |
| @@ -213,7 +210,7 @@ |
| NSString* title = l10n_util::GetNSString(IDS_CLIENT_CERT_DIALOG_TITLE); |
| NSString* message = l10n_util::GetNSStringF( |
| IDS_CLIENT_CERT_DIALOG_TEXT, |
| - ASCIIToUTF16(certRequestInfo_->host_and_port)); |
| + ASCIIToUTF16(observer_->cert_request_info()->host_and_port)); |
| // Create and set up a system choose-identity panel. |
| SFChooseIdentityPanel* panel = [[SFChooseIdentityPanel alloc] init]; |