tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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__ */