// Copyright 2022 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
module crosapi.mojom;
// Set of parameters required to install the kiosk app from a cached location.
[Stable]
struct AppInstallParams {
// Id of the primary kiosk app.
string id@0;
// Location of the crx file in local cache.
string crx_file_location@1;
// Version of the app to be installed.
string version@2;
// Indicates whether the app should be downloaded from Chrome Web Store.
bool is_store_app@3;
};
[Stable, Extensible]
enum ChromeKioskInstallResult {
[Default] kUnknown = 0,
// Installation completed successfully, kiosk is ready to launch.
kSuccess = 1,
// Primary app is not cached yet, network is required to rectify.
kPrimaryAppNotCached = 2,
// Install of primary app failed
kPrimaryAppInstallFailed = 3,
// Install of a secondary app failed
kSecondaryAppInstallFailed = 4,
// The primary app does not have kiosk support in the manifest
kPrimaryAppNotKioskEnabled = 5,
};
[Stable, Extensible]
enum ChromeKioskLaunchResult {
[Default] kUnknown = 0,
// Launch of kiosk app was successful.
kSuccess = 1,
// Primary or secondary apps are not ready for launch
kUnableToLaunch = 2,
// The primary app is not offline enabled, but network is not ready
kNetworkMissing = 3,
};
// A client implemented in lacros-chrome for the DownloadController which is
// implemented in ash-chrome.
//
// Next MinVersion: 1
// Next ID: 1
[Stable]
interface ChromeKioskLaunchController {
// Trigger a full install of the kiosk app into Lacros chrome.
// Note that this contains the finalization below, so the caller is expected
// to only call one of the two methods.
// |is_network_ready| indicates whether the device has network connectivity.
InstallKioskApp@0(AppInstallParams params)
=> (ChromeKioskInstallResult result);
// Only finalize the app installation. This performs the last steps of
// verifying that the kiosk app and its dependencies are installed and
// enabled.
// |is_network_ready| indicates whether the device has network connectivity.
LaunchKioskApp@1(string app_id, bool is_network_ready)
=> (ChromeKioskLaunchResult result);
};
// Service used to register a ChromeAppKioskInstaller into ash.
// Implemented in ash-chrome.
//
// Next MinVersion: 1
// Next ID: 1
[Stable, Uuid="7aca9ca3-6d25-450d-83ee-1a0069df0eb3"]
interface ChromeAppKioskService{
// Binds the ChromeAppKioskInstaller interface, which allows the
// Kiosk startup process running in ash-chrome to trigger the installation of
// the kiosk app into lacros-chrome.
BindLaunchController@0(
pending_remote<ChromeKioskLaunchController> controller);
};