mirror of
https://github.com/klzgrad/naiveproxy.git
synced 2024-12-01 01:36:09 +03:00
262 lines
7.3 KiB
Plaintext
262 lines
7.3 KiB
Plaintext
|
// 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.
|
||
|
|
||
|
// Next MinVersion: 10
|
||
|
|
||
|
module arc.mojom;
|
||
|
|
||
|
[Extensible]
|
||
|
enum NetworkResult {
|
||
|
SUCCESS = 0,
|
||
|
FAILURE = 1,
|
||
|
};
|
||
|
|
||
|
[Extensible]
|
||
|
enum GetNetworksRequestType {
|
||
|
CONFIGURED_ONLY = 0,
|
||
|
VISIBLE_ONLY = 1,
|
||
|
};
|
||
|
|
||
|
[Extensible]
|
||
|
enum ConnectionStateType {
|
||
|
CONNECTED = 0,
|
||
|
CONNECTING = 1,
|
||
|
NOT_CONNECTED = 2,
|
||
|
};
|
||
|
|
||
|
struct VisibleNetworkDetails {
|
||
|
int32 frequency;
|
||
|
int32 signal_strength;
|
||
|
string bssid;
|
||
|
};
|
||
|
|
||
|
struct ConfiguredNetworkDetails {
|
||
|
string? passphrase;
|
||
|
bool autoconnect;
|
||
|
};
|
||
|
|
||
|
union NetworkDetails {
|
||
|
VisibleNetworkDetails visible;
|
||
|
ConfiguredNetworkDetails configured;
|
||
|
};
|
||
|
|
||
|
[Extensible]
|
||
|
enum IPAddressType {
|
||
|
IPV4,
|
||
|
IPV6,
|
||
|
};
|
||
|
|
||
|
struct IPConfiguration {
|
||
|
string gateway;
|
||
|
string ip_address;
|
||
|
array<string> name_servers;
|
||
|
int32 routing_prefix;
|
||
|
IPAddressType type;
|
||
|
string web_proxy_auto_discovery_url;
|
||
|
};
|
||
|
|
||
|
[Extensible]
|
||
|
enum SecurityType {
|
||
|
NONE,
|
||
|
WEP_PSK,
|
||
|
WEP_8021X,
|
||
|
WPA_PSK,
|
||
|
WPA_EAP,
|
||
|
};
|
||
|
|
||
|
// Tethering state of a |NetworkConfiguration| as a client.
|
||
|
[Extensible]
|
||
|
enum TetheringClientState {
|
||
|
// Tethering state is detected and confirmed.
|
||
|
CONFIRMED,
|
||
|
|
||
|
// Tethering state is not detected.
|
||
|
NOT_DETECTED,
|
||
|
|
||
|
// Tethering data is suspected and can be |CONFIRMED| in the future.
|
||
|
SUSPECTED,
|
||
|
};
|
||
|
|
||
|
struct WiFi {
|
||
|
string bssid;
|
||
|
int32 frequency;
|
||
|
string hex_ssid;
|
||
|
bool hidden_ssid;
|
||
|
SecurityType security;
|
||
|
int32 signal_strength;
|
||
|
};
|
||
|
|
||
|
[Extensible]
|
||
|
enum NetworkType {
|
||
|
CELLULAR,
|
||
|
ETHERNET,
|
||
|
VPN,
|
||
|
WIFI,
|
||
|
WIMAX,
|
||
|
};
|
||
|
|
||
|
struct NetworkConfiguration {
|
||
|
// These correspond to ONC properties returned by
|
||
|
// chrome.networkingPrivate.getProperties().
|
||
|
// See components/onc/docs/onc_spec.html
|
||
|
ConnectionStateType connection_state;
|
||
|
string guid;
|
||
|
array<IPConfiguration>? ip_configs;
|
||
|
string? mac_address;
|
||
|
NetworkType type;
|
||
|
WiFi? wifi;
|
||
|
[MinVersion=8] TetheringClientState tethering_client_state;
|
||
|
};
|
||
|
|
||
|
struct WifiConfiguration {
|
||
|
// These correspond to ONC properties returned by
|
||
|
// chrome.networkingPrivate.getNetworks() and createNetwork().
|
||
|
// See components/onc/docs/onc_spec.html
|
||
|
|
||
|
// SSID encoded as a series of hex bytes, e.g. "61626364"
|
||
|
// This allows for handling SSIDs which are not valid UTF-8 strings.
|
||
|
[MinVersion=2] string? hexssid@6;
|
||
|
|
||
|
[MinVersion=1] string? guid@5;
|
||
|
string security@4;
|
||
|
|
||
|
// Fields specific to either visible or configured networks.
|
||
|
[MinVersion=2] NetworkDetails? details@7;
|
||
|
|
||
|
// Deprecated. These will be removed when both sides support NetworkDetails.
|
||
|
int32 frequency@1;
|
||
|
int32 signal_strength@2;
|
||
|
string bssid@3;
|
||
|
|
||
|
// Deprecated. |hexssid| will be used, going forward.
|
||
|
string ssid@0;
|
||
|
};
|
||
|
|
||
|
struct NetworkData {
|
||
|
NetworkResult status;
|
||
|
array<WifiConfiguration> networks;
|
||
|
};
|
||
|
|
||
|
struct GetNetworksResponseType {
|
||
|
NetworkResult status;
|
||
|
array<NetworkConfiguration> networks;
|
||
|
};
|
||
|
|
||
|
struct AndroidVpnConfiguration {
|
||
|
// The canonical name of the VPN app (e.g. "com.android.myvpn").
|
||
|
string app_name@0;
|
||
|
|
||
|
// The human-readable name of the VPN app (e.g. "OpenVPN").
|
||
|
string app_label@1;
|
||
|
|
||
|
// The name of the VPN session, as set by the app using setSession().
|
||
|
// The app does not need to call setSession() so this may be empty.
|
||
|
string session_name@2;
|
||
|
|
||
|
// True if Chrome browser traffic should be sent through the VPN.
|
||
|
bool tunnel_chrome_traffic@3;
|
||
|
|
||
|
// The next hop for IPv4 traffic originating on the host. Currently this
|
||
|
// will be set to arc0's IP address.
|
||
|
string ipv4_gateway@4;
|
||
|
|
||
|
// A list of IPv4 and IPv6 ranges to route through the VPN. e.g.
|
||
|
// ["0.0.0.0/0"] or ["192.168.1.0/24", "10.1.0.0/16"].
|
||
|
array<string> split_include@5;
|
||
|
|
||
|
// A list of IPv4 and IPv6 ranges to exclude from the VPN. If specified,
|
||
|
// all traffic that does not fall into these ranges will use the VPN.
|
||
|
array<string> split_exclude@6;
|
||
|
|
||
|
// A list of DNS servers.
|
||
|
array<string> nameservers@7;
|
||
|
|
||
|
// A list of search domains for DNS resolution.
|
||
|
array<string> domains@8;
|
||
|
};
|
||
|
|
||
|
// Next Method ID: 14
|
||
|
interface NetHost {
|
||
|
// Sends a request to get enabled / disabled status of WiFi.
|
||
|
GetWifiEnabledState@1() => (bool is_enabled);
|
||
|
|
||
|
// Sends a request to start scan of WiFi APs.
|
||
|
[MinVersion=1] StartScan@2();
|
||
|
|
||
|
// Sends a request to get configured or visible WiFi networks based on the
|
||
|
// request type.
|
||
|
[MinVersion=2] GetNetworksDeprecated@3(GetNetworksRequestType type) => (NetworkData data);
|
||
|
|
||
|
// Sends a request to enable or disable WiFi. The |result| is true when the
|
||
|
// the state has been successfully set or WiFi is already in the desired
|
||
|
// state. It is false if WiFi manipulation is prohibited due to a policy or
|
||
|
// its current state.
|
||
|
[MinVersion=3] SetWifiEnabledState@4(bool is_enabled) => (bool result);
|
||
|
|
||
|
// Creates a new network and returns the GUID. If an error occurs,
|
||
|
// |guid| will be an empty string.
|
||
|
[MinVersion=4] CreateNetwork@5(WifiConfiguration cfg) => (string guid);
|
||
|
|
||
|
// Deletes an existing network.
|
||
|
[MinVersion=4] ForgetNetwork@6(string guid) => (NetworkResult status);
|
||
|
|
||
|
// Initiates a network connection. If called when connected to a different
|
||
|
// network, it will drop the current connection first.
|
||
|
[MinVersion=4] StartConnect@7(string guid) => (NetworkResult status);
|
||
|
|
||
|
// Disconnects from network |guid|.
|
||
|
[MinVersion=4] StartDisconnect@8(string guid) => (NetworkResult status);
|
||
|
|
||
|
// Retrieve details (IP, SSID, etc.) about the current network connection.
|
||
|
[MinVersion=5] GetDefaultNetwork@9() => (
|
||
|
NetworkConfiguration? logical_default,
|
||
|
NetworkConfiguration? physical_default);
|
||
|
|
||
|
// Sends a request to get configured or visible WiFi networks based on the
|
||
|
// request type.
|
||
|
[MinVersion=6] GetNetworks@10(GetNetworksRequestType type) =>
|
||
|
(GetNetworksResponseType response);
|
||
|
|
||
|
// Inform Chrome OS that a VPN has connected.
|
||
|
[MinVersion=7] AndroidVpnConnected@11(AndroidVpnConfiguration cfg);
|
||
|
|
||
|
// Inform Chrome OS that a VPN is disconnected, reconnecting, or reconnected.
|
||
|
[MinVersion=7] AndroidVpnStateChanged@12(ConnectionStateType state);
|
||
|
|
||
|
// Tells Chrome OS that network traffic should go through a certain VPN
|
||
|
// connection. |vpnPackage| is the package name of the Android VPN app. If
|
||
|
// |lockdown| is true and the VPN connection is down, traffic is blackholed to
|
||
|
// prevent circumventing the VPN connection. This applies to Chrome traffic
|
||
|
// (users 'chronos' and 'debugd'), not other system traffic like the
|
||
|
// update engine.
|
||
|
// TODO(b/111201944): Add Chrome UI to enable the user to escape the lockdown,
|
||
|
// unless the lockdown is dictated via policy.
|
||
|
// Call with empty string as |vpnPackage| to lift the restriction.
|
||
|
[MinVersion=9] SetAlwaysOnVpn@13(string vpnPackage, bool lockdown);
|
||
|
};
|
||
|
|
||
|
// Next Method ID: 7
|
||
|
interface NetInstance {
|
||
|
// DEPRECATED: Please use Init@6 instead.
|
||
|
InitDeprecated@0(NetHost host_ptr);
|
||
|
|
||
|
// Establishes full-duplex communication with the host.
|
||
|
[MinVersion=8] Init@6(NetHost host_ptr) => ();
|
||
|
|
||
|
// Notifies the instance of a WiFI AP scan being completed.
|
||
|
[MinVersion=1] ScanCompleted@1();
|
||
|
|
||
|
[MinVersion=2] DefaultNetworkChanged@2(
|
||
|
NetworkConfiguration? logical_default,
|
||
|
NetworkConfiguration? physical_default);
|
||
|
|
||
|
[MinVersion=3] WifiEnabledStateChanged@3(bool is_enabled);
|
||
|
|
||
|
// Ask Android to disconnect the VPN, per user request.
|
||
|
[MinVersion=7] DisconnectAndroidVpn@4();
|
||
|
|
||
|
// Ask Android to pop up a VPN configuration dialog, per user request.
|
||
|
[MinVersion=7] ConfigureAndroidVpn@5();
|
||
|
};
|