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

Side by Side Diff: content/browser/ssl/ssl_client_auth_handler.cc

Issue 873723003: Follow-up changes to https://codereview.chromium.org/795773002/ (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 10 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
OLDNEW
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_client_auth_handler.h" 5 #include "content/browser/ssl/ssl_client_auth_handler.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "content/public/browser/browser_thread.h" 9 #include "content/public/browser/browser_thread.h"
10 #include "content/public/browser/content_browser_client.h" 10 #include "content/public/browser/content_browser_client.h"
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
49 scoped_ptr<net::ClientCertStore> client_cert_store, 49 scoped_ptr<net::ClientCertStore> client_cert_store,
50 net::SSLCertRequestInfo* cert_request_info) 50 net::SSLCertRequestInfo* cert_request_info)
51 : handler_(handler), 51 : handler_(handler),
52 client_cert_store_(client_cert_store.Pass()), 52 client_cert_store_(client_cert_store.Pass()),
53 cert_request_info_(cert_request_info) {} 53 cert_request_info_(cert_request_info) {}
54 54
55 bool has_client_cert_store() const { return client_cert_store_; } 55 bool has_client_cert_store() const { return client_cert_store_; }
56 56
57 void GetClientCerts() { 57 void GetClientCerts() {
58 if (client_cert_store_) { 58 if (client_cert_store_) {
59 // TODO(davidben): This is still a cyclical ownership where
60 // GetClientCerts' requirement that |client_cert_store_| remains alive
61 // until the call completes is maintained by the reference held in the
62 // callback.
59 client_cert_store_->GetClientCerts( 63 client_cert_store_->GetClientCerts(
60 *cert_request_info_, &cert_request_info_->client_certs, 64 *cert_request_info_, &cert_request_info_->client_certs,
61 base::Bind(&SSLClientAuthHandler::Core::DidGetClientCerts, this)); 65 base::Bind(&SSLClientAuthHandler::Core::DidGetClientCerts, this));
62 } else { 66 } else {
63 DidGetClientCerts(); 67 DidGetClientCerts();
64 } 68 }
65 } 69 }
66 70
67 private: 71 private:
68 friend class base::RefCountedThreadSafe<Core>; 72 friend class base::RefCountedThreadSafe<Core>;
69 73
70 ~Core() {} 74 ~Core() {}
71 75
72 // Called when |client_cert_store_| is done retrieving the cert list. 76 // Called when |client_cert_store_| is done retrieving the cert list.
73 void DidGetClientCerts() { 77 void DidGetClientCerts() {
74 if (handler_) 78 if (handler_)
75 handler_->DidGetClientCerts(); 79 handler_->DidGetClientCerts();
76 } 80 }
77 81
78 base::WeakPtr<SSLClientAuthHandler> handler_; 82 base::WeakPtr<SSLClientAuthHandler> handler_;
79 scoped_ptr<net::ClientCertStore> client_cert_store_; 83 scoped_ptr<net::ClientCertStore> client_cert_store_;
80 scoped_refptr<net::SSLCertRequestInfo> cert_request_info_; 84 scoped_refptr<net::SSLCertRequestInfo> cert_request_info_;
81 }; 85 };
82 86
83 SSLClientAuthHandler::SSLClientAuthHandler( 87 SSLClientAuthHandler::SSLClientAuthHandler(
84 scoped_ptr<net::ClientCertStore> client_cert_store, 88 scoped_ptr<net::ClientCertStore> client_cert_store,
85 net::URLRequest* request, 89 net::URLRequest* request,
86 net::SSLCertRequestInfo* cert_request_info, 90 net::SSLCertRequestInfo* cert_request_info,
87 const SSLClientAuthHandler::CertificateCallback& callback) 91 const SSLClientAuthHandler::CertificateCallback& callback)
88 : core_(nullptr), 92 : request_(request),
89 request_(request),
90 cert_request_info_(cert_request_info), 93 cert_request_info_(cert_request_info),
91 callback_(callback), 94 callback_(callback),
92 weak_factory_(this) { 95 weak_factory_(this) {
93 DCHECK_CURRENTLY_ON(BrowserThread::IO); 96 DCHECK_CURRENTLY_ON(BrowserThread::IO);
94 97
95 core_ = new Core(weak_factory_.GetWeakPtr(), client_cert_store.Pass(), 98 core_ = new Core(weak_factory_.GetWeakPtr(), client_cert_store.Pass(),
96 cert_request_info_.get()); 99 cert_request_info_.get());
97 } 100 }
98 101
99 SSLClientAuthHandler::~SSLClientAuthHandler() { 102 SSLClientAuthHandler::~SSLClientAuthHandler() {
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
139 142
140 void SSLClientAuthHandler::CertificateSelected(net::X509Certificate* cert) { 143 void SSLClientAuthHandler::CertificateSelected(net::X509Certificate* cert) {
141 DVLOG(1) << this << " DoCertificateSelected " << cert; 144 DVLOG(1) << this << " DoCertificateSelected " << cert;
142 DCHECK_CURRENTLY_ON(BrowserThread::IO); 145 DCHECK_CURRENTLY_ON(BrowserThread::IO);
143 146
144 callback_.Run(cert); 147 callback_.Run(cert);
145 // |this| may be deleted at this point. 148 // |this| may be deleted at this point.
146 } 149 }
147 150
148 } // namespace content 151 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/ssl/ssl_client_auth_handler.h ('k') | content/public/browser/content_browser_client.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698