chromium/chromeos/services/network_config/public/mojom/network_types.mojom

// Copyright 2020 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// These are shared enums used by cros_network_config.

// NOTE: This mojom exists in two places and must be kept in sync:
//       Chromium: chromeos/services/network_config/public/mojom/
//       ChromeOS: src/platform2/diagnostics/mojom/external/

module chromeos.network_config.mojom;

// Connection state of visible networks.
[Stable, Extensible]
enum ConnectionStateType {
  // The network is connected and internet connectivity is available.
  kOnline,
  // The network is connected and not in a detected portal state, but
  // internet connectivity may not be available.
  kConnected,
  // The network is connected but a portal state was detected. Internet
  // connectivity may be limited. Additional details are in PortalState.
  kPortal,
  // The network is in the process of connecting.
  kConnecting,
  // The network is not connected.
  kNotConnected,
};

// Device / Technology state for devices.
[Stable, Extensible]
enum DeviceStateType {
  // The device is available but not yet initialized and can not be enabled.
  kUninitialized,
  // The device is initialized but disabled.
  kDisabled,
  // The device is in the process of disabling. Enable calls may fail until
  // disabling has completed.
  kDisabling,
  // The device is in the process of enabling. Disable calls may fail until
  // enabling has completed.
  kEnabling,
  // The device is enabled. Networks can be configured and connected.
  kEnabled,
  // The device is disabled and enabling the device is prohibited by policy.
  kProhibited,
  // Not used in DeviceStateProperties, but useful when querying by type.
  kUnavailable,
};

// The IP configuration type.
[Stable, Extensible]
enum IPConfigType {
  kIPv4,
  kIPv6,
};

// The network technology type.
[Stable, Extensible]
enum NetworkType {
  // kAll aggregates all variants and is only used in |NetworkFilter| for
  // requesting groups.
  kAll,
  kCellular,
  kEthernet,
  // Mobile includes Cellular, and Tether. It is only used in |NetworkFilter|
  // for requesting groups.
  kMobile,
  kTether,
  kVPN,
  // Wireles includes Cellular, Tether, and WiFi. It is only used in
  // |NetworkFilter| for requesting groups.
  kWireless,
  kWiFi,
};

// The ONC source for the network configuration, i.e. whether it is stored in
// the User or Device profile and whether it was configured by policy.
[Stable, Extensible]
enum OncSource {
  // The network is not remembered, or the property is not configurable.
  kNone,
  // The configuration is saved in the user profile.
  kUser,
  // The configuration is saved in the device profile.
  kDevice,
  // The configuration came from a user policy and is saved in the user profile.
  kUserPolicy,
  // The configuration came from a device policy and is saved in the device
  // profile.
  kDevicePolicy,
};

// The policy source for property values managed by policy.
[Stable, Extensible]
enum PolicySource {
  // The property is not controlled by policy.
  kNone,
  // The property value came from a user policy and is enforced.
  kUserPolicyEnforced,
  // The property value came from a device policy and is enforced.
  kDevicePolicyEnforced,
  // The property value came from a user policy and is recommended.
  kUserPolicyRecommended,
  // The property value came from a device policy and is recommended.
  kDevicePolicyRecommended,
  // The property value came from an extension.
  kActiveExtension,
};

// The captive portal state. Provides additional details when the connection
// state is kPortal.
[Stable, Extensible]
enum PortalState {
  // The network is not connected or the portal state is not available.
  kUnknown,
  // The network is connected and no portal is detected.
  kOnline,
  // A portal is suspected but no redirect was provided.
  kPortalSuspected,
  // The network is in a portal state with a redirect URL.
  kPortal,
  // A proxy requiring authentication is detected.
  // Deprecated in M125. Proxy auth is decoupled for portal detection.
  kDeprecatedProxyAuthRequired,
  // The network is connected but no internet is available and no proxy was
  // detected.
  kNoInternet,
};