blob: eb69afaa866babc2e90a2992eed6818c73f248c9 [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 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);
};