diff -r 000000000000 -r 6474c204b198 netwerk/cookie/nsICookieManager2.idl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/netwerk/cookie/nsICookieManager2.idl Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,132 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* 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 "nsICookieManager.idl" + +interface nsICookie2; +interface nsIFile; + +/** + * Additions to the frozen nsICookieManager + */ + +[scriptable, uuid(daf0caa7-b431-4b4d-ba51-08c179bb9dfe)] +interface nsICookieManager2 : nsICookieManager +{ + /** + * Add a cookie. nsICookieService is the normal way to do this. This + * method is something of a backdoor. + * + * @param aHost + * the host or domain for which the cookie is set. presence of a + * leading dot indicates a domain cookie; otherwise, the cookie + * is treated as a non-domain cookie (see RFC2109). The host string + * will be normalized to ASCII or ACE; any trailing dot will be + * stripped. To be a domain cookie, the host must have at least two + * subdomain parts (e.g. '.foo.com', not '.com'), otherwise an + * exception will be thrown. An empty string is acceptable + * (e.g. file:// URI's). + * @param aPath + * path within the domain for which the cookie is valid + * @param aName + * cookie name + * @param aValue + * cookie data + * @param aIsSecure + * true if the cookie should only be sent over a secure connection. + * @param aIsHttpOnly + * true if the cookie should only be sent to, and can only be + * modified by, an http connection. + * @param aIsSession + * true if the cookie should exist for the current session only. + * see aExpiry. + * @param aExpiry + * expiration date, in seconds since midnight (00:00:00), January 1, + * 1970 UTC. note that expiry time will also be honored for session cookies; + * in this way, the more restrictive of the two will take effect. + */ + void add(in AUTF8String aHost, + in AUTF8String aPath, + in ACString aName, + in ACString aValue, + in boolean aIsSecure, + in boolean aIsHttpOnly, + in boolean aIsSession, + in int64_t aExpiry); + + /** + * Find whether a given cookie already exists. + * + * @param aCookie + * the cookie to look for + * + * @return true if a cookie was found which matches the host, path, and name + * fields of aCookie + */ + boolean cookieExists(in nsICookie2 aCookie); + + /** + * Count how many cookies exist within the base domain of 'aHost'. + * Thus, for a host "weather.yahoo.com", the base domain would be "yahoo.com", + * and any host or domain cookies for "yahoo.com" and its subdomains would be + * counted. + * + * @param aHost + * the host string to search for, e.g. "google.com". this should consist + * of only the host portion of a URI. see @add for a description of + * acceptable host strings. + * + * @return the number of cookies found. + */ + unsigned long countCookiesFromHost(in AUTF8String aHost); + + /** + * Returns an enumerator of cookies that exist within the base domain of + * 'aHost'. Thus, for a host "weather.yahoo.com", the base domain would be + * "yahoo.com", and any host or domain cookies for "yahoo.com" and its + * subdomains would be returned. + * + * @param aHost + * the host string to search for, e.g. "google.com". this should consist + * of only the host portion of a URI. see @add for a description of + * acceptable host strings. + * + * @return an nsISimpleEnumerator of nsICookie2 objects. + * + * @see countCookiesFromHost + */ + nsISimpleEnumerator getCookiesFromHost(in AUTF8String aHost); + + /** + * Import an old-style cookie file. Imported cookies will be added to the + * existing database. If the database contains any cookies the same as those + * being imported (i.e. domain, name, and path match), they will be replaced. + * + * @param aCookieFile the file to import, usually cookies.txt + */ + void importCookies(in nsIFile aCookieFile); + + /** + * Returns an enumerator of all cookies that are related to a specific app. + * + * If the onlyBrowserELement parameter is set to true, only cookies part of + * a browser element inside the app will be returned. If set to false, all + * cookies will be returned, regardless of their browserElement flag. + * + * This method assumes that appId is a valid app id. It should not be a + * special value like UNKNOWN_APP_ID or NO_APP_ID. + */ + nsISimpleEnumerator getCookiesForApp(in unsigned long appId, in boolean onlyBrowserElement); + + /** + * Remove all the cookies associated with the app with the id aAppId. + * + * If onlyBrowserElement is set to true, the method will only remove the + * cookies marked as part of a browser element inside the app. + * + * Special app id values are not allowed (NO_APP_ID or UNKNOWN_APP_ID for example). + */ + void removeCookiesForApp(in unsigned long appId, in boolean onlyBrowserElement); +};