/* 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 at http://mozilla.org/MPL/2.0/. */

[JSImplementation="@mozilla.org/permissionSettings;1",
 ChromeOnly,
 Pref="dom.mozPermissionSettings.enabled",
 NavigatorProperty="mozPermissionSettings"]
interface PermissionSettings
{
  DOMString get(DOMString permission, DOMString manifestURI, DOMString origin, boolean browserFlag);

  void set(DOMString permission, DOMString value, DOMString manifestURI, DOMString origin, boolean browserFlag);

  boolean isExplicit(DOMString permission, DOMString manifestURI, DOMString origin, boolean browserFlag);

  // Removing a permission is only allowed for pages with a different origin than the app
  // and pages that have browserFlag=true, so remove() doesn't have a browserFlag parameter.
  void remove(DOMString permission, DOMString manifestURI, DOMString origin);
};