Source code

Revision control

Other Tools

1
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
3
/* This Source Code Form is subject to the terms of the Mozilla Public
4
* License, v. 2.0. If a copy of the MPL was not distributed with this
5
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6
7
#ifndef DomainPolicy_h__
8
#define DomainPolicy_h__
9
10
#include "nsIDomainPolicy.h"
11
#include "nsTHashtable.h"
12
#include "nsURIHashKey.h"
13
14
namespace mozilla {
15
16
enum DomainSetChangeType {
17
ACTIVATE_POLICY,
18
DEACTIVATE_POLICY,
19
ADD_DOMAIN,
20
REMOVE_DOMAIN,
21
CLEAR_DOMAINS
22
};
23
24
enum DomainSetType {
25
NO_TYPE,
26
BLOCKLIST,
27
SUPER_BLOCKLIST,
28
ALLOWLIST,
29
SUPER_ALLOWLIST
30
};
31
32
class DomainSet final : public nsIDomainSet {
33
public:
34
NS_DECL_ISUPPORTS
35
NS_DECL_NSIDOMAINSET
36
37
explicit DomainSet(DomainSetType aType) : mType(aType) {}
38
39
void CloneSet(nsTArray<RefPtr<nsIURI>>* aDomains);
40
41
protected:
42
virtual ~DomainSet() {}
43
nsTHashtable<nsURIHashKey> mHashTable;
44
DomainSetType mType;
45
};
46
47
class DomainPolicy final : public nsIDomainPolicy {
48
public:
49
NS_DECL_ISUPPORTS
50
NS_DECL_NSIDOMAINPOLICY
51
DomainPolicy();
52
53
private:
54
virtual ~DomainPolicy();
55
56
RefPtr<DomainSet> mBlocklist;
57
RefPtr<DomainSet> mSuperBlocklist;
58
RefPtr<DomainSet> mAllowlist;
59
RefPtr<DomainSet> mSuperAllowlist;
60
};
61
62
} /* namespace mozilla */
63
64
#endif /* DomainPolicy_h__ */