UrlClassifierFeatureBase.h (2794B)
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 mozilla_net_UrlClassifierFeatureBase_h 8 #define mozilla_net_UrlClassifierFeatureBase_h 9 10 #include "nsIUrlClassifierFeature.h" 11 #include "nsIUrlClassifierExceptionListService.h" 12 #include "nsIUrlClassifierExceptionList.h" 13 #include "nsCOMPtr.h" 14 #include "nsTArray.h" 15 #include "nsString.h" 16 17 namespace mozilla { 18 namespace net { 19 20 class UrlClassifierFeatureBase : public nsIUrlClassifierFeature, 21 public nsIUrlClassifierExceptionListObserver { 22 public: 23 NS_DECL_ISUPPORTS 24 25 NS_IMETHOD 26 GetName(nsACString& aName) override; 27 28 NS_IMETHOD 29 GetTables(nsIUrlClassifierFeature::listType aListType, 30 nsTArray<nsCString>& aResult) override; 31 32 NS_IMETHOD 33 HasTable(const nsACString& aTable, 34 nsIUrlClassifierFeature::listType aListType, bool* aResult) override; 35 36 NS_IMETHOD 37 HasHostInPreferences(const nsACString& aHost, 38 nsIUrlClassifierFeature::listType aListType, 39 nsACString& aPrefTableName, bool* aResult) override; 40 41 NS_IMETHOD 42 GetExceptionList(nsIUrlClassifierExceptionList** aList) override; 43 44 NS_IMETHOD 45 OnExceptionListUpdate(nsIUrlClassifierExceptionList* aList) override; 46 47 protected: 48 UrlClassifierFeatureBase(const nsACString& aName, 49 const nsACString& aPrefBlocklistTables, 50 const nsACString& aPrefEntitylistTables, 51 const nsACString& aPrefBlocklistHosts, 52 const nsACString& aPrefEntitylistHosts, 53 const nsACString& aPrefBlocklistTableName, 54 const nsACString& aPrefEntitylistTableName, 55 const nsACString& aPrefExceptionHosts); 56 57 virtual ~UrlClassifierFeatureBase(); 58 59 void InitializePreferences(); 60 void ShutdownPreferences(); 61 62 nsCString mName; 63 64 private: 65 nsCString mPrefExceptionHosts; 66 67 // 2: blocklist and entitylist. 68 nsCString mPrefTables[2]; 69 nsTArray<nsCString> mTables[2]; 70 71 nsCString mPrefHosts[2]; 72 nsCString mPrefTableNames[2]; 73 nsTArray<nsCString> mHosts[2]; 74 75 nsCOMPtr<nsIUrlClassifierExceptionList> mExceptionList; 76 }; 77 78 class UrlClassifierFeatureAntiTrackingBase : public UrlClassifierFeatureBase { 79 using UrlClassifierFeatureBase::UrlClassifierFeatureBase; 80 81 NS_IMETHOD 82 GetExceptionList(nsIUrlClassifierExceptionList** aList) override; 83 }; 84 85 } // namespace net 86 87 } // namespace mozilla 88 89 #endif // mozilla_net_UrlClassifierFeatureBase_h