blob: 587bc914d40967e4b404bd83af122a0a1ee81b45 [file] [log] [blame]
// Copyright 2017 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.
// <p>
// The <code>chrome.networking.onc</code> API is used for configuring
// network connections (Cellular, Ethernet, VPN, WiFi or WiMAX).
// This API is available in Chrome OS kiosk sessions.
// </p>
// <p>
// Network connection configurations are specified following
// <a href="https://chromium.googlesource.com/chromium/src/+/master/components/onc/docs/onc_spec.md">
// Open Network Configuration (ONC)</a> specification.
// </p>
// <p>
// <b>NOTE</b>: Most dictionary properties and enum values use UpperCamelCase
// to match the ONC specification instead of the JavaScript lowerCamelCase
// convention.
// </p>
namespace networking.onc {
enum ActivationStateType {
Activated, Activating, NotActivated, PartiallyActivated
};
enum CaptivePortalStatus {
Unknown, Offline, Online, Portal, ProxyAuthRequired
};
enum ClientCertificateType {
Ref, Pattern
};
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
};
dictionary ManagedBoolean {
// The active value currently used by the network configuration manager
// (e.g. Shill).
boolean? Active;
// The source from which the effective property value was determined.
DOMString? Effective;
// The property value provided by the user policy.
boolean? UserPolicy;
// The property value provided by the device policy.
boolean? DevicePolicy;
// The property value set by the logged in user. Only provided if
// |UserEditable| is <code>true</code>.
boolean? UserSetting;
// The value set for all users of the device. Only provided if
// |DeviceEditiable| is <code>true</code>.
boolean? SharedSetting;
// Whether a UserPolicy for the property exists and allows the property to
// be edited (i.e. the policy set recommended property value).
// Defaults to <code>false</code>.
boolean? UserEditable;
// Whether a DevicePolicy for the property exists and allows the property to
// be edited (i.e. the policy set recommended property value).
// Defaults to <code>false</code>.
boolean? DeviceEditable;
};
dictionary ManagedLong {
// The active value currently used by the network configuration manager
// (e.g. Shill).
long? Active;
// The source from which the effective property value was determined.
DOMString? Effective;
// The property value provided by the user policy.
long? UserPolicy;
// The property value provided by the device policy.
long? DevicePolicy;
// The property value set by the logged in user. Only provided if
// |UserEditable| is <code>true</code>.
long? UserSetting;
// The value set for all users of the device. Only provided if
// |DeviceEditiable| is <code>true</code>.
long? SharedSetting;
// Whether a UserPolicy for the property exists and allows the property to
// be edited (i.e. the policy set recommended property value).
// Defaults to <code>false</code>.
boolean? UserEditable;
// Whether a DevicePolicy for the property exists and allows the property to
// be edited (i.e. the policy set recommended property value).
// Defaults to <code>false</code>.
boolean? DeviceEditable;
};
dictionary ManagedDOMString {
// The active value currently used by the network configuration manager
// (e.g. Shill).
DOMString? Active;
// The source from which the effective property value was determined.
DOMString? Effective;
// The property value provided by the user policy.
DOMString? UserPolicy;
// The property value provided by the device policy.
DOMString? DevicePolicy;
// The property value set by the logged in user. Only provided if
// |UserEditable| is <code>true</code>.
DOMString? UserSetting;
// The value set for all users of the device. Only provided if
// |DeviceEditiable| is <code>true</code>.
DOMString? SharedSetting;
// Whether a UserPolicy for the property exists and allows the property to
// be edited (i.e. the policy set recommended property value).
// Defaults to <code>false</code>.
boolean? UserEditable;
// Whether a DevicePolicy for the property exists and allows the property to
// be edited (i.e. the policy set recommended property value).
// Defaults to <code>false</code>.
boolean? DeviceEditable;
};
dictionary ManagedDOMStringList {
// The active value currently used by the network configuration manager
// (e.g. Shill).
DOMString[]? Active;
// The source from which the effective property value was determined.
DOMString? Effective;
// The property value provided by the user policy.
DOMString[]? UserPolicy;
// The property value provided by the device policy.
DOMString[]? DevicePolicy;
// The property value set by the logged in user. Only provided if
// |UserEditable| is <code>true</code>.
DOMString[]? UserSetting;
// The value set for all users of the device. Only provided if
// |DeviceEditiable| is <code>true</code>.
DOMString[]? SharedSetting;
// Whether a UserPolicy for the property exists and allows the property to
// be edited (i.e. the policy set recommended property value).
// Defaults to <code>false</code>.
boolean? UserEditable;
// Whether a DevicePolicy for the property exists and allows the property to
// be edited (i.e. the policy set recommended property value).
// Defaults to <code>false</code>.
boolean? DeviceEditable;
};
dictionary ManagedIPConfigType {
// The active value currently used by the network configuration manager
// (e.g. Shill).
IPConfigType? Active;
// The source from which the effective property value was determined.
DOMString? Effective;
// The property value provided by the user policy.
IPConfigType? UserPolicy;
// The property value provided by the device policy.
IPConfigType? DevicePolicy;
// The property value set by the logged in user. Only provided if
// |UserEditable| is <code>true</code>.
IPConfigType? UserSetting;
// The value set for all users of the device. Only provided if
// |DeviceEditiable| is <code>true</code>.
IPConfigType? SharedSetting;
// Whether a UserPolicy for the property exists and allows the property to
// be edited (i.e. the policy set recommended property value).
// Defaults to <code>false</code>.
boolean? UserEditable;
// Whether a DevicePolicy for the property exists and allows the property to
// be edited (i.e. the policy set recommended property value).
// Defaults to <code>false</code>.
boolean? DeviceEditable;
};
dictionary ManagedProxySettingsType {
// The active value currently used by the network configuration manager
// (e.g. Shill).
ProxySettingsType? Active;
// The source from which the effective property value was determined.
DOMString? Effective;
// The property value provided by the user policy.
ProxySettingsType? UserPolicy;
// The property value provided by the device policy.
ProxySettingsType? DevicePolicy;
// The property value set by the logged in user. Only provided if
// |UserEditable| is <code>true</code>.
ProxySettingsType? UserSetting;
// The value set for all users of the device. Only provided if
// |DeviceEditiable| is <code>true</code>.
ProxySettingsType? SharedSetting;
// Whether a UserPolicy for the property exists and allows the property to
// be edited (i.e. the policy set recommended property value).
// Defaults to <code>false</code>.
boolean? UserEditable;
// Whether a DevicePolicy for the property exists and allows the property to
// be edited (i.e. the policy set recommended property value).
// Defaults to <code>false</code>.
boolean? DeviceEditable;
};
// Sub-dictionary types.
dictionary CellularProviderProperties {
// The operator name.
DOMString Name;
// Cellular network ID as a simple concatenation of the network's
// MCC (Mobile Country Code) and MNC (Mobile Network Code).
DOMString Code;
// The two-letter country code.
DOMString? Country;
};
dictionary IssuerSubjectPattern {
// If set, the value against which to match the certificate subject's
// common name.
DOMString? CommonName;
// If set, the value against which to match the certificate subject's
// common location.
DOMString? Locality;
// If set, the value against which to match the certificate subject's
// organizations. At least one organization should match the value.
DOMString? Organization;
// If set, the value against which to match the certificate subject's
// organizational units. At least one organizational unit should match the
// value.
DOMString? OrganizationalUnit;
};
dictionary CertificatePattern {
// List of URIs to which the user can be directed in case no certificates
// that match this pattern are found.
DOMString[]? EnrollmentURI;
// If set, pattern against which X.509 issuer settings should be matched.
IssuerSubjectPattern? Issuer;
// List of certificate issuer CA certificates. A certificate must be signed
// by one of them in order to match this pattern.
DOMString[]? IssuerCARef;
// If set, pattern against which X.509 subject settings should be matched.
IssuerSubjectPattern? Subject;
};
dictionary EAPProperties {
DOMString? AnonymousIdentity;
CertificatePattern? ClientCertPattern;
DOMString? ClientCertPKCS11Id;
DOMString? ClientCertRef;
ClientCertificateType 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;
ManagedDOMString? SubjectMatch;
boolean? UseProactiveKeyCaching;
boolean? UseSystemCAs;
};
dictionary FoundNetworkProperties {
// Network availability.
DOMString Status;
// Network ID.
DOMString NetworkId;
// Access technology used by the network.
DOMString Technology;
// The network operator's short-format name.
DOMString? ShortName;
// The network operator's long-format name.
DOMString? LongName;
};
dictionary IPConfigProperties {
// Gateway address used for the IP configuration.
DOMString? Gateway;
// The IP address for a connection. Can be IPv4 or IPv6 address, depending
// on value of <code>Type</code>.
DOMString? IPAddress;
// Array of addresses used for name servers.
DOMString[]? NameServers;
// The routing prefix.
long? RoutingPrefix;
// The IP configuration type. Can be <code>IPv4</code> or <code>IPv6</code>.
DOMString? Type;
// The URL for WEb Proxy Auto-Discovery, as reported over DHCP.
DOMString? WebProxyAutoDiscoveryUrl;
};
dictionary ManagedIPConfigProperties {
// See $(ref:IPConfigProperties.Gateway).
ManagedDOMString? Gateway;
// See $(ref:IPConfigProperties.IPAddress).
ManagedDOMString? IPAddress;
// See $(ref:IPConfigProperties.NameServers).
ManagedDOMStringList? NameServers;
// See $(ref:IPConfigProperties.RoutingPrefix).
ManagedLong? RoutingPrefix;
// See $(ref:IPConfigProperties.Type).
ManagedDOMString? Type;
// See $(ref:IPConfigProperties.WebProxyAutoDiscoveryUrl).
ManagedDOMString? WebProxyAutoDiscoveryUrl;
};
dictionary PaymentPortal {
// The HTTP method to use for the payment portal.
DOMString Method;
// The post data to send to the payment portal. Ignored unless
// <code>Method</code> is <code>POST</code>.
DOMString? PostData;
// The payment portal URL.
DOMString? Url;
};
dictionary ProxyLocation {
// The proxy IP address host.
DOMString Host;
// The port to use for the proxy.
long Port;
};
dictionary ManagedProxyLocation {
// See $(ref:ProxyLocation.Host).
ManagedDOMString Host;
// See $(ref:ProxyLocation.Port).
ManagedLong Port;
};
[noinline_doc] dictionary ManualProxySettings {
// Settings for HTTP proxy.
ProxyLocation? HTTPProxy;
// Settings for secure HTTP proxy.
ProxyLocation? SecureHTTPProxy;
// Settings for FTP proxy.
ProxyLocation? FTPProxy;
// Settings for SOCKS proxy.
ProxyLocation? SOCKS;
};
dictionary ManagedManualProxySettings {
// See $(ref:ManualProxySettings.HTTPProxy).
ManagedProxyLocation? HTTPProxy;
// See $(ref:ManualProxySettings.SecureHTTPProxy).
ManagedProxyLocation? SecureHTTPProxy;
// See $(ref:ManualProxySettings.FTPProxy).
ManagedProxyLocation? FTPProxy;
// See $(ref:ManualProxySettings.SOCKS).
ManagedProxyLocation? SOCKS;
};
[noinline_doc] dictionary ProxySettings {
// The type of proxy settings.
ProxySettingsType Type;
// Manual proxy settings - used only for <code>Manual</code> proxy settings.
ManualProxySettings? Manual;
// Domains and hosts for which manual proxy settings are excluded.
DOMString[]? ExcludeDomains;
// URL for proxy auto-configuration file.
DOMString? PAC;
};
dictionary ManagedProxySettings {
// See $(ref:ProxySettings.Type).
ManagedProxySettingsType Type;
// See $(ref:ProxySettings.Manual).
ManagedManualProxySettings? Manual;
// See $(ref:ProxySettings.ExcludeDomains).
ManagedDOMStringList? ExcludeDomains;
// See $(ref:ProxySettings.PAC).
ManagedDOMString? PAC;
};
dictionary SIMLockStatus {
// The status of SIM lock - possible values are <code>'sim-pin'</code>,
// <code>'sim-puk'</code> and <code>''</code>.
DOMString LockType;
// Whether SIM lock is enabled.
boolean LockEnabled;
// Number of PIN lock tries allowed before PUK is required to unlock the
// SIM.
long? RetriesLeft;
};
dictionary ThirdPartyVPNProperties {
// ID of the third-party VPN provider extension.
DOMString ExtensionID;
// The VPN provider name.
DOMString? ProviderName;
};
dictionary ManagedThirdPartyVPNProperties {
// See $(ref:ThirdPartyVPNProperties.ExtensionID).
ManagedDOMString ExtensionID;
// See $(ref:ThirdPartyVPNProperties.ProviderName).
DOMString? ProviderName;
};
// Network type dictionary types.
[noinline_doc] dictionary CellularProperties {
// Whether the cellular network should be connected automatically (when
// in range).
boolean? AutoConnect;
// The cellular network activation type.
DOMString? ActivationType;
// Carrier account activation state.
ActivationStateType? ActivationState;
// Whether roaming is allowed for the network.
boolean? AllowRoaming;
// The name of the carrier for which the cellular device is configured.
DOMString? Carrier;
// Cellular device technology family - <code>CDMA</code> or
// <code>GSM</code>.
DOMString? Family;
// The firmware revision loaded in the cellular modem.
DOMString? FirmwareRevision;
// The list of networks found during the most recent network scan.
FoundNetworkProperties[]? FoundNetworks;
// The cellular modem hardware revision.
DOMString? HardwareRevision;
// Information about the operator that issued the SIM card currently
// installed in the modem.
CellularProviderProperties? HomeProvider;
// The cellular modem manufacturer.
DOMString? Manufacturer;
// The cellular modem model ID.
DOMString? ModelID;
// If the modem is registered on a network, the network technology
// currently in use.
DOMString? NetworkTechnology;
// Online payment portal a user can use to sign-up for or modify a mobile
// data plan.
PaymentPortal? PaymentPortal;
// The revision of the Preferred Roaming List loaded in the modem.
long? PRLVersion;
// The roaming state of the cellular modem on the current network.
DOMString? RoamingState;
// True when a cellular network scan is in progress.
boolean? Scanning;
// Information about the operator on whose network the modem is currently
// registered.
CellularProviderProperties? ServingOperator;
// The state of SIM lock for GSM family networks.
SIMLockStatus? SIMLockStatus;
// Whether a SIM card is present.
boolean? SIMPresent;
// The current network signal strength.
long? SignalStrength;
// Whether the cellular network supports scanning.
boolean? SupportNetworkScan;
// A list of supported carriers.
DOMString[]? SupportedCarriers;
};
dictionary ManagedCellularProperties {
// See $(ref:CellularProperties.AutoConnect).
ManagedBoolean? AutoConnect;
// See $(ref:CellularProperties.ActivationType).
DOMString? ActivationType;
// See $(ref:CellularProperties.ActivationState).
ActivationStateType? ActivationState;
// See $(ref:CellularProperties.AllowRoaming).
boolean? AllowRoaming;
// See $(ref:CellularProperties.Carrier).
ManagedDOMString? Carrier;
// See $(ref:CellularProperties.Family).
DOMString? Family;
// See $(ref:CellularProperties.FirmwareRevision).
DOMString? FirmwareRevision;
// See $(ref:CellularProperties.FoundNetworks).
FoundNetworkProperties[]? FoundNetworks;
// See $(ref:CellularProperties.HardwareRevision).
DOMString? HardwareRevision;
// See $(ref:CellularProperties.HomeProvider).
CellularProviderProperties[]? HomeProvider;
// See $(ref:CellularProperties.Manufacturer).
DOMString? Manufacturer;
// See $(ref:CellularProperties.ModelID).
DOMString? ModelID;
// See $(ref:CellularProperties.NetworkTechnology).
DOMString? NetworkTechnology;
// See $(ref:CellularProperties.PaymentPortal).
PaymentPortal? PaymentPortal;
// See $(ref:CellularProperties.PRLVersion).
long? PRLVersion;
// See $(ref:CellularProperties.RoamingState).
DOMString? RoamingState;
// See $(ref:CellularProperties.Scanning).
boolean? Scanning;
// See $(ref:CellularProperties.ServingOperator).
CellularProviderProperties? ServingOperator;
// See $(ref:CellularProperties.SIMLockStatus).
SIMLockStatus? SIMLockStatus;
// See $(ref:CellularProperties.SIMPresent).
boolean? SIMPresent;
// See $(ref:CellularProperties.SignalStrength).
long? SignalStrength;
// See $(ref:CellularProperties.SupportNetworkScan).
boolean? SupportNetworkScan;
// See $(ref:CellularProperties.SupportedCarriers).
DOMString[]? SupportedCarriers;
};
dictionary CellularStateProperties {
// See $(ref:CellularProperties.ActivationState).
ActivationStateType? ActivationState;
// See $(ref:CellularProperties.NetworkTechnology).
DOMString? NetworkTechnology;
// See $(ref:CellularProperties.RoamingState).
DOMString? RoamingState;
// See $(ref:CellularProperties.SIMPresent).
boolean? SIMPresent;
// See $(ref:CellularProperties.SignalStrength).
long? SignalStrength;
};
dictionary EthernetProperties {
// Whether the Ethernet network should be connected automatically.
boolean? AutoConnect;
// The authentication used by the Ethernet network. Possible values are
// <code>None</code> and <code>8021X</code>.
DOMString? Authentication;
// Network's EAP settings. Required for 8021X authentication.
EAPProperties? EAP;
};
dictionary ManagedEthernetProperties {
// See $(ref:EthernetProperties.AutoConnect).
ManagedBoolean? AutoConnect;
// See $(ref:EthernetProperties.Authentication).
ManagedDOMString? Authentication;
};
dictionary EthernetStateProperties {
// See $(ref:EthernetProperties.Authentication).
DOMString Authentication;
};
dictionary VPNProperties {
// Whether the VPN network should be connected automatically.
boolean? AutoConnect;
// The VPN host.
DOMString? Host;
// 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 {
// See $(ref:VPNProperties.AutoConnect).
ManagedBoolean? AutoConnect;
// See $(ref:VPNProperties.Host).
ManagedDOMString? Host;
// See $(ref:VPNProperties.Type).
ManagedDOMString? Type;
};
dictionary VPNStateProperties {
// See $(ref:VPNProperties.Type).
DOMString Type;
};
[noinline_doc] dictionary WiFiProperties {
// Whether ARP polling of default gateway is allowed. Defaults to true.
boolean? AllowGatewayARPPolling;
// Whether the WiFi network should be connected automatically when in range.
boolean? AutoConnect;
// The BSSID of the associated access point..
DOMString? BSSID;
// The network EAP properties. Required for <code>WEP-8021X</code> and
// <code>WPA-EAP</code> networks.
EAPProperties? EAP;
// The WiFi service operating frequency in MHz. For connected networks, the
// current frequency on which the network is connected. Otherwise, the
// frequency of the best available BSS.
long? Frequency;
// Contains all operating frequency recently seen for the WiFi network.
long[]? FrequencyList;
// HEX-encoded copy of the network SSID.
DOMString? HexSSID;
// Whether the network SSID will be broadcast.
boolean? HiddenSSID;
// The passphrase for WEP/WPA/WPA2 connections. This property can only be
// set - properties returned by $(ref:getProperties) will not contain this
// value.
DOMString? Passphrase;
// Signal-to-noise value (in dB) below which roaming to a new network
// should be attempted.
long? RoamThreshold;
// The network SSID.
DOMString? SSID;
// The network security type.
DOMString? Security;
// The network signal strength.
long? SignalStrength;
};
dictionary ManagedWiFiProperties {
// See $(ref:WiFiProperties.AllowGatewayARPPolling).
ManagedBoolean? AllowGatewayARPPolling;
// See $(ref:WiFiProperties.AutoConnect).
ManagedBoolean? AutoConnect;
// See $(ref:WiFiProperties.BSSID).
DOMString? BSSID;
// See $(ref:WiFiProperties.Frequency).
long? Frequency;
// See $(ref:WiFiProperties.FrequencyList).
long[]? FrequencyList;
// See $(ref:WiFiProperties.HexSSID).
ManagedDOMString? HexSSID;
// See $(ref:WiFiProperties.HiddenSSID).
ManagedBoolean? HiddenSSID;
// See $(ref:WiFiProperties.RoamThreshold).
ManagedLong? RoamThreshold;
// See $(ref:WiFiProperties.SSID).
ManagedDOMString? SSID;
// See $(ref:WiFiProperties.Security).
ManagedDOMString Security;
// See $(ref:WiFiProperties.SignalStrength).
long? SignalStrength;
};
dictionary WiFiStateProperties {
// See $(ref:WiFiProperties.BSSID).
DOMString? BSSID;
// See $(ref:WiFiProperties.Frequency).
long? Frequency;
// See $(ref:WiFiProperties.HexSSID).
DOMString? HexSSID;
// See $(ref:WiFiProperties.Security).
DOMString Security;
// See $(ref:WiFiProperties.SignalStrength).
long? SignalStrength;
// See $(ref:WiFiProperties.SSID).
DOMString? SSID;
};
dictionary WiMAXProperties {
// Whether the network should be connected automatically.
boolean? AutoConnect;
// The network EAP properties.
EAPProperties? EAP;
// The network signal strength.
long? SignalStrength;
};
dictionary ManagedWiMAXProperties {
// See $(ref:WiMAXProperties.AutoConnect).
ManagedBoolean? AutoConnect;
// See $(ref:WiMAXProperties.SignalStrength).
long? SignalStrength;
};
dictionary WiMAXStateProperties {
// See $(ref:WiMAXProperties.SignalStrength).
long? SignalStrength;
};
dictionary NetworkConfigProperties {
// See $(ref:NetworkProperties.Cellular).
CellularProperties? Cellular;
// See $(ref:NetworkProperties.Ethernet).
EthernetProperties? Ethernet;
// See $(ref:NetworkProperties.GUID).
DOMString? GUID;
// See $(ref:NetworkProperties.IPAddressConfigType).
IPConfigType? IPAddressConfigType;
// See $(ref:NetworkProperties.Name).
DOMString? Name;
// See $(ref:NetworkProperties.NameServersConfigType).
IPConfigType? NameServersConfigType;
// See $(ref:NetworkProperties.Priority).
long? Priority;
// See $(ref:NetworkProperties.Type).
NetworkType? Type;
// See $(ref:NetworkProperties.VPN).
VPNProperties? VPN;
// See $(ref:NetworkProperties.WiFi).
WiFiProperties? WiFi;
// See $(ref:NetworkProperties.WiMAX).
WiMAXProperties? WiMAX;
};
[noinline_doc]
dictionary NetworkProperties {
// For cellular networks, cellular network properties.
CellularProperties? Cellular;
// Whether the network is connectable.
boolean? Connectable;
// The network's current connection state.
ConnectionStateType? ConnectionState;
// The last recorded network error state.
DOMString? ErrorState;
// For Ethernet networks, the Ethernet network properties.
EthernetProperties? Ethernet;
// The network GUID.
DOMString GUID;
// The network's IP address configuration type.
IPConfigType? IPAddressConfigType;
// The network's IP configuration.
IPConfigProperties[]? IPConfigs;
// The network's MAC address.
DOMString? MacAddress;
// A user friendly network name.
DOMString? Name;
// The IP configuration type for the name servers used by the network.
IPConfigType? NameServersConfigType;
// The network priority.
long? Priority;
// The network's proxy settings.
ProxySettings? ProxySettings;
// For a connected network, whether the network connectivity to the
// Internet is limited, e.g. if the network is behind a portal, or a
// cellular network is not activated.
boolean? RestrictedConnectivity;
// The network's static IP configuration.
IPConfigProperties? StaticIPConfig;
// IP configuration that was received from the DHCP server before applying
// static IP configuration.
IPConfigProperties? SavedIPConfig;
// Indicates whether and how the network is configured. Possible values are:
// <ul>
// <li><code>Device</code></li>
// <li><code>DevicePolicy</code></li>
// <li><code>User</code></li>
// <li><code>UserPolicy</code></li>
// <li><code>None</code></li>
// </ul>
// 'None' conflicts with extension code generation so we must use a string
// for 'Source' instead of a SourceType enum.
DOMString? Source;
// The network type.
NetworkType Type;
// For VPN networks, the network VPN properties.
VPNProperties? VPN;
// For WiFi networks, the network WiFi properties.
WiFiProperties? WiFi;
// For WiMAX networks, the network WiMAX properties.
WiMAXProperties? WiMAX;
};
[noinline_doc]
dictionary ManagedProperties {
// See $(ref:NetworkProperties.Cellular).
ManagedCellularProperties? Cellular;
// See $(ref:NetworkProperties.Connectable).
boolean? Connectable;
// See $(ref:NetworkProperties.ConnectionState).
ConnectionStateType? ConnectionState;
// See $(ref:NetworkProperties.ErrorState).
DOMString? ErrorState;
// See $(ref:NetworkProperties.Ethernet).
ManagedEthernetProperties? Ethernet;
// See $(ref:NetworkProperties.GUID).
DOMString GUID;
// See $(ref:NetworkProperties.IPAddressConfigType).
ManagedIPConfigType? IPAddressConfigType;
// See $(ref:NetworkProperties.IPConfigs).
IPConfigProperties[]? IPConfigs;
// See $(ref:NetworkProperties.MacAddress).
DOMString? MacAddress;
// See $(ref:NetworkProperties.Name).
ManagedDOMString? Name;
// See $(ref:NetworkProperties.NameServersConfigType).
ManagedIPConfigType? NameServersConfigType;
// See $(ref:NetworkProperties.Priority).
ManagedLong? Priority;
// See $(ref:NetworkProperties.ProxySettings).
ManagedProxySettings? ProxySettings;
// See $(ref:NetworkProperties.RestrictedConnectivity).
boolean? RestrictedConnectivity;
// See $(ref:NetworkProperties.StaticIPConfig).
ManagedIPConfigProperties? StaticIPConfig;
// See $(ref:NetworkProperties.SavedIPConfig).
IPConfigProperties? SavedIPConfig;
// See $(ref:NetworkProperties.Source).
DOMString? Source;
// See $(ref:NetworkProperties.Type).
NetworkType Type;
// See $(ref:NetworkProperties.VPN).
ManagedVPNProperties? VPN;
// See $(ref:NetworkProperties.WiFi).
ManagedWiFiProperties? WiFi;
// See $(ref:NetworkProperties.WiMAX).
ManagedWiMAXProperties? WiMAX;
};
dictionary NetworkStateProperties {
// See $(ref:NetworkProperties.Cellular).
CellularStateProperties? Cellular;
// See $(ref:NetworkProperties.Connectable).
boolean? Connectable;
// See $(ref:NetworkProperties.ConnectionState).
ConnectionStateType? ConnectionState;
// See $(ref:NetworkProperties.Ethernet).
EthernetStateProperties? Ethernet;
// See $(ref:NetworkProperties.ErrorState).
DOMString? ErrorState;
// See $(ref:NetworkProperties.GUID).
DOMString GUID;
// See $(ref:NetworkProperties.Name).
DOMString? Name;
// See $(ref:NetworkProperties.Priority).
long? Priority;
// See $(ref:NetworkProperties.Source).
DOMString? Source;
// See $(ref:NetworkProperties.Type).
NetworkType Type;
// See $(ref:NetworkProperties.VPN).
VPNStateProperties? VPN;
// See $(ref:NetworkProperties.WiFi).
WiFiStateProperties? WiFi;
// See $(ref:NetworkProperties.WiMAX).
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;
};
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;
// 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;
};
callback VoidCallback = void();
callback BooleanCallback = void(boolean result);
callback StringCallback = void(DOMString result);
callback GetPropertiesCallback = void(NetworkProperties result);
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);
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 $(ref:createNetwork) instead.
// <b>
// In kiosk sessions, calling this method on a shared network will fail.
// </b>
// |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|: <p>
// If <code>true</code>, share this network configuration with
// other users.
// </p>
// <p>
// <b>This option is exposed only to Chrome's Web UI.</b>
// When called by apps, <code>false</code> is the only allowed value.
// </p>
// |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);
// <p>
// Forgets a network configuration by clearing any configured properties
// for the network with GUID <code>networkGuid</code>. 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.
// </p>
// <p>
// <b>In kiosk sessions, this method will not be able to forget shared
// network configurations.</b>
// </p>
// |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: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);
// Returns states of available networking devices.
// |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: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);
// 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);
// Gets the global policy properties. These properties are not expected to
// change during a session.
static void getGlobalPolicy(GetGlobalPolicyCallback 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);
};
};