blob: 400c7253ea831d486b943724171409f08391c5ba [file] [log] [blame]
// Copyright 2015 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.
// The <code>chrome.networkingPrivate</code> API is used for configuring
// network connections (Cellular, Ethernet, VPN, WiFi or WiMAX). This private
// API is only valid if called from a browser or app associated with the
// primary user. See the Open Network Configuration (ONC) documentation for
// descriptions of properties:
// <a href="https://code.google.com/p/chromium/codesearch#chromium/src/components/onc/docs/onc_spec.html">
// src/components/onc/docs/onc_spec.html</a>, or the
// <a href="http://www.chromium.org/chromium-os/chromiumos-design-docs/open-network-configuration">
// Open Network Configuration</a> page at chromium.org.
// <br><br>
// NOTE: Most dictionary properties and enum values use UpperCamelCase to match
// the ONC spec instead of the JavaScript lowerCamelCase convention.
// <br><br>
// "State" properties describe just the ONC properties returned by
// $(ref:networkingPrivate.getState) and $(ref:networkingPrivate.getNetworks).
// <br><br>
// "Config" properties describe just the ONC properties that can be configured
// through this API. NOTE: Not all configuration properties are exposed at this
// time, only those currently required by the Chrome Settings UI.
// TODO(stevenjb): Provide all configuration properties and types,
// crbug.com/380937.
// <br><br>
// TODO(stevenjb/pneubeck): Merge the ONC documentation with this document and
// use it as the ONC specification.
namespace networkingPrivate {
enum ActivationStateType {
Activated, Activating, NotActivated, PartiallyActivated
};
enum CaptivePortalStatus {
Unknown, Offline, Online, Portal, ProxyAuthRequired
};
enum ConnectionStateType {
Connected, Connecting, NotConnected
};
enum DeviceStateType {
// Device is available but not initialized.
Uninitialized,
// Device is initialized but not enabled.
Disabled,
// Enabled state has been requested but has not completed.
Enabling,
// Device is enabled.
Enabled,
// Device is prohibited.
Prohibited
};
enum IPConfigType {
DHCP, Static
};
enum NetworkType {
All, Cellular, Ethernet, Tether, VPN, Wireless, WiFi, WiMAX
};
enum ProxySettingsType {
Direct, Manual, PAC, WPAD
};
// Managed property types. These types all share a common structure:
// Active: For properties that are translated from the configuration
// manager (e.g. Shill), the 'active' value currently in use by the
// configuration manager.
// Effective: The effective source for the property: UserPolicy, DevicePolicy,
// UserSetting or SharedSetting.
// UserPolicy: The value provided by the user policy.
// DevicePolicy: The value provided by the device policy.
// UserSetting: The value set by the logged in user. Only provided if
// UserEditable is true (i.e. no policy affects the property or the
// policy provided value is recommened only).
// SharedSetting: The value set for all users of the device. Only provided if
// DeviceEditiable is true (i.e. no policy affects the property or the
// policy provided value is recommened only).
// UserEditable: True if a UserPolicy exists and allows the property to be
// edited (i.e. is a recommended value). Defaults to False.
// DeviceEditable: True if a DevicePolicy exists and allows the property to be
// edited (i.e. is a recommended value). Defaults to False.
dictionary ManagedBoolean {
boolean? Active;
DOMString? Effective;
boolean? UserPolicy;
boolean? DevicePolicy;
boolean? UserSetting;
boolean? SharedSetting;
boolean? UserEditable;
boolean? DeviceEditable;
};
dictionary ManagedLong {
long? Active;
DOMString? Effective;
long? UserPolicy;
long? DevicePolicy;
long? UserSetting;
long? SharedSetting;
boolean? UserEditable;
boolean? DeviceEditable;
};
dictionary ManagedDOMString {
DOMString? Active;
DOMString? Effective;
DOMString? UserPolicy;
DOMString? DevicePolicy;
DOMString? UserSetting;
DOMString? SharedSetting;
boolean? UserEditable;
boolean? DeviceEditable;
};
dictionary ManagedDOMStringList {
DOMString[]? Active;
DOMString? Effective;
DOMString[]? UserPolicy;
DOMString[]? DevicePolicy;
DOMString[]? UserSetting;
DOMString[]? SharedSetting;
boolean? UserEditable;
boolean? DeviceEditable;
};
dictionary ManagedIPConfigType {
IPConfigType? Active;
DOMString? Effective;
IPConfigType? UserPolicy;
IPConfigType? DevicePolicy;
IPConfigType? UserSetting;
IPConfigType? SharedSetting;
boolean? UserEditable;
boolean? DeviceEditable;
};
dictionary ManagedProxySettingsType {
ProxySettingsType? Active;
DOMString? Effective;
ProxySettingsType? UserPolicy;
ProxySettingsType? DevicePolicy;
ProxySettingsType? UserSetting;
ProxySettingsType? SharedSetting;
boolean? UserEditable;
boolean? DeviceEditable;
};
// Sub-dictionary types.
dictionary APNProperties {
DOMString AccessPointName;
DOMString? Authentication;
DOMString? Language;
DOMString? LocalizedName;
DOMString? Name;
DOMString? Password;
DOMString? Username;
};
dictionary ManagedAPNProperties {
ManagedDOMString AccessPointName;
ManagedDOMString? Authentication;
ManagedDOMString? Language;
ManagedDOMString? LocalizedName;
ManagedDOMString? Name;
ManagedDOMString? Password;
ManagedDOMString? Username;
};
dictionary ManagedAPNList {
APNProperties[]? Active;
DOMString? Effective;
APNProperties[]? UserPolicy;
APNProperties[]? DevicePolicy;
APNProperties[]? UserSetting;
APNProperties[]? SharedSetting;
boolean? UserEditable;
boolean? DeviceEditable;
};
dictionary CellularProviderProperties {
DOMString Name;
DOMString Code;
DOMString? Country;
};
dictionary CellularSimState {
// Whether or not a PIN should be required.
boolean requirePin;
// The current PIN (required for any change, even when the SIM is unlocked).
DOMString currentPin;
// If provided, change the PIN to |newPin|. |requirePin| must be true.
DOMString? newPin;
};
dictionary IssuerSubjectPattern {
DOMString? CommonName;
DOMString? Locality;
DOMString? Organization;
DOMString? OrganizationalUnit;
};
dictionary ManagedIssuerSubjectPattern {
ManagedDOMString? CommonName;
ManagedDOMString? Locality;
ManagedDOMString? Organization;
ManagedDOMString? OrganizationalUnit;
};
dictionary CertificatePattern {
DOMString[]? EnrollmentURI;
IssuerSubjectPattern? Issuer;
DOMString[]? IssuerCARef;
IssuerSubjectPattern? Subject;
};
dictionary ManagedCertificatePattern {
ManagedDOMStringList? EnrollmentURI;
ManagedIssuerSubjectPattern? Issuer;
ManagedDOMStringList? IssuerCARef;
ManagedIssuerSubjectPattern? Subject;
};
dictionary EAPProperties {
DOMString? AnonymousIdentity;
CertificatePattern? ClientCertPattern;
DOMString? ClientCertPKCS11Id;
DOMString? ClientCertRef;
DOMString? ClientCertType;
DOMString? Identity;
DOMString? Inner;
// The outer EAP type. Required by ONC, but may not be provided when
// translating from Shill.
DOMString? Outer;
DOMString? Password;
boolean? SaveCredentials;
DOMString[]? ServerCAPEMs;
DOMString[]? ServerCARefs;
DOMString? SubjectMatch;
DOMString? TLSVersionMax;
boolean? UseProactiveKeyCaching;
boolean? UseSystemCAs;
};
dictionary ManagedEAPProperties {
ManagedDOMString? AnonymousIdentity;
ManagedCertificatePattern? ClientCertPattern;
ManagedDOMString? ClientCertPKCS11Id;
ManagedDOMString? ClientCertRef;
ManagedDOMString? ClientCertType;
ManagedDOMString? Identity;
ManagedDOMString? Inner;
// The outer EAP type. Required by ONC, but may not be provided when
// translating from Shill.
ManagedDOMString? Outer;
ManagedDOMString? Password;
ManagedBoolean? SaveCredentials;
ManagedDOMStringList? ServerCAPEMs;
ManagedDOMStringList? ServerCARefs;
ManagedDOMString? SubjectMatch;
ManagedDOMString? TLSVersionMax;
ManagedBoolean? UseProactiveKeyCaching;
ManagedBoolean? UseSystemCAs;
};
dictionary FoundNetworkProperties {
DOMString Status;
DOMString NetworkId;
DOMString Technology;
DOMString? ShortName;
DOMString? LongName;
};
dictionary IPConfigProperties {
DOMString? Gateway;
DOMString? IPAddress;
DOMString[]? NameServers;
long? RoutingPrefix;
DOMString? Type;
DOMString? WebProxyAutoDiscoveryUrl;
};
dictionary ManagedIPConfigProperties {
ManagedDOMString? Gateway;
ManagedDOMString? IPAddress;
ManagedDOMStringList? NameServers;
ManagedLong? RoutingPrefix;
ManagedDOMString? Type;
ManagedDOMString? WebProxyAutoDiscoveryUrl;
};
dictionary XAUTHProperties {
DOMString? Password;
boolean? SaveCredentials;
DOMString? Username;
};
dictionary ManagedXAUTHProperties {
ManagedDOMString? Password;
ManagedBoolean? SaveCredentials;
ManagedDOMString? Username;
};
dictionary IPSecProperties {
DOMString AuthenticationType;
CertificatePattern? ClientCertPattern;
DOMString? ClientCertPKCS11Id;
DOMString? ClientCertRef;
DOMString? ClientCertType;
EAPProperties? EAP;
DOMString? Group;
long? IKEVersion;
DOMString? PSK;
boolean? SaveCredentials;
DOMString[]? ServerCAPEMs;
DOMString[]? ServerCARefs;
XAUTHProperties? XAUTH;
};
dictionary ManagedIPSecProperties {
ManagedDOMString AuthenticationType;
ManagedCertificatePattern? ClientCertPattern;
ManagedDOMString? ClientCertPKCS11Id;
ManagedDOMString? ClientCertRef;
ManagedDOMString? ClientCertType;
ManagedEAPProperties? EAP;
ManagedDOMString? Group;
ManagedLong? IKEVersion;
ManagedDOMString? PSK;
ManagedBoolean? SaveCredentials;
ManagedDOMStringList? ServerCAPEMs;
ManagedDOMStringList? ServerCARefs;
ManagedXAUTHProperties? XAUTH;
};
dictionary L2TPProperties {
boolean? LcpEchoDisabled;
DOMString? Password;
boolean? SaveCredentials;
DOMString? Username;
};
dictionary ManagedL2TPProperties {
ManagedBoolean? LcpEchoDisabled;
ManagedDOMString? Password;
ManagedBoolean? SaveCredentials;
ManagedDOMString? Username;
};
dictionary PaymentPortal {
DOMString Method;
DOMString? PostData;
DOMString? Url;
};
dictionary ProxyLocation {
DOMString Host;
long Port;
};
dictionary ManagedProxyLocation {
ManagedDOMString Host;
ManagedLong Port;
};
dictionary ManualProxySettings {
ProxyLocation? HTTPProxy;
ProxyLocation? SecureHTTPProxy;
ProxyLocation? FTPProxy;
ProxyLocation? SOCKS;
};
dictionary ManagedManualProxySettings {
ManagedProxyLocation? HTTPProxy;
ManagedProxyLocation? SecureHTTPProxy;
ManagedProxyLocation? FTPProxy;
ManagedProxyLocation? SOCKS;
};
dictionary ProxySettings {
ProxySettingsType Type;
ManualProxySettings? Manual;
DOMString[]? ExcludeDomains;
DOMString? PAC;
};
dictionary ManagedProxySettings {
ManagedProxySettingsType Type;
ManagedManualProxySettings? Manual;
ManagedDOMStringList? ExcludeDomains;
ManagedDOMString? PAC;
};
dictionary VerifyX509 {
DOMString? Name;
DOMString? Type;
};
dictionary ManagedVerifyX509 {
ManagedDOMString? Name;
ManagedDOMString? Type;
};
dictionary OpenVPNProperties {
DOMString? Auth;
DOMString? AuthRetry;
boolean? AuthNoCache;
DOMString? Cipher;
DOMString? ClientCertPKCS11Id;
CertificatePattern? ClientCertPattern;
DOMString? ClientCertRef;
DOMString? ClientCertType;
DOMString? CompLZO;
boolean? CompNoAdapt;
DOMString[]? ExtraHosts;
boolean? IgnoreDefaultRoute;
DOMString? KeyDirection;
DOMString? NsCertType;
DOMString? OTP;
DOMString? Password;
long? Port;
DOMString? Proto;
boolean? PushPeerInfo;
DOMString? RemoteCertEKU;
DOMString[]? RemoteCertKU;
DOMString? RemoteCertTLS;
long? RenegSec;
boolean? SaveCredentials;
DOMString[]? ServerCAPEMs;
DOMString[]? ServerCARefs;
DOMString? ServerCertRef;
long? ServerPollTimeout;
long? Shaper;
DOMString? StaticChallenge;
DOMString? TLSAuthContents;
DOMString? TLSRemote;
DOMString? TLSVersionMin;
DOMString? UserAuthenticationType;
DOMString? Username;
DOMString? Verb;
DOMString? VerifyHash;
VerifyX509? VerifyX509;
};
dictionary ManagedOpenVPNProperties {
ManagedDOMString? Auth;
ManagedDOMString? AuthRetry;
ManagedBoolean? AuthNoCache;
ManagedDOMString? Cipher;
ManagedDOMString? ClientCertPKCS11Id;
ManagedCertificatePattern? ClientCertPattern;
ManagedDOMString? ClientCertRef;
ManagedDOMString? ClientCertType;
ManagedDOMString? CompLZO;
ManagedBoolean? CompNoAdapt;
ManagedDOMStringList? ExtraHosts;
ManagedBoolean? IgnoreDefaultRoute;
ManagedDOMString? KeyDirection;
ManagedDOMString? NsCertType;
ManagedDOMString? OTP;
ManagedDOMString? Password;
ManagedLong? Port;
ManagedDOMString? Proto;
ManagedBoolean? PushPeerInfo;
ManagedDOMString? RemoteCertEKU;
ManagedDOMStringList? RemoteCertKU;
ManagedDOMString? RemoteCertTLS;
ManagedLong? RenegSec;
ManagedBoolean? SaveCredentials;
ManagedDOMStringList? ServerCAPEMs;
ManagedDOMStringList? ServerCARefs;
ManagedDOMString? ServerCertRef;
ManagedLong? ServerPollTimeout;
ManagedLong? Shaper;
ManagedDOMString? StaticChallenge;
ManagedDOMString? TLSAuthContents;
ManagedDOMString? TLSRemote;
ManagedDOMString? TLSVersionMin;
ManagedDOMString? UserAuthenticationType;
ManagedDOMString? Username;
ManagedDOMString? Verb;
ManagedDOMString? VerifyHash;
ManagedVerifyX509? VerifyX509;
};
dictionary SIMLockStatus {
DOMString LockType; // sim-pin, sim-puk, or ''
boolean LockEnabled;
long? RetriesLeft;
};
dictionary ThirdPartyVPNProperties {
DOMString ExtensionID;
DOMString? ProviderName;
};
dictionary ManagedThirdPartyVPNProperties {
ManagedDOMString ExtensionID;
DOMString? ProviderName;
};
// Network type dictionary types.
dictionary CellularProperties {
boolean? AutoConnect;
APNProperties? APN;
APNProperties[]? APNList;
DOMString? ActivationType;
ActivationStateType? ActivationState;
boolean? AllowRoaming;
DOMString? Carrier;
DOMString? ESN;
DOMString? Family;
DOMString? FirmwareRevision;
FoundNetworkProperties[]? FoundNetworks;
DOMString? HardwareRevision;
CellularProviderProperties? HomeProvider;
DOMString? ICCID;
DOMString? IMEI;
APNProperties? LastGoodAPN;
DOMString? Manufacturer;
DOMString? MDN;
DOMString? MEID;
DOMString? MIN;
DOMString? ModelID;
DOMString? NetworkTechnology;
PaymentPortal? PaymentPortal;
long? PRLVersion;
DOMString? RoamingState;
boolean? Scanning;
CellularProviderProperties? ServingOperator;
SIMLockStatus? SIMLockStatus;
boolean? SIMPresent;
long? SignalStrength;
boolean? SupportNetworkScan;
DOMString[]? SupportedCarriers;
};
dictionary ManagedCellularProperties {
ManagedBoolean? AutoConnect;
ManagedAPNProperties? APN;
ManagedAPNList? APNList;
DOMString? ActivationType;
ActivationStateType? ActivationState;
boolean? AllowRoaming;
ManagedDOMString? Carrier;
DOMString? ESN;
DOMString? Family;
DOMString? FirmwareRevision;
FoundNetworkProperties[]? FoundNetworks;
DOMString? HardwareRevision;
CellularProviderProperties? HomeProvider;
DOMString? ICCID;
DOMString? IMEI;
APNProperties? LastGoodAPN;
DOMString? Manufacturer;
DOMString? MDN;
DOMString? MEID;
DOMString? MIN;
DOMString? ModelID;
DOMString? NetworkTechnology;
PaymentPortal? PaymentPortal;
long? PRLVersion;
DOMString? RoamingState;
boolean? Scanning;
CellularProviderProperties? ServingOperator;
SIMLockStatus? SIMLockStatus;
boolean? SIMPresent;
long? SignalStrength;
boolean? SupportNetworkScan;
DOMString[]? SupportedCarriers;
};
dictionary CellularStateProperties {
ActivationStateType? ActivationState;
DOMString? NetworkTechnology;
DOMString? RoamingState;
boolean? Scanning;
boolean? SIMPresent;
long? SignalStrength;
};
dictionary EAPStateProperties {
DOMString? Outer;
};
dictionary EthernetProperties {
boolean? AutoConnect;
DOMString? Authentication;
EAPProperties? EAP;
};
dictionary ManagedEthernetProperties {
ManagedBoolean? AutoConnect;
ManagedDOMString? Authentication;
ManagedEAPProperties? EAP;
};
dictionary EthernetStateProperties {
DOMString Authentication;
};
dictionary TetherProperties {
long? BatteryPercentage;
DOMString? Carrier;
boolean HasConnectedToHost;
long? SignalStrength;
};
dictionary VPNProperties {
boolean? AutoConnect;
DOMString? Host;
IPSecProperties? IPsec;
L2TPProperties? L2TP;
OpenVPNProperties? OpenVPN;
ThirdPartyVPNProperties? ThirdPartyVPN;
// The VPN type. This cannot be an enum because of 'L2TP-IPSec'.
// This is optional for NetworkConfigProperties which is passed to
// setProperties which may be used to set only specific properties.
DOMString? Type;
};
dictionary ManagedVPNProperties {
ManagedBoolean? AutoConnect;
ManagedDOMString? Host;
ManagedIPSecProperties? IPsec;
ManagedL2TPProperties? L2TP;
ManagedOpenVPNProperties? OpenVPN;
ManagedThirdPartyVPNProperties? ThirdPartyVPN;
ManagedDOMString? Type;
};
dictionary VPNStateProperties {
DOMString Type;
IPSecProperties? IPsec;
ThirdPartyVPNProperties? ThirdPartyVPN;
};
dictionary WiFiProperties {
boolean? AllowGatewayARPPolling;
boolean? AutoConnect;
DOMString? BSSID;
EAPProperties? EAP;
long? Frequency;
long[]? FrequencyList;
boolean? FTEnabled;
DOMString? HexSSID;
boolean? HiddenSSID;
DOMString? Passphrase;
long? RoamThreshold;
DOMString? SSID;
DOMString? Security;
long? SignalStrength;
DOMString? TetheringState;
};
dictionary ManagedWiFiProperties {
ManagedBoolean? AllowGatewayARPPolling;
ManagedBoolean? AutoConnect;
DOMString? BSSID;
ManagedEAPProperties? EAP;
long? Frequency;
long[]? FrequencyList;
ManagedBoolean? FTEnabled;
ManagedDOMString? HexSSID;
ManagedBoolean? HiddenSSID;
ManagedDOMString? Passphrase;
ManagedLong? RoamThreshold;
ManagedDOMString? SSID;
ManagedDOMString Security;
long? SignalStrength;
DOMString? TetheringState;
};
dictionary WiFiStateProperties {
DOMString? BSSID;
EAPStateProperties? EAP;
long? Frequency;
DOMString? HexSSID;
DOMString Security;
long? SignalStrength;
DOMString? SSID;
DOMString? TetheringState;
};
dictionary WiMAXProperties {
boolean? AutoConnect;
EAPProperties? EAP;
long? SignalStrength;
};
dictionary ManagedWiMAXProperties {
ManagedBoolean? AutoConnect;
ManagedEAPProperties? EAP;
long? SignalStrength;
};
dictionary WiMAXStateProperties {
long? SignalStrength;
};
dictionary NetworkConfigProperties {
CellularProperties? Cellular;
EthernetProperties? Ethernet;
DOMString? GUID;
IPConfigType? IPAddressConfigType;
DOMString? Name;
IPConfigType? NameServersConfigType;
long? Priority;
ProxySettings? ProxySettings;
IPConfigProperties? StaticIPConfig;
NetworkType? Type;
VPNProperties? VPN;
WiFiProperties? WiFi;
WiMAXProperties? WiMAX;
};
dictionary NetworkProperties {
CellularProperties? Cellular;
boolean? Connectable;
ConnectionStateType? ConnectionState;
DOMString? ErrorState;
EthernetProperties? Ethernet;
DOMString GUID;
IPConfigType? IPAddressConfigType;
IPConfigProperties[]? IPConfigs;
DOMString? MacAddress;
DOMString? Name;
IPConfigType? NameServersConfigType;
long? Priority;
ProxySettings? ProxySettings;
boolean? RestrictedConnectivity;
IPConfigProperties? StaticIPConfig;
IPConfigProperties? SavedIPConfig;
// Indicates whether and how the network is configured.
// 'Source' can be Device, DevicePolicy, User, UserPolicy or None.
// 'None' conflicts with extension code generation so we must use a string
// for 'Source' instead of a SourceType enum.
DOMString? Source;
TetherProperties? Tether;
NetworkType Type;
VPNProperties? VPN;
WiFiProperties? WiFi;
WiMAXProperties? WiMAX;
};
dictionary ManagedProperties {
ManagedCellularProperties? Cellular;
boolean? Connectable;
ConnectionStateType? ConnectionState;
DOMString? ErrorState;
ManagedEthernetProperties? Ethernet;
DOMString GUID;
ManagedIPConfigType? IPAddressConfigType;
IPConfigProperties[]? IPConfigs;
DOMString? MacAddress;
ManagedDOMString? Name;
ManagedIPConfigType? NameServersConfigType;
ManagedLong? Priority;
ManagedProxySettings? ProxySettings;
boolean? RestrictedConnectivity;
ManagedIPConfigProperties? StaticIPConfig;
IPConfigProperties? SavedIPConfig;
// See $(ref:NetworkProperties.Source).
DOMString? Source;
TetherProperties? Tether;
NetworkType Type;
ManagedVPNProperties? VPN;
ManagedWiFiProperties? WiFi;
ManagedWiMAXProperties? WiMAX;
};
dictionary NetworkStateProperties {
CellularStateProperties? Cellular;
boolean? Connectable;
ConnectionStateType? ConnectionState;
EthernetStateProperties? Ethernet;
DOMString? ErrorState;
DOMString GUID;
DOMString? Name;
long? Priority;
// See $(ref:NetworkProperties.Source).
DOMString? Source;
TetherProperties? Tether;
NetworkType Type;
VPNStateProperties? VPN;
WiFiStateProperties? WiFi;
WiMAXStateProperties? WiMAX;
};
dictionary DeviceStateProperties {
// Set if the device is enabled. True if the device is currently scanning.
boolean? Scanning;
// The SIM lock status if Type = Cellular and SIMPresent = True.
SIMLockStatus? SIMLockStatus;
// Set to the SIM present state if the device type is Cellular.
boolean? SIMPresent;
// The current state of the device.
DeviceStateType State;
// The network type associated with the device (Cellular, Ethernet, WiFi, or
// WiMAX).
NetworkType Type;
// Whether or not any managed networks are available/visible.
boolean? ManagedNetworkAvailable;
};
dictionary VerificationProperties {
// A string containing a PEM-encoded (including the 'BEGIN CERTIFICATE'
// header and 'END CERTIFICATE' footer) X.509 certificate for use in
// verifying the signed data.
DOMString certificate;
// An array of PEM-encoded X.509 intermediate certificate authority
// certificates. Each PEM-encoded certificate is expected to have the
// 'BEGIN CERTIFICATE' header and 'END CERTIFICATE' footer.
DOMString[]? intermediateCertificates;
// A string containing a base64-encoded RSAPublicKey ASN.1 structure,
// representing the public key to be used by
// $(ref:verifyAndEncryptCredentials) and $(ref:verifyAndEncryptData)
// methods.
DOMString publicKey;
// A string containing a base64-encoded random binary data for use in
// verifying the signed data.
DOMString nonce;
// A string containing the identifying data string signed by the device.
DOMString signedData;
// A string containing the serial number of the device.
DOMString deviceSerial;
// A string containing the SSID of the device. Should be empty for new
// configurations.
DOMString deviceSsid;
// A string containing the BSSID of the device. Should be empty for new
// configurations.
DOMString deviceBssid;
};
dictionary NetworkFilter {
// The type of networks to return.
NetworkType networkType;
// If true, only include visible (physically connected or in-range)
// networks. Defaults to 'false'.
boolean? visible;
// If true, only include configured (saved) networks. Defaults to 'false'.
boolean? configured;
// Maximum number of networks to return. Defaults to 1000 if unspecified.
// Use 0 for no limit.
long? limit;
};
dictionary GlobalPolicy {
// If true, only policy networks may auto connect. Defaults to false.
boolean? AllowOnlyPolicyNetworksToAutoconnect;
// If true, only policy networks may be connected to and no new networks may
// be added or configured. Defaults to false.
boolean? AllowOnlyPolicyNetworksToConnect;
// If true and a managed network is available in the visible network list,
// only policy networks may be connected to and no new networks may be added
// or configured. Defaults to false.
boolean? AllowOnlyPolicyNetworksToConnectIfAvailable;
// List of blacklisted networks. Connections to blacklisted networks are
// prohibited. Networks can be whitelisted again by specifying an explicit
// network configuration. Defaults to an empty list.
DOMString[]? BlacklistedHexSSIDs;
};
dictionary Certificate {
// Unique hash for the certificate.
DOMString hash;
// Certificate issuer common name.
DOMString issuedBy;
// Certificate name or nickname.
DOMString issuedTo;
// PEM for server CA certificates.
DOMString? pem;
// PKCS#11 id for user certificates.
DOMString? PKCS11Id;
// Whether or not the certificate is hardware backed.
boolean hardwareBacked;
// Whether or not the certificate is device wide.
boolean deviceWide;
};
dictionary CertificateLists {
// List of avaliable server CA certificates.
Certificate[] serverCaCertificates;
// List of available user certificates.
Certificate[] userCertificates;
};
callback VoidCallback = void();
callback BooleanCallback = void(boolean result);
callback StringCallback = void(DOMString result);
// TODO(stevenjb): Use NetworkProperties for |result| once defined.
callback GetPropertiesCallback = void(NetworkProperties result);
// TODO(stevenjb): Use ManagedNetworkProperties for |result| once defined.
callback GetManagedPropertiesCallback = void(ManagedProperties result);
callback GetStatePropertiesCallback = void(NetworkStateProperties result);
callback GetNetworksCallback = void(NetworkStateProperties[] result);
callback GetDeviceStatesCallback = void(DeviceStateProperties[] result);
callback GetEnabledNetworkTypesCallback = void(NetworkType[] result);
callback CaptivePortalStatusCallback = void(CaptivePortalStatus result);
callback GetGlobalPolicyCallback = void(GlobalPolicy result);
callback GetCertificateListsCallback = void(CertificateLists result);
// These functions all report failures via $(ref:runtime.lastError).
interface Functions {
// Gets all the properties of the network with id networkGuid. Includes all
// properties of the network (read-only and read/write values).
// |networkGuid|: The GUID of the network to get properties for.
// |callback|: Called with the network properties when received.
static void getProperties(DOMString networkGuid,
GetPropertiesCallback callback);
// Gets the merged properties of the network with id networkGuid from the
// sources: User settings, shared settings, user policy, device policy and
// the currently active settings.
// |networkGuid|: The GUID of the network to get properties for.
// |callback|: Called with the managed network properties when received.
static void getManagedProperties(DOMString networkGuid,
GetManagedPropertiesCallback callback);
// Gets the cached read-only properties of the network with id networkGuid.
// This is meant to be a higher performance function than
// $(ref:getProperties), which requires a round trip to query the networking
// subsystem. The following properties are returned for all networks: GUID,
// Type, Name, WiFi.Security. Additional properties are provided for visible
// networks: ConnectionState, ErrorState, WiFi.SignalStrength,
// Cellular.NetworkTechnology, Cellular.ActivationState,
// Cellular.RoamingState.
// |networkGuid|: The GUID of the network to get properties for.
// |callback|: Called immediately with the network state properties.
static void getState(DOMString networkGuid,
GetStatePropertiesCallback callback);
// Sets the properties of the network with id |networkGuid|. This is only
// valid for configured networks (Source != None). Unconfigured visible
// networks should use createNetwork instead.
// |networkGuid|: The GUID of the network to set properties for.
// |properties|: The properties to set.
// |callback|: Called when the operation has completed.
static void setProperties(DOMString networkGuid,
NetworkConfigProperties properties,
optional VoidCallback callback);
// Creates a new network configuration from properties. If a matching
// configured network already exists, this will fail. Otherwise returns the
// guid of the new network.
// |shared|: If true, share this network configuration with other users.
// |properties|: The properties to configure the new network with.
// |callback|: Called with the GUID for the new network configuration once
// the network has been created.
static void createNetwork(boolean shared,
NetworkConfigProperties properties,
optional StringCallback callback);
// Forgets a network configuration by clearing any configured properties for
// the network with GUID 'networkGuid'. This may also include any other
// networks with matching identifiers (e.g. WiFi SSID and Security). If no
// such configuration exists, an error will be set and the operation will
// fail.
// |networkGuid|: The GUID of the network to forget.
// |callback|: Called when the operation has completed.
static void forgetNetwork(DOMString networkGuid,
optional VoidCallback callback);
// Returns a list of network objects with the same properties provided by
// $(ref:networkingPrivate.getState). A filter is provided to specify the
// type of networks returned and to limit the number of networks. Networks
// are ordered by the system based on their priority, with connected or
// connecting networks listed first.
// |filter|: Describes which networks to return.
// |callback|: Called with a dictionary of networks and their state
// properties when received.
static void getNetworks(NetworkFilter filter,
GetNetworksCallback callback);
// Deprecated. Please use $(ref:networkingPrivate.getNetworks) with
// filter.visible = true instead.
[deprecated="Use getNetworks."] static void getVisibleNetworks(
NetworkType networkType,
GetNetworksCallback callback);
// Deprecated. Please use $(ref:networkingPrivate.getDeviceStates) instead.
[deprecated="Use getDeviceStates."] static void getEnabledNetworkTypes(
GetEnabledNetworkTypesCallback callback);
// Returns a list of $(ref:networkingPrivate.DeviceStateProperties) objects.
// |callback|: Called with a list of devices and their state.
static void getDeviceStates(GetDeviceStatesCallback callback);
// Enables any devices matching the specified network type. Note, the type
// might represent multiple network types (e.g. 'Wireless').
// |networkType|: The type of network to enable.
static void enableNetworkType(NetworkType networkType);
// Disables any devices matching the specified network type. See note for
// $(ref:networkingPrivate.enableNetworkType).
// |networkType|: The type of network to disable.
static void disableNetworkType(NetworkType networkType);
// Requests that the networking subsystem scan for new networks and
// update the list returned by $(ref:getVisibleNetworks). This is only a
// request: the network subsystem can choose to ignore it. If the list
// is updated, then the $(ref:onNetworkListChanged) event will be fired.
// |networkType|: If provided, requests a scan specific to the type.
// For Cellular a mobile network scan will be requested if supported.
static void requestNetworkScan(optional NetworkType networkType);
// Starts a connection to the network with networkGuid.
// |networkGuid|: The GUID of the network to connect to.
// |callback|: Called when the connect request has been sent. Note: the
// connection may not have completed. Observe $(ref:onNetworksChanged)
// to be notified when a network state changes. If the connect request
// immediately failed (e.g. the network is unconfigured),
// $(ref:runtime.lastError) will be set with a failure reason.
static void startConnect(DOMString networkGuid,
optional VoidCallback callback);
// Starts a disconnect from the network with networkGuid.
// |networkGuid|: The GUID of the network to disconnect from.
// |callback|: Called when the disconnect request has been sent. See note
// for $(ref:startConnect).
static void startDisconnect(DOMString networkGuid,
optional VoidCallback callback);
// Starts activation of the Cellular network with networkGuid. If called
// for a network that is already activated, or for a network with a carrier
// that can not be directly activated, this will show the account details
// page for the carrier if possible.
// |networkGuid|: The GUID of the Cellular network to activate.
// |carrier|: Optional name of carrier to activate.
// |callback|: Called when the activation request has been sent. See note
// for $(ref:startConnect).
static void startActivate(DOMString networkGuid,
optional DOMString carrier,
optional VoidCallback callback);
// Verifies that the device is a trusted device.
// |properties|: Properties of the destination to use in verifying that it
// is a trusted device.
// |callback|: A callback function that indicates whether or not the device
// is a trusted device.
[nodoc, deprecated = "Use networking.castPrivate API."]
static void verifyDestination(VerificationProperties properties,
BooleanCallback callback);
// Verifies that the device is a trusted device and encrypts supplied
// data with device public key.
// |properties|: Properties of the destination to use in verifying that it
// is a trusted device.
// |data|: A string containing the base64-encoded data to encrypt.
// |callback|: A callback function that receives base64-encoded encrypted
// data to send to a trusted device.
[nodoc, deprecated = "Use networking.castPrivate API."]
static void verifyAndEncryptData(VerificationProperties properties,
DOMString data,
StringCallback callback);
// Enables TDLS for WiFi traffic with a specified peer if available.
// |ip_or_mac_address|: The IP or MAC address of the peer with which to
// enable a TDLS connection.
// |enabled| If true, enable TDLS, otherwise disable TDLS.
// |callback|: A callback function that receives a string with an error or
// the current TDLS status. 'Failed' indicates that the request failed
// (e.g. MAC address lookup failed). 'Timeout' indicates that the lookup
// timed out. Otherwise a valid status is returned (see
// $(ref:getWifiTDLSStatus)).
[nodoc, deprecated = "Use networking.castPrivate API."]
static void setWifiTDLSEnabledState(DOMString ip_or_mac_address,
boolean enabled,
optional StringCallback callback);
// Returns the current TDLS status for the specified peer.
// |ip_or_mac_address|: The IP or MAC address of the peer.
// |callback|: A callback function that receives a string with the current
// TDLS status which can be 'Connected', 'Disabled', 'Disconnected',
// 'Nonexistent', or 'Unknown'.
[nodoc, deprecated = "Use networking.castPrivate API."]
static void getWifiTDLSStatus(DOMString ip_or_mac_address,
StringCallback callback);
// Returns captive portal status for the network matching 'networkGuid'.
// |networkGuid|: The GUID of the network to get captive portal status for.
// |callback|: A callback function that returns the results of the query for
// network captive portal status.
static void getCaptivePortalStatus(DOMString networkGuid,
CaptivePortalStatusCallback callback);
// Unlocks a Cellular SIM card.
// * If the SIM is PIN locked, |pin| will be used to unlock the SIM and
// the |puk| argument will be ignored if provided.
// * If the SIM is PUK locked, |puk| and |pin| must be provided. If the
// operation succeeds (|puk| is valid), the PIN will be set to |pin|.
// (If |pin| is empty or invalid the operation will fail).
// |networkGuid|: The GUID of the cellular network to unlock.
// If empty, the default cellular device will be used.
// |pin|: The current SIM PIN, or the new PIN if PUK is provided.
// |puk|: The operator provided PUK for unblocking a blocked SIM.
// |callback|: Called when the operation has completed.
static void unlockCellularSim(DOMString networkGuid,
DOMString pin,
optional DOMString puk,
optional VoidCallback callback);
// Sets whether or not SIM locking is enabled (i.e a PIN will be required
// when the device is powered) and changes the PIN if a new PIN is
// specified. If the new PIN is provided but not valid (e.g. too short)
// the operation will fail. This will not lock the SIM; that is handled
// automatically by the device. NOTE: If the SIM is locked, it must first be
// unlocked with unlockCellularSim() before this can be called (otherwise it
// will fail and $(ref:runtime.lastError) will be set to Error.SimLocked).
// |networkGuid|: The GUID of the cellular network to set the SIM state of.
// If empty, the default cellular device will be used.
// |simState|: The SIM state to set.
// |callback|: Called when the operation has completed.
static void setCellularSimState(DOMString networkGuid,
CellularSimState simState,
optional VoidCallback callback);
// Selects which Cellular Mobile Network to use. |networkId| must be the
// NetworkId property of a member of Cellular.FoundNetworks from the
// network properties for the specified Cellular network.
// |networkGuid|: The GUID of the cellular network to select the network
// for. If empty, the default cellular device will be used.
// |networkId|: The networkId to select.
// |callback|: Called when the operation has completed.
static void selectCellularMobileNetwork(DOMString networkGuid,
DOMString networkId,
optional VoidCallback callback);
// Gets the global policy properties. These properties are not expected to
// change during a session.
static void getGlobalPolicy(GetGlobalPolicyCallback callback);
// Gets the lists of certificates available for network configuration.
static void getCertificateLists(GetCertificateListsCallback callback);
};
interface Events {
// Fired when the properties change on any of the networks. Sends a list of
// GUIDs for networks whose properties have changed.
static void onNetworksChanged(DOMString[] changes);
// Fired when the list of networks has changed. Sends a complete list of
// GUIDs for all the current networks.
static void onNetworkListChanged(DOMString[] changes);
// Fired when the list of devices has changed or any device state properties
// have changed.
static void onDeviceStateListChanged();
// Fired when a portal detection for a network completes. Sends the guid of
// the network and the corresponding captive portal status.
static void onPortalDetectionCompleted(DOMString networkGuid,
CaptivePortalStatus status);
// Fired when any certificate list has changed.
static void onCertificateListsChanged();
};
};