gecko-dev/netwerk/cookie/PCookieService.ipdl
Ehsan Akhgari ab20502fb9 Bug 1547813 - Part 7: Introduce a storage partitioning API; r=baku
This API abstracts away the details of the decision on what context should be
partitioned away from the consumers and centralizes the decision making into
the same location in the code base.

Differential Revision: https://phabricator.services.mozilla.com/D29742

--HG--
extra : moz-landing-system : lando
2019-05-25 01:25:41 +00:00

115 lines
4.2 KiB
C++

/* -*- 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:
/*
* Set a cookie string.
*
* @param host
* Same as the 'aURI' argument to nsICookieService.setCookieString.
* @param channelURI
* The URI of the request.
* @param loadInfoArgs
* The optional serialization of nsILoadInfo.
* @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.
*
* @see nsICookieService.setCookieString
* @see nsICookieService.setCookieStringFromHttp
* @see mozIThirdPartyUtil.isThirdPartyChannel
*/
nested(inside_cpow) async SetCookieString(URIParams host,
URIParams? channelURI,
LoadInfoArgs? loadInfoArgs,
bool isForeign,
bool isTrackingResource,
bool firstPartyStorageAccessGranted,
uint32_t rejectedReason,
OriginAttributes aStoragePrincipalAttrs,
nsCString cookieString,
nsCString serverTime,
bool aFromHttp);
async PrepareCookieList(URIParams host,
bool isForeign,
bool isTrackingResource,
bool firstPartyStorageAccessGranted,
uint32_t rejectedReason,
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);
};
}
}