- add sources.
[platform/framework/web/crosswalk.git] / src / content / browser / ssl / ssl_policy_backend.h
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 #ifndef CONTENT_BROWSER_SSL_SSL_POLICY_BACKEND_H_
6 #define CONTENT_BROWSER_SSL_SSL_POLICY_BACKEND_H_
7
8 #include <string>
9 #include <vector>
10
11 #include "base/basictypes.h"
12 #include "base/strings/string16.h"
13 #include "net/cert/cert_status_flags.h"
14 #include "net/cert/x509_certificate.h"
15
16 namespace content {
17 class NavigationControllerImpl;
18 class SSLHostState;
19
20 class SSLPolicyBackend {
21  public:
22   explicit SSLPolicyBackend(NavigationControllerImpl* controller);
23
24   // Records that a host has run insecure content.
25   void HostRanInsecureContent(const std::string& host, int pid);
26
27   // Returns whether the specified host ran insecure content.
28   bool DidHostRunInsecureContent(const std::string& host, int pid) const;
29
30   // Records that |cert| is not permitted to be used for |host| in the future,
31   // for a specific error type.
32   void DenyCertForHost(net::X509Certificate* cert,
33                        const std::string& host,
34                        net::CertStatus error);
35
36   // Records that |cert| is permitted to be used for |host| in the future, for
37   // a specific error type.
38   void AllowCertForHost(net::X509Certificate* cert,
39                         const std::string& host,
40                         net::CertStatus error);
41
42   // Queries whether |cert| is allowed or denied for |host|.
43   net::CertPolicy::Judgment QueryPolicy(net::X509Certificate* cert,
44                                         const std::string& host,
45                                         net::CertStatus error);
46
47  private:
48   // SSL state specific for each host.
49   SSLHostState* ssl_host_state_;
50
51   NavigationControllerImpl* controller_;
52
53   DISALLOW_COPY_AND_ASSIGN(SSLPolicyBackend);
54 };
55
56 }  // namespace content
57
58 #endif  // CONTENT_BROWSER_SSL_SSL_POLICY_BACKEND_H_