tor-browser

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

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