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 (409f3966645a)

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 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set sw=2 ts=8 et tw=80 ft=cpp : */

/* 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 protocol PNecko;
include URIParams;
include NeckoChannelParams;

using mozilla::OriginAttributes from "mozilla/ipc/BackgroundUtils.h";

namespace mozilla {
namespace net {

/**
 * PCookieService
 *
 * Provides IPDL methods for setting and getting cookies. These are stored on
 * and managed by the parent; the child process goes through the parent for
 * all cookie operations. Lower-level programmatic operations (i.e. those
 * provided by the nsICookieManager interface) are not
 * currently implemented and requesting these interfaces in the child will fail.
 *
 * @see nsICookieService
 * @see nsICookiePermission
 */

nested(upto inside_cpow) sync protocol PCookieService
{
  manager PNecko;

parent:

  /*
   * Get the complete cookie string associated with the URI. This is a sync
   * call in order to avoid race conditions -- for instance, an HTTP response
   * on the parent and script access on the child.
   *
   * @param host
   *        Same as the 'aURI' argument to nsICookieService.getCookieString.
   * @param isForeign
   *        True if the the request is third party, for purposes of allowing
   *        access to cookies. This should be obtained from
   *        mozIThirdPartyUtil.isThirdPartyChannel. Third party requests may be
   *        rejected depending on user preferences; if those checks are
   *        disabled, this parameter is ignored.
   * @param isTrackingResource
   *        True if the request has been marked as tracking.
   * @param firstPartyStorageAccessGranted
   *        True if host has storage access granted. Note that the storage
   *        access is automatically granted also if the channel is not marked as
   *        tracking resource, or if it's not a 3rd party context.
   * @param isSafeTopLevelNav
   *        True for safe methods like e.g. GET.
   * @param isSameSiteForeign
   *        True if the same-site cookie originates from a cross-site context.
   * @param fromHttp
   *        Whether the result is for an HTTP request header. This should be
   *        true for nsICookieService.getCookieStringFromHttp calls, false
   *        otherwise.
   * @param attrs
   *        The origin attributes from the HTTP channel or document that the
   *        cookie is being set on.
   *
   * @see nsICookieService.getCookieString
   * @see nsICookieService.getCookieStringFromHttp
   * @see mozIThirdPartyUtil.isThirdPartyChannel
   *
   * @return the resulting cookie string.
   */
  nested(inside_cpow) sync GetCookieString(URIParams host,
                                           bool isForeign,
                                           bool isTrackingResource,
                                           bool firstPartyStorageAccessGranted,
                                           bool isSafeTopLevelNav,
                                           bool isSameSiteForeign,
                                           OriginAttributes attrs)
       returns (nsCString result);

  /*
   * Set a cookie string.
   *
   * @param host
   *        Same as the 'aURI' argument to nsICookieService.setCookieString.
   * @param channelURI
   *        The URI of the request.
   * @param isForeign
   *        True if the the request is third party, for purposes of allowing
   *        access to cookies. This should be obtained from
   *        mozIThirdPartyUtil.isThirdPartyChannel. Third party requests may be
   *        rejected depending on user preferences; if those checks are
   *        disabled, this parameter is ignored.
   * @param isTrackingResource
   *        True if the request has been marked as tracking.
   * @param firstPartyStorageAccessGranted
   *        True if host has storage access granted. Note that the storage
   *        access is automatically granted also if the channel is not marked as
   *        tracking resource, or if it's not a 3rd party context.
   * @param cookieString
   *        Same as the 'aCookie' argument to nsICookieService.setCookieString.
   * @param serverTime
   *        Same as the 'aServerTime' argument to
   *        nsICookieService.setCookieStringFromHttp. If the string is empty or
   *        null (e.g. for non-HTTP requests), the current local time is used.
   * @param fromHttp
   *        Whether the result is for an HTTP request header. This should be
   *        true for nsICookieService.setCookieStringFromHttp calls, false
   *        otherwise.
   * @param attrs
   *        The origin attributes from the HTTP channel or document that the
   *        cookie is being set on.
   *
   * @see nsICookieService.setCookieString
   * @see nsICookieService.setCookieStringFromHttp
   * @see mozIThirdPartyUtil.isThirdPartyChannel
   */
  nested(inside_cpow) async SetCookieString(URIParams host,
                                            URIParams channelURI,
                                            bool isForeign,
                                            bool isTrackingResource,
                                            bool firstPartyStorageAccessGranted,
                                            nsCString cookieString,
                                            nsCString serverTime,
                                            OriginAttributes attrs,
                                            bool aFromHttp);

  async PrepareCookieList(URIParams host,
                          bool isForeign,
                          bool isTrackingResource,
                          bool firstPartyStorageAccessGranted,
                          bool isSafeTopLevelNav,
                          bool isSameSiteForeign,
                          OriginAttributes attrs);

  async __delete__();

child:
  async TrackCookiesLoad(CookieStruct[] cookiesList,
                         OriginAttributes attrs);

  async RemoveCookie(CookieStruct cookie,
                     OriginAttributes attrs);

  async RemoveBatchDeletedCookies(CookieStruct[] cookiesList,
                                  OriginAttributes[] attrsList);

  async RemoveAll();

  async AddCookie(CookieStruct cookie,
                  OriginAttributes attrs);

};

}
}