Linux Mac OSX Windows

Implemented by

 An interface to test for cookie permissions
[scriptable, uuid(4b1a775d-f6d3-4389-be2e-9dfbaf2ab47b)]
interface nsICookiePermission : nsISupports

Constants

 nsCookieAccess values
const nsCookieAccess ACCESS_DEFAULT = 0

        
const nsCookieAccess ACCESS_ALLOW = 1

        
const nsCookieAccess ACCESS_DENY = 2
 additional values for nsCookieAccess, which are not directly used by
 any methods on this interface, but are nevertheless convenient to define
 here. these may be relocated somewhere else if we ever consider freezing
 this interface.
const nsCookieAccess ACCESS_SESSION = 8

Methods

 canAccess

 this method is called to test whether or not the given URI/channel may
 access the cookie database, either to set or get cookies.

 @param aURI
        the URI trying to access cookies
 @param aChannel
        the channel corresponding to aURI

 @return one of the following nsCookieAccess values:
         ACCESS_DEFAULT, ACCESS_ALLOW, or ACCESS_DENY
nsCookieAccess canAccess(in nsIURI aURI, in nsIChannel aChannel)
 canSetCookie

 this method is called to test whether or not the given URI/channel may
 set a specific cookie.  this method is always preceded by a call to
 canAccess. it may modify the isSession and expiry attributes of the
 cookie via the aIsSession and aExpiry parameters, in order to limit
 or extend the lifetime of the cookie. this is useful, for instance, to
 downgrade a cookie to session-only if it fails to meet certain criteria.

 @param aURI
        the URI trying to set the cookie
 @param aChannel
        the channel corresponding to aURI
 @param aCookie
        the cookie being added to the cookie database
 @param aIsSession
        when canSetCookie is invoked, this is the current isSession attribute
        of the cookie. canSetCookie may leave this value unchanged to
        preserve this attribute of the cookie.
 @param aExpiry
        when canSetCookie is invoked, this is the current expiry time of
        the cookie. canSetCookie may leave this value unchanged to
        preserve this attribute of the cookie.

 @return true if the cookie can be set.
boolean canSetCookie(in nsIURI aURI, in nsIChannel aChannel, in nsICookie2 aCookie, inout boolean aIsSession, inout PRInt64 aExpiry)
 getOriginatingURI

 determines the originating URI for a load given a channel, for third-party
 cookie blocking. this is done by leveraging the loadgroup of the channel to
 find the root content docshell, and the URI associated with its principal.
 if the root content docshell or its principal's URI cannot be obtained,
 this method will throw.

 @param aChannel
        the channel for the load trying to get or set cookies

 @return the originating URI.
nsIURI getOriginatingURI(in nsIChannel aChannel)
 setAccess

 this method is called to block cookie access for the given URI.  this
 may result in other URIs being blocked as well (e.g., URIs which share
 the same host name).

 @param aURI
        the URI to block
 @param aAccess
        the new cookie access for the URI.
void setAccess(in nsIURI aURI, in nsCookieAccess aAccess)