caps/nsIAddonPolicyService.idl
author Alastor Wu <alwu@mozilla.com>
Tue, 05 Mar 2019 02:06:22 +0000
changeset 516285 dc39216dfad387efd439083045062e323869a428
parent 427636 7ebfb0df0958366c63048e2b943ce4f3827fbcf0
permissions -rw-r--r--
Bug 1530220 - part1 : allow some non-printalble keys as supported user gesture inputs to activate document. r=masayuki,cpearce a=lizzard `carriage return` and `space` are common keys which user might use to start media, so we should take account them as supported user gesture inputs. As their pseudo char code are zero, we have to check their key code in order to distinguish them from other controls keys such as shift, alt... Differential Revision: https://phabricator.services.mozilla.com/D21253

/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
 *
 * 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"
#include "nsIURI.idl"

/**
 * This interface allows the security manager to query custom per-addon security
 * policy.
 */
[scriptable,uuid(8a034ef9-9d14-4c5d-8319-06c1ab574baa)]
interface nsIAddonPolicyService : nsISupports
{
  /**
   * Returns the base content security policy, which is applied to all
   * extension documents, in addition to any custom policies.
   */
  readonly attribute AString baseCSP;

  /**
   * Returns the default content security policy which applies to extension
   * documents which do not specify any custom policies.
   */
  readonly attribute AString defaultCSP;

  /**
   * Returns the content security policy which applies to documents belonging
   * to the extension with the given ID. This may be either a custom policy,
   * if one was supplied, or the default policy if one was not.
   */
  AString getAddonCSP(in AString aAddonId);

  /**
   * Returns the generated background page as a data-URI, if any. If the addon
   * does not have an auto-generated background page, an empty string is
   * returned.
   */
  ACString getGeneratedBackgroundPageUrl(in ACString aAddonId);

  /**
   * Returns true if the addon was granted the |aPerm| API permission.
   */
  boolean addonHasPermission(in AString aAddonId, in AString aPerm);

  /**
   * Returns true if unprivileged code associated with the given addon may load
   * data from |aURI|.  If |aExplicit| is true, the <all_urls> permission and
   * permissive host globs are ignored when checking for a match.
   */
  boolean addonMayLoadURI(in AString aAddonId, in nsIURI aURI, [optional] in boolean aExplicit);

  /**
   * Returns the name of the WebExtension with the given ID, or the ID string
   * if no matching add-on can be found.
   */
  AString getExtensionName(in AString aAddonId);

  /**
   * Returns true if a given extension:// URI is web-accessible.
   */
  boolean extensionURILoadableByAnyone(in nsIURI aURI);

  /**
   * Maps an extension URI to the ID of the addon it belongs to.
   */
  AString extensionURIToAddonId(in nsIURI aURI);
};

/**
 * This interface exposes functionality related to add-on content policy
 * enforcement.
 */
[scriptable,uuid(7a4fe60b-9131-45f5-83f3-dc63b5d71a5d)]
interface nsIAddonContentPolicy : nsISupports
{
  /**
   * Checks a custom content security policy string, to ensure that it meets
   * minimum security requirements. Returns null for valid policies, or a
   * string describing the error for invalid policies.
   */
  AString validateAddonCSP(in AString aPolicyString);
};