summaryrefslogtreecommitdiffstats
path: root/content
diff options
context:
space:
mode:
authorcbentzel@chromium.org <cbentzel@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-05-27 05:24:13 +0000
committercbentzel@chromium.org <cbentzel@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-05-27 05:24:13 +0000
commit18d716d8f53fb2e8b41b84a791af4e57dcff7e4a (patch)
tree760537fa30df6c8d0e3c8d1eba8cf86928637b77 /content
parent6ad567b563974edc16284336b395bce4868b337e (diff)
downloadchromium_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.cc5
-rw-r--r--content/browser/renderer_host/resource_dispatcher_host.h7
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() {}