netwerk/base/nsIURIClassifier.idl
author Andrew Osmond <aosmond@mozilla.com>
Fri, 17 Nov 2017 06:45:28 -0500
changeset 392351 b9a29d94ccac646c9336fa75e084bbc8581501ad
parent 383241 d10aeb884922ae1f6f79a9c97e91424bfaff61b0
child 394886 611182749ede187917dee4c304b783a09d6ab6a8
permissions -rw-r--r--
Bug 1368776 - Part 15. Cache flags passed to ImageResource::GetImageContainerImpl for consistency. r=tnikkel When FLAG_HIGH_QUALITY_SCALING is used, we need to make sure we continue using that flag when we update the container. We should also use it for comparing whether or not an existing image container is equivalent.

/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

#include "nsISupports.idl"

%{C++
#include "nsStringFwd.h"
#include "nsTArrayForwardDeclare.h"
%}
[ref] native StringArrayRef(nsTArray<nsCString>);

interface nsIChannel;
interface nsIEventTarget;
interface nsIPrincipal;
interface nsIURI;

/**
 * Callback function for nsIURIClassifier lookups.
 */
[scriptable, function, uuid(8face46e-0c96-470f-af40-0037dcd797bd)]
interface nsIURIClassifierCallback : nsISupports
{
  /**
   * Called by the URI classifier service when it is done checking a URI.
   *
   * Clients are responsible for associating callback objects with classify()
   * calls.
   *
   * @param aErrorCode
   *        The error code with which the channel should be cancelled, or
   *        NS_OK if the load should continue normally.
   * @param aList
   *        Name of the list that matched
   * @param aProvider
   *        Name of provider that matched
   * @param aFullHash
   *        Full hash of URL that matched
   */
  void onClassifyComplete(in nsresult aErrorCode,
                          in ACString aList,
                          in ACString aProvider,
                          in ACString aFullHash);
};

/**
 * The URI classifier service checks a URI against lists of phishing
 * and malware sites.
 */
[scriptable, uuid(596620cc-76e3-4133-9d90-360e59a794cf)]
interface nsIURIClassifier : nsISupports
{
  /**
   * Classify a Principal using its URI.
   *
   * @param aPrincipal
   *        The principal that should be checked by the URI classifier.
   *
   * @param nsIEventTarget
   *        Event target for constructing actor in content process.
   *        The event target should be tied to Docgroup/Tabgroup by
   *        using EventTargetFor
   *
   * @param aTrackingProtectionEnabled
   *        Whether or not to classify the given URI against tracking
   *        protection lists
   *
   * @param aCallback
   *        The URI classifier will call this callback when the URI has been
   *        classified.
   *
   * @return <code>false</code> if classification is not necessary.  The
   *         callback will not be called.
   *         <code>true</code> if classification will be performed.  The
   *         callback will be called.
   */
  boolean classify(in nsIPrincipal aPrincipal,
                   in nsIEventTarget aEventTarget,
                   in boolean aTrackingProtectionEnabled,
                   in nsIURIClassifierCallback aCallback);

  /**
   * Synchronously classify a URI with a comma-separated string
   * containing the given tables. This does not make network requests.
   * The result is an array of table names that match.
   */
  [noscript] StringArrayRef classifyLocalWithTables(in nsIURI aURI, in ACString aTables);
  /**
   * Asynchronously classify a URI with a comma-separated string
   * containing the given tables. This does not make network requests.
   * The callback does NOT totally follow nsIURIClassifierCallback's
   * semantics described above. Only |aList| will be meaningful, which
   * is a comma separated list of table names. (same as what classifyLocal
   * returns.)
   */
  void asyncClassifyLocalWithTables(in nsIURI aURI,
                                    in ACString aTables,
                                    in nsIURIClassifierCallback aCallback);
  /**
   * Same as above, but returns a comma separated list of table names.
   * This is an internal interface used only for testing purposes.
   */
  ACString classifyLocal(in nsIURI aURI, in ACString aTables);

  /**
   * Report to the provider that a Safe Browsing warning was shown.
   *
   * @param aChannel
   *        Channel for which the URL matched something on the threat list.
   */

  void sendThreatHitReport(in nsIChannel aChannel);
};