// Copyright 2016 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.
|
|
library fuchsia.sys;
|
|
// Maximum length for an environment label.
|
const uint32 kLabelMaxLength = 32;
|
|
struct EnvironmentOptions {
|
// True if this environment should inherit services provided by the
|
// parent environment.
|
bool inherit_parent_services;
|
// True if components in this environment can share a runner provided
|
// by the parent environment. If false, a new runner will be started
|
// in this environment for components.
|
bool allow_parent_runners;
|
// True if this environment should be killed first in out of memory
|
// situations by setting the ZX_PROP_JOB_KILL_ON_OOM property on this
|
// environment's job.
|
bool kill_on_oom;
|
};
|
|
// An interface for managing a set of applications.
|
//
|
// Applications run inside environments, which provide ambient services and
|
// support for their lifecycle.
|
[Discoverable] interface Environment {
|
// Creates a new environment nested inside this environment.
|
//
|
// When applications are created inside the nested environment using the
|
// environment's |Launcher|, the environment requests the
|
// environment services from |host_directory| before passing those services to
|
// the newly created application in its |StartupInfo|.
|
//
|
// The |controller| can be used to control the lifecycle of the created
|
// environment. If an |EnvironmentController|'s interface is
|
// request, the environment will be killed when the interface is closed.
|
//
|
// The |label| is an optional name to associate with the environment for
|
// diagnostic purposes. The label will be truncated if it is longer
|
// than |kLabelMaxLength|.
|
//
|
// |additional_services|, which may be empty, contains a list of services
|
// that the environment provides, which are hosted by
|
// |additional_services.host_directory|. If |options.inherit_parent_services|
|
// is false, |host_directory| must provide a |Loader| service if it wishes to
|
// allow new components to be loaded in the new environment.
|
//
|
// |options| provides additional options, see |EnvironmentOptions| for
|
// details.
|
1: CreateNestedEnvironment(request<Environment> environment,
|
request<EnvironmentController>? controller,
|
string? label,
|
ServiceList? additional_services,
|
EnvironmentOptions options);
|
|
// Gets the Launcher associated with this environment.
|
//
|
// Applications created using this application launcher will be given the
|
// environment services provided by this environment's |host_directory|.
|
2: GetLauncher(request<Launcher> launcher);
|
|
// Gets a superset of services provided by this environment's
|
// |host_directory|.
|
3: GetServices(request<ServiceProvider> services);
|
|
// Gets a superset of services provided by this environment's
|
// |host_directory|.
|
4: GetDirectory(handle<channel> directory_request);
|
};
|