DXR is a code search and navigation tool aimed at making sense of large projects. It supports full-text and regex searches as well as structural queries.

Mercurial (5b81998bb7ab)

VCS Links

Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 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);
};