blob: f190c7f43ae977b6e5a142f7824be3c1cdd042cd [file] [log] [blame]
// 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.
module ash.mojom;
import "mojo/public/mojom/base/time.mojom";
// Describes a third-party VPN provided by an extension (e.g. Cisco AnyConnect).
struct ThirdPartyVpnProvider {
string name;
string extension_id;
};
// Describes an Arc VPN provider. last_launch_time is used to sort the list of
// Arc VPN providers.
struct ArcVpnProvider {
// Unique android package name of the Arc VPN provider. e.g. vpn.app.package
string package_name;
// App name of Arc VPN provider. e.g. VPNapp
string app_name;
// Unique app id for launching the app. e.g. pbmkokpdlpfmapoiccpblbmjjhhabjaa
string app_id;
// Last launch time of the Arc VPN provider.
mojo_base.mojom.Time last_launch_time;
};
// Manages the VPN provider list in ash. Allows extension-backed VPN providers
// to be added. Ash handles the built-in OpenVPN / L2TP provider internally.
// Allows Arc VPN providers to be added and removed, updates providers' launch
// time so that they are shown in LRU order, updates providers' name change.
interface VpnList {
// Sets the list of third-party VPN providers. The |providers| array may be
// empty to clear the list (e.g. after the last third-party VPN extension is
// uninstalled).
SetThirdPartyVpnProviders(array<ThirdPartyVpnProvider> providers);
// Sets the list of Arc VPN providers.
SetArcVpnProviders(array<ArcVpnProvider> arc_providers);
// Adds or updates an Arc VPN provider.
AddOrUpdateArcVPNProvider(ArcVpnProvider arc_provider);
// Removes an Arc VPN provider.
RemoveArcVPNProvider(string package_name);
};