| // Copyright 2017 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| module network.mojom; |
| |
| import "services/network/public/mojom/cookie_manager.mojom"; |
| import "mojo/public/mojom/base/time.mojom"; |
| import "url/mojom/url.mojom"; |
| |
| enum CookieMatchType { |
| EQUALS, |
| STARTS_WITH, |
| }; |
| |
| struct CookieManagerGetOptions { |
| string name; |
| CookieMatchType match_type; |
| }; |
| |
| // Capability to access the cookie store on behalf of a single origin. |
| // |
| // Instances of this interface are restricted to a single origin, and will |
| // fail operations on cookies that aren't visible within that origin. Untrusted |
| // processes, like renderer processes, should only receive |
| // RestrictedCookieManager instances for the origins that they are allowed to |
| // represent. |
| // |
| // Implementations of this interface must assume all inputs are untrusted, and |
| // must ensure that a potentially compromised caller process is not able to |
| // access more than the cookies visible to the RestrictedCookieManager's origin. |
| // |
| // TODO(pwnall): Make this a strict subset of CookieManager. At the moment (Q2 |
| // 2018) the interface is diverged from CookieManager to allow its primary user |
| // (the Web Platform's Async Cookies API) to iterate quickly. |
| interface RestrictedCookieManager { |
| // Returns some of the cookies that would be sent in a request to |url|. |
| // |
| // |url| is an URL capable of receiving HTTP requests. |site_for_cookies| is |
| // the "site for cookies" values defined in RFC 6265bis, and roughly maps to |
| // the URL of the top-level frame in Document contexts, and to the script URL |
| // in service workers. |options| filters the returned list of cookies. |
| GetAllForUrl( |
| url.mojom.Url url, url.mojom.Url site_for_cookies, |
| CookieManagerGetOptions options) => (array<CanonicalCookie> cookies); |
| |
| SetCanonicalCookie(CanonicalCookie cookie, |
| url.mojom.Url url, |
| url.mojom.Url site_for_cookies) => (bool success); |
| |
| // Subscribes to changes in the cookies transmitted in a request to an URL. |
| // |
| // The subscription is canceled by closing the pipe. |
| AddChangeListener(url.mojom.Url url, url.mojom.Url site_for_cookies, |
| CookieChangeListener listener) => (); |
| }; |