| Index: content/browser/loader/resource_loader.cc
|
| diff --git a/content/browser/loader/resource_loader.cc b/content/browser/loader/resource_loader.cc
|
| index a45229ee70ec4df164d8686cd132b5e862d3ae64..e4716dd71ef3d3f0df767345db882f3ff4863b3c 100644
|
| --- a/content/browser/loader/resource_loader.cc
|
| +++ b/content/browser/loader/resource_loader.cc
|
| @@ -21,6 +21,8 @@
|
| #include "content/public/common/content_switches.h"
|
| #include "content/public/common/resource_response.h"
|
| #include "content/public/common/url_constants.h"
|
| +#include "net/base/client_cert_store.h"
|
| +#include "net/base/client_cert_store_impl.h"
|
| #include "net/base/load_flags.h"
|
| #include "net/http/http_response_headers.h"
|
| #include "webkit/appcache/appcache_interceptor.h"
|
| @@ -58,16 +60,12 @@ void PopulateResourceResponse(net::URLRequest* request,
|
| ResourceLoader::ResourceLoader(scoped_ptr<net::URLRequest> request,
|
| scoped_ptr<ResourceHandler> handler,
|
| ResourceLoaderDelegate* delegate)
|
| - : deferred_stage_(DEFERRED_NONE),
|
| - request_(request.Pass()),
|
| - handler_(handler.Pass()),
|
| - delegate_(delegate),
|
| - last_upload_position_(0),
|
| - waiting_for_upload_progress_ack_(false),
|
| - is_transferring_(false),
|
| - weak_ptr_factory_(this) {
|
| - request_->set_delegate(this);
|
| - handler_->SetController(this);
|
| + : weak_ptr_factory_(this) {
|
| + scoped_ptr<net::ClientCertStore> client_cert_store;
|
| +#if !defined(USE_OPENSSL)
|
| + client_cert_store.reset(new net::ClientCertStoreImpl());
|
| +#endif
|
| + Init(request.Pass(), handler.Pass(), delegate, client_cert_store.Pass());
|
| }
|
|
|
| ResourceLoader::~ResourceLoader() {
|
| @@ -195,6 +193,32 @@ void ResourceLoader::OnUploadProgressACK() {
|
| waiting_for_upload_progress_ack_ = false;
|
| }
|
|
|
| +ResourceLoader::ResourceLoader(
|
| + scoped_ptr<net::URLRequest> request,
|
| + scoped_ptr<ResourceHandler> handler,
|
| + ResourceLoaderDelegate* delegate,
|
| + scoped_ptr<net::ClientCertStore> client_cert_store)
|
| + : weak_ptr_factory_(this) {
|
| + Init(request.Pass(), handler.Pass(), delegate, client_cert_store.Pass());
|
| +}
|
| +
|
| +void ResourceLoader::Init(scoped_ptr<net::URLRequest> request,
|
| + scoped_ptr<ResourceHandler> handler,
|
| + ResourceLoaderDelegate* delegate,
|
| + scoped_ptr<net::ClientCertStore> client_cert_store) {
|
| + deferred_stage_ = DEFERRED_NONE;
|
| + request_ = request.Pass();
|
| + handler_ = handler.Pass();
|
| + delegate_ = delegate;
|
| + last_upload_position_ = 0;
|
| + waiting_for_upload_progress_ack_ = false;
|
| + is_transferring_ = false;
|
| + client_cert_store_ = client_cert_store.Pass();
|
| +
|
| + request_->set_delegate(this);
|
| + handler_->SetController(this);
|
| +}
|
| +
|
| void ResourceLoader::OnReceivedRedirect(net::URLRequest* unused,
|
| const GURL& new_url,
|
| bool* defer) {
|
| @@ -269,11 +293,14 @@ void ResourceLoader::OnCertificateRequested(
|
| return;
|
| }
|
|
|
| +#if !defined(USE_OPENSSL)
|
| + client_cert_store_->GetClientCerts(*cert_info, &cert_info->client_certs);
|
| if (cert_info->client_certs.empty()) {
|
| // No need to query the user if there are no certs to choose from.
|
| request_->ContinueWithCertificate(NULL);
|
| return;
|
| }
|
| +#endif
|
|
|
| DCHECK(!ssl_client_auth_handler_) <<
|
| "OnCertificateRequested called with ssl_client_auth_handler pending";
|
|
|