// 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;
import "mojo/public/mojom/base/values.mojom";
[Stable]
union StringSuccessOrErrorReturn {
// If provided, an error has occurred.
string error;
// If provided, the call was a success and the result is this string.
string success_result;
};
[Stable]
union DictionarySuccessOrErrorReturn {
// If provided, an error has occurred.
string error;
// If provided, the call was a success and the result is this dictionary.
mojo_base.mojom.DictionaryValue success_result;
};
[Stable]
union ListValueSuccessOrErrorReturn {
// If provided, an error has occurred.
string error;
// If provided, the call was a success and the result is this list.
mojo_base.mojom.ListValue success_result;
};
[Stable]
union PropertiesSuccessOrErrorReturn {
// If provided, an error has occurred.
string error;
// If provided, the call was a success and the result is this value.
mojo_base.mojom.Value success_result;
};
[Stable, Extensible]
enum CaptivePortalStatus {
// The netwok state is unknown.
[Default] kUnknown = 0,
// The network is not connected.
kOffline,
// The network is connected and no portal is detected.
kOnline,
// The network is in one of the following states:
// - Connected but no internet is available and no proxy was detected.
// - A portal is suspected but no redirect was provided.
// - A portal state with a redirect URL.
kPortal,
// A proxy requiring authentication is detected.
kProxyAuthRequired,
};
// This interface mirrors NetworkingPrivateDelegateObserver. It allows Ash
// to notify lacros of such events. Lacros, on its turn, will then forward
// those notifications to its local observers.
[Stable, Uuid="67b08eef-7f47-43cd-8bf6-ad64f05af13c"]
interface NetworkingPrivateDelegateObserver {
// Notifies observers when properties may have changed for the networks listed
// in |network_guids|.
OnNetworksChangedEvent@0(array<string> network_guids);
// Notifies observers that the list of networks changed. |network_guids|
// contains the complete list of network guids.
OnNetworkListChangedEvent@1(array<string> network_guids);
// Fired when the list of devices has changed or any device state properties
// have changed.
[MinVersion=1]
OnDeviceStateListChanged@2();
// Fired when a portal detection for a network completes. Sends the guid of
// the network and the corresponding captive portal status.
[MinVersion=2]
OnPortalDetectionCompleted@3(string networkGuid,
CaptivePortalStatus status);
// Fired when any certificate list has changed.
[MinVersion=3]
OnCertificateListsChanged@4();
};
// This interface mirrors the NetworkingPrivateDelegate from Lacros to Ash to
// allow the networking.private / networking.onc extensions to be used. Note
// that this API is stable since years and will rather be deprecated than
// changed. As such the API does reflect the state as is.
// Furthermore this API will only be called for the primary profile user.
[Stable, Uuid="30ea6c34-8a25-4fd5-86d5-887e166d2b01"]
interface NetworkingPrivate {
// Called to retrieve a list of properties for the network identified by
// |guid| whereas |guid| gets returned by GetNetworks or CreateNetwork.
GetProperties@0(string guid) => (PropertiesSuccessOrErrorReturn result);
// Called to retrieve a list of managed properties for the network identified
// by |guid| whereas |guid| gets returned by GetNetworks or CreateNetwork.
GetManagedProperties@1(string guid)
=> (PropertiesSuccessOrErrorReturn result);
// Called to retrieve the current state for the network identified by |guid|.
GetState@2(string guid) => (DictionarySuccessOrErrorReturn result);
// Called to set the |properties| for the network identified by |guid|
// accordingly. Whereas |guid| gets returned by GetNetworks or CreateNetwork.
SetProperties@3(string guid,
mojo_base.mojom.DictionaryValue properties,
bool allow_set_shared_config)
=> (string error_or_empty);
// Called to create a network with the given |properties|. If |shared| is
// true, it can be shared with all other users.
CreateNetwork@4(bool shared,
mojo_base.mojom.Value properties)
=> (StringSuccessOrErrorReturn result);
// Called to forget the given network identified by |guid|
// whereas |guid| gets returned by GetNetworks or CreateNetwork.
ForgetNetwork@5(string guid,
bool allow_forget_shared_config)
=> (string error_or_empty);
// Call to get an enumeration of all the networks.
GetNetworks@6(string network_type,
bool configured_only,
bool visible_only,
int32 limit)
=> (ListValueSuccessOrErrorReturn result);
// Start a network connection for the network identified by |guid|
// whereas |guid| gets returned by GetNetworks or CreateNetwork.
StartConnect@7(string guid) => (string error_or_empty);
// Start to disconnect a network connection identified by |guid|
// whereas |guid| gets returned by GetNetworks or CreateNetwork.
StartDisconnect@8(string guid) => (string error_or_empty);
// Start the activation process for the network identified by |guid| whereas
// |guid| gets returned by GetNetworks or CreateNetwork.
StartActivate@9(string guid,
string carrier)
=> (string error_or_empty);
// Get the status of a captive portal for a network identified by |guid|
// whereas |guid| gets returned by GetNetworks or CreateNetwork.
GetCaptivePortalStatus@10(string guid) => (StringSuccessOrErrorReturn result);
// Unlocks a cellular sim card. |Guid| is the cellular network to unlock. If
// null is passed, the default cellular device will be used.
// |pin| is the current SIM PIN, or the new PIN if |puk| is provided.
// |puk| is provided by the operator for unblocking a blocked SIM.
UnlockCellularSim@11(string guid,
string pin,
string puk)
=> (string error_or_empty);
// Sets the state of the cellular SIM card. |Guid| is the cellular network to
// to set the SIM state of. If empty, the default cellular device will be
// used.
SetCellularSimState@12(string guid,
bool require_pin,
string current_pin,
string new_pin)
=> (string error_or_empty);
// Selects the cellular network. |Guid| is the cellular network to select
// whereas |guid| gets returned by GetNetworks or CreateNetwork.
SelectCellularMobileNetwork@13(string guid,
string network_id)
=> (string error_or_empty);
// Returns a list of ONC type strings.
GetEnabledNetworkTypes@14()
=> (mojo_base.mojom.ListValue? network_types);
// Returns a list of DeviceStateProperties.
GetDeviceStateList@15()
=> (array<mojo_base.mojom.DictionaryValue?>? device_list);
// Returns a dictionary of global policy values (may be empty). Note: the
// dictionary is expected to be a superset of the networkingPrivate
// GlobalPolicy dictionary. Any properties not in GlobalPolicy will be
// ignored.
GetGlobalPolicy@16() => (mojo_base.mojom.DictionaryValue? policies);
// Returns a dictionary of certificate lists.
GetCertificateLists@17()
=> (mojo_base.mojom.DictionaryValue certificates);
// Returns true if the ONC network type |type| is enabled.
EnableNetworkType@18(string type) => (bool enabled);
// Returns true if the ONC network type |type| is disabled.
DisableNetworkType@19(string type) => (bool disabled);
// Returns true if a scan was requested. It may take many seconds for a scan
// to complete. The scan may or may not trigger API events when complete.
// |type| is the type of network to request a scan for; if empty, scans for
// all supported network types except Cellular, which must be requested
// explicitly.
RequestScan@20(string type) => (bool scan_requested);
// Adds a new observer that will be notified by Ash when relevant events
// take place.
[MinVersion=1]
AddObserver@21(pending_remote<NetworkingPrivateDelegateObserver> observer);
};