/* -*- 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. * @param aSameSite * the SameSite attribute. This attribute is optional to avoid breaking * addons */ 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, [optional] in int32_t aSameSite); /** * 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); };