Index: content/browser/ssl/ssl_policy.cc |
diff --git a/content/browser/ssl/ssl_policy.cc b/content/browser/ssl/ssl_policy.cc |
index c06c7db852c97d6ca4bc75aaa7d1d608fc54c972..9ea25f924a7670920d67c09ceabbff47e4b32f8e 100644 |
--- a/content/browser/ssl/ssl_policy.cc |
+++ b/content/browser/ssl/ssl_policy.cc |
@@ -32,11 +32,13 @@ SSLPolicy::SSLPolicy(SSLPolicyBackend* backend) |
} |
void SSLPolicy::OnCertError(SSLCertErrorHandler* handler) { |
+ bool expired_previous_decision; |
// First we check if we know the policy for this error. |
net::CertPolicy::Judgment judgment = |
backend_->QueryPolicy(handler->ssl_info().cert.get(), |
handler->request_url().host(), |
- handler->cert_error()); |
+ handler->cert_error(), |
+ &expired_previous_decision); |
if (judgment == net::CertPolicy::ALLOWED) { |
handler->ContinueRequest(); |
@@ -54,7 +56,10 @@ void SSLPolicy::OnCertError(SSLCertErrorHandler* handler) { |
case net::ERR_CERT_WEAK_SIGNATURE_ALGORITHM: |
case net::ERR_CERT_WEAK_KEY: |
case net::ERR_CERT_NAME_CONSTRAINT_VIOLATION: |
- OnCertErrorInternal(handler, !handler->fatal(), handler->fatal()); |
+ OnCertErrorInternal(handler, |
+ !handler->fatal(), |
+ handler->fatal(), |
+ expired_previous_decision); |
break; |
case net::ERR_CERT_NO_REVOCATION_MECHANISM: |
// Ignore this error. |
@@ -70,7 +75,8 @@ void SSLPolicy::OnCertError(SSLCertErrorHandler* handler) { |
case net::ERR_CERT_INVALID: |
case net::ERR_SSL_WEAK_SERVER_EPHEMERAL_DH_KEY: |
case net::ERR_SSL_PINNED_KEY_NOT_IN_CERT_CHAIN: |
- OnCertErrorInternal(handler, false, handler->fatal()); |
+ OnCertErrorInternal( |
+ handler, false, handler->fatal(), expired_previous_decision); |
break; |
default: |
NOTREACHED(); |
@@ -183,7 +189,8 @@ void SSLPolicy::OnAllowCertificate(scoped_refptr<SSLCertErrorHandler> handler, |
void SSLPolicy::OnCertErrorInternal(SSLCertErrorHandler* handler, |
bool overridable, |
- bool strict_enforcement) { |
+ bool strict_enforcement, |
+ bool expired_previous_decision) { |
CertificateRequestResultType result = |
CERTIFICATE_REQUEST_RESULT_TYPE_CONTINUE; |
GetContentClient()->browser()->AllowCertificateError( |
@@ -195,7 +202,9 @@ void SSLPolicy::OnCertErrorInternal(SSLCertErrorHandler* handler, |
handler->resource_type(), |
overridable, |
strict_enforcement, |
- base::Bind(&SSLPolicy::OnAllowCertificate, base::Unretained(this), |
+ expired_previous_decision, |
+ base::Bind(&SSLPolicy::OnAllowCertificate, |
+ base::Unretained(this), |
make_scoped_refptr(handler)), |
&result); |
switch (result) { |