DXR is a code search and navigation tool aimed at making sense of large projects. It supports full-text and regex searches as well as structural queries.

Mercurial (dcc6d7a0dc00)

VCS Links

Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140
/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* 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"

interface nsIPluginTag;
interface nsIVariant;

[scriptable, uuid(a6dcc76e-9f62-4cc1-a470-b483a1a6f096)]
interface nsIBlocklistService : nsISupports
{
  // Indicates that the item does not appear in the blocklist.
  const unsigned long STATE_NOT_BLOCKED = 0;
  // Indicates that the item is in the blocklist but the problem is not severe
  // enough to warant forcibly blocking.
  const unsigned long STATE_SOFTBLOCKED = 1;
  // Indicates that the item should be blocked and never used.
  const unsigned long STATE_BLOCKED     = 2;
  // Indicates that the item is considered outdated, and there is a known
  // update available.
  const unsigned long STATE_OUTDATED    = 3;
  // Indicates that the item is vulnerable and there is an update.
  const unsigned long STATE_VULNERABLE_UPDATE_AVAILABLE = 4;
  // Indicates that the item is vulnerable and there is no update.
  const unsigned long STATE_VULNERABLE_NO_UPDATE = 5;

  /**
   * Determine if an item is blocklisted
   * @param   addon
   *          The addon item to be checked.
   * @param   appVersion
   *          The version of the application we are checking in the blocklist.
   *          If this parameter is null, the version of the running application
   *          is used.
   * @param   toolkitVersion
   *          The version of the toolkit we are checking in the blocklist.
   *          If this parameter is null, the version of the running toolkit
   *          is used.
   * @returns true if the item is compatible with this version of the
   *          application or this version of the toolkit, false, otherwise.
   */
  boolean isAddonBlocklisted(in jsval addon,
                             [optional] in AString appVersion,
                             [optional] in AString toolkitVersion);

  /**
   * Determine the blocklist state of an add-on
   * @param   id
   *          The addon item to be checked.
   * @param   appVersion
   *          The version of the application we are checking in the blocklist.
   *          If this parameter is null, the version of the running application
   *          is used.
   * @param   toolkitVersion
   *          The version of the toolkit we are checking in the blocklist.
   *          If this parameter is null, the version of the running toolkit
   *          is used.
   * @returns The STATE constant.
   */
  unsigned long getAddonBlocklistState(in jsval addon,
                                       [optional] in AString appVersion,
                                       [optional] in AString toolkitVersion);

  /**
   * Determine the blocklist state of a plugin
   * @param   plugin
   *          The plugin to get the state for
   * @param   appVersion
   *          The version of the application we are checking in the blocklist.
   *          If this parameter is null, the version of the running application
   *          is used.
   * @param   toolkitVersion
   *          The version of the toolkit we are checking in the blocklist.
   *          If this parameter is null, the version of the running toolkit
   *          is used.
   * @returns The STATE constant.
   */
  unsigned long getPluginBlocklistState(in nsIPluginTag plugin,
                                        [optional] in AString appVersion,
                                        [optional] in AString toolkitVersion);

  /**
   * Determine the blocklist web page of an add-on.
   * @param   addon
   *          The addon item whose url is required.
   * @returns The URL of the description page.
   */
  AString getAddonBlocklistURL(in jsval addon,
                              [optional] in AString appVersion,
                              [optional] in AString toolkitVersion);

  /**
   * Determine the blocklist web page of a plugin.
   * @param   plugin
   *          The blocked plugin that we are determining the web page for.
   * @returns The URL of the description page.
   */
  AString getPluginBlocklistURL(in nsIPluginTag plugin);

  /**
   * Determine the blocklist infoURL of a plugin.
   * @param   plugin
   *          The blocked plugin that we are determining the infoURL for.
   * @returns The preferred URL to present the user, or |null| if
   *          it is not available.
   */
  AString getPluginInfoURL(in nsIPluginTag plugin);
};

/**
 * nsIBlocklistPrompt is used, if available, by the default implementation of 
 * nsIBlocklistService to display a confirmation UI to the user before blocking
 * extensions/plugins.
 */
[scriptable, uuid(ba915921-b9c0-400d-8e4f-ca1b80c5699a)]
interface nsIBlocklistPrompt : nsISupports
{
  /**
   * Prompt the user about newly blocked addons. The prompt is then resposible
   * for soft-blocking any addons that need to be afterwards
   *
   * @param  aAddons
   *         An array of addons and plugins that are blocked. These are javascript
   *         objects with properties:
   *          name    - the plugin or extension name,
   *          version - the version of the extension or plugin,
   *          icon    - the plugin or extension icon,
   *          disable - can be used by the nsIBlocklistPrompt to allows users to decide
   *                    whether a soft-blocked add-on should be disabled,
   *          blocked - true if the item is hard-blocked, false otherwise,
   *          item    - the nsIPluginTag or Addon object
   * @param  aCount
   *         The number of addons
   */
  void prompt([array, size_is(aCount)] in nsIVariant aAddons,
              [optional] in uint32_t aCount);
};