2012-05-21 04:12:37 -07:00
|
|
|
/* 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/. */
|
2007-03-22 10:30:00 -07:00
|
|
|
|
|
|
|
#include "nsISupports.idl"
|
|
|
|
|
|
|
|
interface nsICookie2;
|
|
|
|
interface nsIURI;
|
|
|
|
interface nsIChannel;
|
|
|
|
|
|
|
|
typedef long nsCookieAccess;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* An interface to test for cookie permissions
|
|
|
|
*/
|
2012-08-30 13:07:03 -07:00
|
|
|
[scriptable, uuid(11ddd4ed-8f5b-40b3-b2a0-27c20ea1c88d)]
|
2007-03-22 10:30:00 -07:00
|
|
|
interface nsICookiePermission : nsISupports
|
|
|
|
{
|
|
|
|
/**
|
|
|
|
* nsCookieAccess values
|
|
|
|
*/
|
|
|
|
const nsCookieAccess ACCESS_DEFAULT = 0;
|
|
|
|
const nsCookieAccess ACCESS_ALLOW = 1;
|
|
|
|
const nsCookieAccess ACCESS_DENY = 2;
|
|
|
|
|
|
|
|
/**
|
2012-09-14 13:57:56 -07:00
|
|
|
* additional values for nsCookieAccess which may not match
|
|
|
|
* nsIPermissionManager. Keep 3-7 available to allow nsIPermissionManager to
|
|
|
|
* add values without colliding. ACCESS_SESSION is not directly returned by
|
|
|
|
* any methods on this interface.
|
2007-03-22 10:30:00 -07:00
|
|
|
*/
|
|
|
|
const nsCookieAccess ACCESS_SESSION = 8;
|
2012-09-14 13:57:56 -07:00
|
|
|
const nsCookieAccess ACCESS_ALLOW_FIRST_PARTY_ONLY = 9;
|
2007-03-22 10:30:00 -07:00
|
|
|
|
|
|
|
/**
|
|
|
|
* 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);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 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:
|
2012-09-14 13:57:56 -07:00
|
|
|
* ACCESS_DEFAULT, ACCESS_ALLOW, ACCESS_DENY, or
|
|
|
|
* ACCESS_ALLOW_FIRST_PARTY_ONLY
|
2007-03-22 10:30:00 -07:00
|
|
|
*/
|
|
|
|
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
|
2008-03-12 00:53:50 -07:00
|
|
|
* the channel corresponding to aURI
|
2007-03-22 10:30:00 -07:00
|
|
|
* @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,
|
2012-08-22 08:56:38 -07:00
|
|
|
inout int64_t aExpiry);
|
2007-03-22 10:30:00 -07:00
|
|
|
};
|
|
|
|
|
|
|
|
%{ C++
|
|
|
|
/**
|
|
|
|
* The nsICookiePermission implementation is an XPCOM service registered
|
|
|
|
* under the ContractID:
|
|
|
|
*/
|
|
|
|
#define NS_COOKIEPERMISSION_CONTRACTID "@mozilla.org/cookie/permission;1"
|
|
|
|
%}
|