UrlClassifierFeatureCustomTables.cpp (3208B)
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 #include "UrlClassifierFeatureCustomTables.h" 8 #include "nsIUrlClassifierExceptionList.h" 9 10 namespace mozilla { 11 12 NS_INTERFACE_MAP_BEGIN(UrlClassifierFeatureCustomTables) 13 NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIUrlClassifierFeature) 14 NS_INTERFACE_MAP_ENTRY(nsIUrlClassifierFeature) 15 NS_INTERFACE_MAP_END 16 17 NS_IMPL_ADDREF(UrlClassifierFeatureCustomTables) 18 NS_IMPL_RELEASE(UrlClassifierFeatureCustomTables) 19 20 UrlClassifierFeatureCustomTables::UrlClassifierFeatureCustomTables( 21 const nsACString& aName, const nsTArray<nsCString>& aBlocklistTables, 22 const nsTArray<nsCString>& aEntitylistTables) 23 : mName(aName), 24 mBlocklistTables(aBlocklistTables.Clone()), 25 mEntitylistTables(aEntitylistTables.Clone()) {} 26 27 UrlClassifierFeatureCustomTables::~UrlClassifierFeatureCustomTables() = default; 28 29 NS_IMETHODIMP 30 UrlClassifierFeatureCustomTables::GetName(nsACString& aName) { 31 aName = mName; 32 return NS_OK; 33 } 34 35 NS_IMETHODIMP 36 UrlClassifierFeatureCustomTables::GetTables( 37 nsIUrlClassifierFeature::listType aListType, nsTArray<nsCString>& aTables) { 38 if (aListType == nsIUrlClassifierFeature::blocklist) { 39 aTables = mBlocklistTables.Clone(); 40 return NS_OK; 41 } 42 43 if (aListType == nsIUrlClassifierFeature::entitylist) { 44 aTables = mEntitylistTables.Clone(); 45 return NS_OK; 46 } 47 48 return NS_ERROR_FAILURE; 49 } 50 51 NS_IMETHODIMP 52 UrlClassifierFeatureCustomTables::HasTable( 53 const nsACString& aTable, nsIUrlClassifierFeature::listType aListType, 54 bool* aResult) { 55 NS_ENSURE_ARG_POINTER(aResult); 56 57 if (aListType == nsIUrlClassifierFeature::blocklist) { 58 *aResult = mBlocklistTables.Contains(aTable); 59 return NS_OK; 60 } 61 62 if (aListType == nsIUrlClassifierFeature::entitylist) { 63 *aResult = mEntitylistTables.Contains(aTable); 64 return NS_OK; 65 } 66 67 return NS_ERROR_FAILURE; 68 } 69 70 NS_IMETHODIMP 71 UrlClassifierFeatureCustomTables::HasHostInPreferences( 72 const nsACString& aHost, nsIUrlClassifierFeature::listType aListType, 73 nsACString& aPrefTableName, bool* aResult) { 74 NS_ENSURE_ARG_POINTER(aResult); 75 *aResult = false; 76 return NS_OK; 77 } 78 79 NS_IMETHODIMP 80 UrlClassifierFeatureCustomTables::GetExceptionList( 81 nsIUrlClassifierExceptionList** aList) { 82 NS_ENSURE_ARG_POINTER(aList); 83 *aList = nullptr; 84 return NS_OK; 85 } 86 87 NS_IMETHODIMP 88 UrlClassifierFeatureCustomTables::ProcessChannel( 89 nsIChannel* aChannel, const nsTArray<nsCString>& aList, 90 const nsTArray<nsCString>& aHashes, bool* aShouldContinue) { 91 NS_ENSURE_ARG_POINTER(aChannel); 92 NS_ENSURE_ARG_POINTER(aShouldContinue); 93 94 // This is not a blocking feature. 95 *aShouldContinue = true; 96 97 return NS_OK; 98 } 99 100 NS_IMETHODIMP 101 UrlClassifierFeatureCustomTables::GetURIByListType( 102 nsIChannel* aChannel, nsIUrlClassifierFeature::listType aListType, 103 nsIUrlClassifierFeature::URIType* aURIType, nsIURI** aURI) { 104 return NS_ERROR_NOT_IMPLEMENTED; 105 } 106 107 } // namespace mozilla