| // 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 fuchsia.io; |
| |
| /// The top-level service interface which allows for the creation of |
| /// Context resources. |
| // TODO(WEB-29): Remove ContextProvider in favor of launching Context |
| // instances directly. |
| [Discoverable] |
| protocol ContextProvider { |
| /// Creates a new browser Context whose state is wholly independent and |
| /// isolated from other Contexts. |
| /// |
| /// |context|: An interface request which will receive a bound Context |
| /// service. |
| Create(CreateContextParams params, request<Context> context); |
| }; |
| |
| table CreateContextParams { |
| /// Service directory to be used by the context. |
| // TODO(WEB-26): Document required and optional services that Context uses. |
| 1: fuchsia.io.Directory service_directory; |
| |
| /// Handle to the directory that will contain the Context's |
| /// persistent data. If it is left unset, then the created Context will be |
| /// stateless, with all of its data discarded upon Context destruction. |
| /// If set, |data_directory| must not be shared with any other Context. |
| // TODO(WEB-28): Provide an API to inform the caller when the |
| // |data_directory| can be safely removed. |
| 2: fuchsia.io.Directory data_directory; |
| }; |
| |
| /// Manages browsing state (e.g. LocalStorage, cookies, etc) associated with |
| /// a set of Frames. |
| protocol Context { |
| /// Creates a new frame under this Context. Destruction of a Context |
| /// triggers the destruction of all of its associated Frames. Frames can be |
| /// transferred to another component but cannot be shared across multiple |
| /// components. |
| /// |
| /// |frame|: An interface request that will be bound to the created Frame. |
| CreateFrame(request<Frame> frame); |
| }; |