diff options
author | cbentzel@chromium.org <cbentzel@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-05-27 05:24:13 +0000 |
---|---|---|
committer | cbentzel@chromium.org <cbentzel@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-05-27 05:24:13 +0000 |
commit | 18d716d8f53fb2e8b41b84a791af4e57dcff7e4a (patch) | |
tree | 760537fa30df6c8d0e3c8d1eba8cf86928637b77 /content | |
parent | 6ad567b563974edc16284336b395bce4868b337e (diff) | |
download | chromium_src-18d716d8f53fb2e8b41b84a791af4e57dcff7e4a.zip chromium_src-18d716d8f53fb2e8b41b84a791af4e57dcff7e4a.tar.gz chromium_src-18d716d8f53fb2e8b41b84a791af4e57dcff7e4a.tar.bz2 |
Cancel prerender on SSL Client Authentication requests.
This also works for pure prefetch requests.
BUG=70993,82425
TEST=browser_tests --gtest_filter=*PrerenderSSLClient*
Review URL: http://codereview.chromium.org/7016030
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@86975 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content')
-rw-r--r-- | content/browser/renderer_host/resource_dispatcher_host.cc | 5 | ||||
-rw-r--r-- | content/browser/renderer_host/resource_dispatcher_host.h | 7 |
2 files changed, 12 insertions, 0 deletions
diff --git a/content/browser/renderer_host/resource_dispatcher_host.cc b/content/browser/renderer_host/resource_dispatcher_host.cc index ad4ff35..3d96e34 100644 --- a/content/browser/renderer_host/resource_dispatcher_host.cc +++ b/content/browser/renderer_host/resource_dispatcher_host.cc @@ -1096,6 +1096,11 @@ void ResourceDispatcherHost::OnCertificateRequested( net::URLRequest* request, net::SSLCertRequestInfo* cert_request_info) { DCHECK(request); + if (observer_ && !observer_->AcceptSSLClientCertificateRequest( + request, cert_request_info)) { + request->Cancel(); + return; + } if (cert_request_info->client_certs.empty()) { // No need to query the user if there are no certs to choose from. diff --git a/content/browser/renderer_host/resource_dispatcher_host.h b/content/browser/renderer_host/resource_dispatcher_host.h index a2adb144..c241e26 100644 --- a/content/browser/renderer_host/resource_dispatcher_host.h +++ b/content/browser/renderer_host/resource_dispatcher_host.h @@ -72,6 +72,13 @@ class ResourceDispatcherHost : public net::URLRequest::Delegate { // to add or remove load flags. virtual void MutateLoadFlags(int child_id, int route_id, int* load_flags) = 0; + + // Called when an SSL Client Certificate is requested. If false is returned, + // the request is canceled. Otherwise, the certificate is chosen. + virtual bool AcceptSSLClientCertificateRequest( + net::URLRequest* request, + net::SSLCertRequestInfo* cert_request_info) = 0; + protected: Observer() {} virtual ~Observer() {} |