- add sources.
[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     const GlobalRequestID& id,
17     ResourceType::Type resource_type,
18     const GURL& url,
19     int render_process_id,
20     int render_view_id,
21     const net::SSLInfo& ssl_info,
22     bool fatal)
23     : SSLErrorHandler(delegate, id, resource_type, url, render_process_id,
24           render_view_id),
25       ssl_info_(ssl_info),
26       cert_error_(net::MapCertStatusToNetError(ssl_info.cert_status)),
27       fatal_(fatal) {
28 }
29
30 SSLCertErrorHandler* SSLCertErrorHandler::AsSSLCertErrorHandler() {
31   return this;
32 }
33
34 void SSLCertErrorHandler::OnDispatchFailed() {
35   // Requests can fail to dispatch because they don't have a WebContents. See
36   // <http://crbug.com/86537>. In this case we have to make a decision in this
37   // function, so we ignore revocation check failures.
38   if (net::IsCertStatusMinorError(ssl_info().cert_status)) {
39     ContinueRequest();
40   } else {
41     CancelRequest();
42   }
43 }
44
45 void SSLCertErrorHandler::OnDispatched() {
46   manager_->policy()->OnCertError(this);
47 }
48
49 SSLCertErrorHandler::~SSLCertErrorHandler() {}
50
51 }  // namespace content