blob: a12cb55256253fee91138d41164d179ba23eb05b [file] [log] [blame]
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
library fuchsia.web;
// RFC6265 specifies that implementations must support at least 4096 of data
// per-cookie (including name, value & attributes) but does not specify an
// upper-bound on their size.
using CookieName = string:MAX;
/// Provides methods for monitoring and accessing browser cookie state.
protocol CookieManager {
/// Observe changes to all cookies named `name` that would be sent in a request to `url`.
/// If neither `url` nor `name` are set then all cookies are observed. If only `url` is set
/// then all cookies for that URL are observed. If both are set then only cookies matching both
/// fields are observed.
/// `changes` iterates over a stream of cookie changes. Additions or updates are expressed as
/// complete cookies, while deletions are expressed as cookies with no `value` set.
Url? url,
CookieName? name,
request<CookiesIterator> changes);
/// Returns a list of Cookies, optionally limited to those matching `url`, and optionally
/// `name`. `cookies` iterates over the matching cookies, including their `value`s.
GetCookieList(Url? url,
CookieName? name,
request<CookiesIterator> cookies);
/// Used to iterator over a set of cookies, or a stream of changes to cookies.
protocol CookiesIterator {
/// Fetches the next batch of cookies, or of changes to cookies.
/// RFC6265 does not specify an upper-bound on the number of cookies which
/// may be stored.
GetNext() -> (vector<Cookie>:MAX changed_cookies);
table CookieId {
/// An RFC2616 "token" chosen by the site to identify the cookie.
1: CookieName name;
/// The RFC1034 "subdomain" to which this cookie is scoped.
/// e.g. "" allows access from all * sub-domains.
2: string:MAX_HOST_LENGTH domain;
/// The URL "path" prefix to which this cookie is scoped.
/// e.g. "/" allows access from all paths.
3: string:MAX_URL_LENGTH path;
resource table Cookie {
/// A table with fields to identify a cookie.
1: CookieId id;
/// The cookie value.
/// RFC6265 does not specify an upper limit on cookie size, but recommends
/// that at least 4096 bytes are supported.
2: string:MAX value;