Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / content / browser / ssl / ssl_cert_error_handler.cc
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
3 // found in the LICENSE file.
4
5 #include "content/browser/ssl/ssl_cert_error_handler.h"
6
7 #include "content/browser/ssl/ssl_manager.h"
8 #include "content/browser/ssl/ssl_policy.h"
9 #include "net/cert/cert_status_flags.h"
10 #include "net/cert/x509_certificate.h"
11
12 namespace content {
13
14 SSLCertErrorHandler::SSLCertErrorHandler(
15     const base::WeakPtr<Delegate>& delegate,
16     ResourceType resource_type,
17     const GURL& url,
18     int render_process_id,
19     int render_frame_id,
20     const net::SSLInfo& ssl_info,
21     bool fatal)
22     : SSLErrorHandler(delegate,
23                       resource_type,
24                       url,
25                       render_process_id,
26                       render_frame_id),
27       ssl_info_(ssl_info),
28       cert_error_(net::MapCertStatusToNetError(ssl_info.cert_status)),
29       fatal_(fatal) {
30 }
31
32 SSLCertErrorHandler* SSLCertErrorHandler::AsSSLCertErrorHandler() {
33   return this;
34 }
35
36 void SSLCertErrorHandler::OnDispatchFailed() {
37   // Requests can fail to dispatch because they don't have a WebContents. See
38   // <http://crbug.com/86537>. In this case we have to make a decision in this
39   // function, so we ignore revocation check failures.
40   if (net::IsCertStatusMinorError(ssl_info().cert_status)) {
41     ContinueRequest();
42   } else {
43     CancelRequest();
44   }
45 }
46
47 void SSLCertErrorHandler::OnDispatched() {
48   manager_->policy()->OnCertError(this);
49 }
50
51 SSLCertErrorHandler::~SSLCertErrorHandler() {}
52
53 }  // namespace content