tor-browser

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

nsIUrlClassifierFeature.idl (4023B)


      1 /* This Source Code Form is subject to the terms of the Mozilla Public
      2 * License, v. 2.0. If a copy of the MPL was not distributed with this
      3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      4 
      5 #include "nsISupports.idl"
      6 #include "nsIUrlClassifierExceptionList.idl"
      7 %{C++
      8 #include "nsStringFwd.h"
      9 #include "nsTArrayForwardDeclare.h"
     10 %}
     11 [ref] native StringArrayRef(nsTArray<nsCString>);
     12 [ref] native ConstStringArrayRef(const nsTArray<nsCString>);
     13 
     14 interface nsIChannel;
     15 interface nsIURI;
     16 
     17 /**
     18 * A single URLClassifier feature.
     19 */
     20 [builtinclass, scriptable, uuid(a6c9b24e-b4f1-426e-af58-2c976c3943a8)]
     21 interface nsIUrlClassifierFeature : nsISupports
     22 {
     23  cenum listType: 8 {
     24    blocklist = 0,
     25    entitylist = 1,
     26  };
     27 
     28  cenum URIType: 8 {
     29    blocklistURI = 0,
     30    entitylistURI = 1,
     31    pairwiseEntitylistURI = 2,
     32  };
     33 
     34  /**
     35   * The feature name
     36   */
     37  readonly attribute ACString name;
     38 
     39  /**
     40   * Returns the tables for one of the possible lists.
     41   */
     42  [noscript] StringArrayRef getTables(in nsIUrlClassifierFeature_listType aListType);
     43 
     44  /**
     45   * Returns true if |aTable| is part of the tables of |aListType| type.
     46   */
     47  [noscript] boolean hasTable(in ACString aTable,
     48                              in nsIUrlClassifierFeature_listType aListType);
     49 
     50  /**
     51   * Returns true if |aHost| is contained in the preference of |aListType| type.
     52   * |aPrefTableName| will be set to the table name to use.
     53   */
     54  [noscript] boolean hasHostInPreferences(in ACString aHost,
     55                                          in nsIUrlClassifierFeature_listType aListType,
     56                                          out ACString aPrefTableName);
     57 
     58  /**
     59   * Exception list for this classifier feature.
     60   */
     61  readonly attribute nsIUrlClassifierExceptionList exceptionList;
     62 
     63  /**
     64   * When this feature matches the channel, this method is executed to do
     65   * 'something' on the channel. For instance, a tracking-annotation feature
     66   * would mark the channel as tracker, a tracking-protection feature would
     67   * cancel the channel.
     68   * Returns if we should process other feature results or not. For instance,
     69   * tracking-protection cancel the channel, and after that we should stop
     70   * processing other features.
     71   */
     72  [noscript] boolean processChannel(in nsIChannel aChannel,
     73                                    in ConstStringArrayRef aList,
     74                                    in ConstStringArrayRef aHashes);
     75 
     76  /**
     77   * Features can work with different URLs from a channel (channel url, or
     78   * top-level, or something else). This method returns what we need to use for
     79   * the current list.
     80   * If the returned URI is created by CreatePairwiseEntityListURI(), the
     81   * URIType is pairwiseEntitylistURI. Otherwise, it depends on the listType.
     82   */
     83  [noscript] nsIURI getURIByListType(in nsIChannel channel,
     84                                     in nsIUrlClassifierFeature_listType listType,
     85                                     out nsIUrlClassifierFeature_URIType URIType);
     86 };
     87 
     88 /**
     89 * The result of the classifier operation is this interface.
     90 * See asyncClassifyLocalWithFeatures() in nsIURIClassifier.idl.
     91 */
     92 [builtinclass, scriptable, uuid(ccb88140-5d66-4873-9815-a1b98d6cdc92)]
     93 interface nsIUrlClassifierFeatureResult : nsISupports
     94 {
     95  readonly attribute nsIURI uri;
     96 
     97  readonly attribute nsIUrlClassifierFeature feature;
     98 
     99  // Comma separate tables or preferences.
    100  readonly attribute ACString list;
    101 };
    102 
    103 /**
    104 * Callback function for nsIURIClassifier lookups.
    105 * See asyncClassifyLocalWithFeatures() in nsIURIClassifier.idl.
    106 */
    107 [scriptable, function, uuid(2ea83c26-dfc9-44ed-9cfc-171d4753d78e)]
    108 interface nsIUrlClassifierFeatureCallback : nsISupports
    109 {
    110  /**
    111   * Called by the URI classifier service when it is done checking a URI.
    112   *
    113   * Clients are responsible for associating callback objects with classify()
    114   * calls.
    115   *
    116   * @param aResults
    117   *        List of nsIUrlClassifierFeatureResult objects.
    118   */
    119  void onClassifyComplete(in Array<nsIUrlClassifierFeatureResult> aResults);
    120 };