blob: 63aae13e24d5843dd7077d62b38cdcef16a97619 [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;
using CookieName = string;
/// 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.
ObserveCookieChanges(
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.
GetNext() -> (vector<Cookie> changed_cookies);
};
table CookieId {
/// The name of the cookie. An arbitrary string defined by the website.
1: CookieName name;
/// Specifies the host that is allowed to receive the cookie.
2: string domain;
/// Specifies the URL path prefix which is required to receive the cookie.
3: string path;
};
table Cookie {
/// A table with fields to identify a cookie.
1: CookieId id;
/// The cookie value.
2: string value;
};