/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- * * The contents of this file are subject to the Netscape Public * License Version 1.1 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.mozilla.org/NPL/ * * Software distributed under the License is distributed on an "AS * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or * implied. See the License for the specific language governing * rights and limitations under the License. * * The Original Code is mozilla.org code. * * The Initial Developer of the Original Code is Netscape * Communications Corporation. Portions created by Netscape are * Copyright (C) 1999-2000 Netscape Communications Corporation. All * Rights Reserved. * * Contributor(s): * Norris Boyd * Mitch Stoltz */ /* Defines the abstract interface for a principal. */ #include "nsISupports.idl" %{C++ struct JSPrincipals; %} interface nsIPref; [ptr] native JSPrincipals(JSPrincipals); [uuid(ff9313d0-25e1-11d2-8160-006008119d7a)] interface nsIPrincipal : nsISupports { // Values of capabilities for each principal. Order is // significant: if an operation is performed on a set // of capabilities, the minimum is computed. const short ENABLE_DENIED = 1; const short ENABLE_UNKNOWN = 2; const short ENABLE_WITH_USER_PERMISSION = 3; const short ENABLE_GRANTED = 4; string ToString(); string ToUserVisibleString(); void GetPreferences(out string prefName, out string id, out string grantedList, out string deniedList); boolean Equals(in nsIPrincipal other); unsigned long HashValue(); JSPrincipals GetJSPrincipals(); short CanEnableCapability(in string capability); void SetCanEnableCapability(in string capability, in short canEnable); boolean IsCapabilityEnabled(in string capability, in voidPtr annotation); void EnableCapability(in string capability, inout voidPtr annotation); void RevertCapability(in string capability, inout voidPtr annotation); void DisableCapability(in string capability, inout voidPtr annotation); };