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 "nsIUrlClassifierSkipListService.h"
12 #include "nsTArray.h"
13 #include "nsString.h"
14 
15 namespace mozilla {
16 namespace net {
17 
18 class UrlClassifierFeatureBase : public nsIUrlClassifierFeature,
19                                  public nsIUrlClassifierSkipListObserver {
20  public:
21   NS_DECL_ISUPPORTS
22 
23   NS_IMETHOD
24   GetName(nsACString& aName) override;
25 
26   NS_IMETHOD
27   GetTables(nsIUrlClassifierFeature::listType aListType,
28             nsTArray<nsCString>& aResult) override;
29 
30   NS_IMETHOD
31   HasTable(const nsACString& aTable,
32            nsIUrlClassifierFeature::listType aListType, bool* aResult) override;
33 
34   NS_IMETHOD
35   HasHostInPreferences(const nsACString& aHost,
36                        nsIUrlClassifierFeature::listType aListType,
37                        nsACString& aPrefTableName, bool* aResult) override;
38 
39   NS_IMETHOD
40   GetSkipHostList(nsACString& aList) override;
41 
42   NS_IMETHOD
43   OnSkipListUpdate(const nsACString& aList) override;
44 
45  protected:
46   UrlClassifierFeatureBase(const nsACString& aName,
47                            const nsACString& aPrefBlacklistTables,
48                            const nsACString& aPrefWhitelistTables,
49                            const nsACString& aPrefBlacklistHosts,
50                            const nsACString& aPrefWhitelistHosts,
51                            const nsACString& aPrefBlacklistTableName,
52                            const nsACString& aPrefWhitelistTableName,
53                            const nsACString& aPrefSkipHosts);
54 
55   virtual ~UrlClassifierFeatureBase();
56 
57   void InitializePreferences();
58   void ShutdownPreferences();
59 
60   nsCString mName;
61 
62  private:
63   nsCString mPrefSkipHosts;
64 
65   // 2: blacklist and whitelist.
66   nsCString mPrefTables[2];
67   nsTArray<nsCString> mTables[2];
68 
69   nsCString mPrefHosts[2];
70   nsCString mPrefTableNames[2];
71   nsTArray<nsCString> mHosts[2];
72 
73   nsCString mSkipHosts;
74 };
75 
76 }  // namespace net
77 }  // namespace mozilla
78 
79 #endif  // mozilla_net_UrlClassifierFeatureBase_h
80