| // 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. |
| alias 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. |
| 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. |
| /// 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. "example.com" allows access from all *.example.com 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; |
| }; |