blob: 454da38b18240e6e5e98a92cd2c9d129ee71d4a0 [file] [log] [blame]
// https://github.com/WICG/cookie-store/blob/gh-pages/explainer.md
enum CookieSameSite {
"strict",
"lax",
"unrestricted"
};
dictionary CookieListItem {
required USVString name;
USVString value;
USVString? domain = null;
USVString path = "/";
DOMTimeStamp? expires = null;
boolean secure = true;
CookieSameSite sameSite = "strict";
};
typedef sequence<CookieListItem> CookieList;
dictionary CookieChangeEventInit : EventInit {
CookieList changed;
CookieList deleted;
};
[
Exposed=Window,
SecureContext,
Constructor(DOMString type, optional CookieChangeEventInit eventInitDict)
] interface CookieChangeEvent : Event {
readonly attribute CookieList changed;
readonly attribute CookieList deleted;
};
dictionary ExtendableCookieChangeEventInit : ExtendableEventInit {
CookieList changed;
CookieList deleted;
};
[
Exposed=ServiceWorker,
Constructor(DOMString type, optional ExtendableCookieChangeEventInit eventInitDict)
] interface ExtendableCookieChangeEvent : ExtendableEvent {
readonly attribute CookieList changed;
readonly attribute CookieList deleted;
};
enum CookieMatchType {
"equals",
"starts-with"
};
dictionary CookieStoreDeleteOptions {
required USVString name;
USVString? domain = null;
USVString path = "/";
boolean secure = true;
CookieSameSite sameSite = "strict";
};
dictionary CookieStoreGetOptions {
USVString name;
USVString url;
CookieMatchType matchType = "equals";
};
dictionary CookieStoreSetOptions {
DOMTimeStamp? expires = null;
USVString? domain = null;
USVString path = "/";
boolean secure = true;
CookieSameSite sameSite = "strict";
};
dictionary CookieStoreSetExtraOptions : CookieStoreSetOptions {
required USVString name;
required USVString value;
};
[
Exposed=(ServiceWorker,Window),
SecureContext
] interface CookieStore : EventTarget {
Promise<CookieListItem?> get(USVString name);
Promise<CookieListItem?> get(optional CookieStoreGetOptions options);
Promise<CookieList> getAll(USVString name);
Promise<CookieList> getAll(optional CookieStoreGetOptions options);
Promise<void> set(USVString name, USVString value, optional CookieStoreSetOptions options);
Promise<void> set(CookieStoreSetExtraOptions options);
Promise<void> delete(USVString name);
Promise<void> delete(CookieStoreDeleteOptions options);
[Exposed=ServiceWorker] Promise<void> subscribeToChanges(sequence<CookieStoreGetOptions> subscriptions);
[Exposed=ServiceWorker] Promise<sequence<CookieStoreGetOptions>> getChangeSubscriptions();
[Exposed=Window] attribute EventHandler onchange;
};
[SecureContext]
partial interface Window {
[Replaceable, SameObject] readonly attribute CookieStore cookieStore;
};
partial interface ServiceWorkerGlobalScope {
[Replaceable, SameObject] readonly attribute CookieStore cookieStore;
attribute EventHandler oncookiechange;
};