DomainPolicy.h (1377B)
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 "nsTHashSet.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 nsTHashSet<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__ */