Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / xwalk / application / browser / application_security_policy.h
1 // Copyright (c) 2014 Intel Corporation. All rights reserved.
2 // Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved
3 // Use of this source code is governed by a BSD-style license that can be
4 // found in the LICENSE file.
5
6 #ifndef XWALK_APPLICATION_BROWSER_APPLICATION_SECURITY_POLICY_H_
7 #define XWALK_APPLICATION_BROWSER_APPLICATION_SECURITY_POLICY_H_
8
9 #include <vector>
10
11 #include "url/gurl.h"
12
13 namespace xwalk {
14 namespace application {
15
16 class Application;
17
18 class ApplicationSecurityPolicy {
19  public:
20   enum SecurityMode {
21     NoSecurity,
22     CSP,
23     WARP
24   };
25
26   explicit ApplicationSecurityPolicy(Application* app);
27   virtual ~ApplicationSecurityPolicy();
28
29   bool IsAccessAllowed(const GURL& url) const;
30
31   virtual void Enforce() = 0;
32
33  protected:
34   struct WhitelistEntry {
35     WhitelistEntry(const GURL& url, bool subdomains);
36     GURL url;
37     bool subdomains;
38
39     bool operator==(const WhitelistEntry& o) const {
40       return o.url == url && o.subdomains == subdomains;
41     }
42   };
43
44   void AddWhitelistEntry(const GURL& url, bool subdomains);
45
46   std::vector<WhitelistEntry> whitelist_entries_;
47   Application* app_;
48   bool enabled_;
49 };
50
51 class ApplicationSecurityPolicyWARP : public ApplicationSecurityPolicy {
52  public:
53   explicit ApplicationSecurityPolicyWARP(Application* app);
54   virtual ~ApplicationSecurityPolicyWARP();
55
56   void Enforce() override;
57 };
58
59 class ApplicationSecurityPolicyCSP : public ApplicationSecurityPolicy {
60  public:
61   explicit ApplicationSecurityPolicyCSP(Application* app);
62   virtual ~ApplicationSecurityPolicyCSP();
63
64   void Enforce() override;
65 };
66
67 }  // namespace application
68 }  // namespace xwalk
69
70 #endif  // XWALK_APPLICATION_BROWSER_APPLICATION_SECURITY_POLICY_H_