| // Copyright 2019 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. |
| |
| syntax = "proto2"; |
| |
| option optimize_for = LITE_RUNTIME; |
| |
| package remoting.apis.v1; |
| |
| // A chromoting client or host may send a ChromotingEvent to the chromoting |
| // service to be logged. |
| // Next ID to use: 51 |
| message ChromotingEvent { |
| // The type of this event. |
| // Next ID to use: 14 |
| enum Type { |
| // Value returned when the field is not set. |
| UNSPECIFIED_TYPE = 0; |
| // The session state has changed. |
| SESSION_STATE = 1; |
| // There are new connection statistics. |
| CONNECTION_STATISTICS = 2; |
| // The session ID has expired, and a new one has been generated. |
| // This happens every 24 hours, for sessions that live that long. |
| // This event contains the expired session ID. |
| SESSION_ID_OLD = 3; |
| // The session ID has expired, and a new one has been generated. |
| // This happens every 24 hours, for sessions that live that long. |
| // This event contains the new session ID. |
| // Whenever a session ID expires, the chromoting client or host sends two |
| // events: one of type SESSION_ID_OLD, and one of type SESSION_ID_NEW. |
| // The events are separate, to guarantee that session IDs cannot be used |
| // to track a chromoting client or host for more than 24 hours. |
| SESSION_ID_NEW = 4; |
| // A valid heartbeat sent by either the host or the client. |
| HEARTBEAT = 5; |
| // An existing host restarted, and sent a heartbeat sequence id of 0. |
| HEARTBEAT_REJECTED = 6; |
| // An explicit restart event from hosts that support it. |
| RESTART = 7; |
| // Host status change: offline or online. |
| HOST_STATUS = 8; |
| // Signal strategy set-up progress. |
| SIGNAL_STRATEGY_PROGRESS = 9; |
| // For tracking features like number of ESC press in a session. |
| FEATURE_TRACKING = 10; |
| // Host and client screen dimensions and related information. |
| SCREEN_DIMENSIONS = 11; |
| // Chromoting.com migration. |
| CHROMOTING_DOT_COM_MIGRATION = 12; |
| // Number of network interfaces. |
| NUMBER_OF_NETWORK_INTERFACES = 13; |
| } |
| |
| // The type of Chromoting event. |
| optional Type type = 1; |
| |
| // A session ID. |
| // Unless the user opts out, the chromoting client or host randomly |
| // generates a session ID at the start of each session, and clears it at the |
| // end of each session. The client and host involved in one session need not |
| // choose the same ID for that session. The session ID will expire, and a new |
| // one will be generated, every 24 hours, for sessions that live that long. |
| // The session ID is only used by chromoting. |
| optional string session_id = 2; |
| |
| // Whether this event was generated by a chromoting client or a |
| // chromoting host. |
| // Next ID to use: 2 |
| enum Role { |
| // The Client is the browser or app side of the connection. |
| CLIENT = 0; |
| // The Host is the remote side of the connection that is being accessed. |
| HOST = 1; |
| } |
| |
| // The role this event occurred on. |
| optional Role role = 3; |
| |
| // Next ID to use: 8 |
| // (== suppress_warning documentation-presence ==) |
| enum Os { |
| // Value returned when the field is not set. |
| UNSPECIFIED_OS = 0; |
| |
| CRD_LINUX = 1; |
| CRD_CHROMEOS = 2; |
| CRD_MAC = 3; |
| CRD_WINDOWS = 4; |
| CRD_OTHER = 5; |
| CRD_ANDROID = 6; |
| CRD_IOS = 7; |
| } |
| // The OS on which the client is running. |
| optional Os os = 4; |
| |
| // The version of the OS on which the client is running. |
| // It should be a sequence of integers, separated by periods. |
| optional string os_version = 5; |
| |
| // The version of the client webapp that generated this event. |
| // It should be a sequence of integers, separated by periods. |
| optional string webapp_version = 7; |
| |
| // The version of the host executable that generated this event. |
| // It should be a sequence of integers, separated by periods. |
| optional string host_version = 20; |
| |
| // The CPU on which the client/host is running. |
| optional string cpu = 8; |
| |
| // The following fields are typically associated with |
| // SESSION_STATE events. |
| |
| // Types of session states. |
| enum SessionState { |
| // Unknown session state. |
| UNKNOWN = 1 [deprecated = true]; |
| // The connection has been created. |
| CREATED = 2 [deprecated = true]; |
| // The client plugin are missing or if they could not be loaded. |
| BAD_PLUGIN_VERSION = 3 [deprecated = true]; |
| // Unknown plugin error. |
| UNKNOWN_PLUGIN_ERROR = 4 [deprecated = true]; |
| // The session is connecting. |
| CONNECTING = 5; |
| // The session is being initialized. |
| INITIALIZING = 6; |
| // The session is connected. |
| CONNECTED = 7; |
| // The session is closed. |
| CLOSED = 8; |
| // The session failed to connect. |
| CONNECTION_FAILED = 9; |
| // There was an unknown error. |
| UNDEFINED = 10 [deprecated = true]; |
| // The plugin was disabled. |
| PLUGIN_DISABLED = 11 [deprecated = true]; |
| // The session connection dropped. |
| CONNECTION_DROPPED = 12; |
| // The connection is canceled by the user before it is connected. |
| CONNECTION_CANCELED = 13; |
| // The client has successfully authenticated with the host. |
| AUTHENTICATED = 14; |
| // The session has started, either by the user from an UX entry point or |
| // by the client on behalf on the user (e.g. auto reconnects). |
| STARTED = 15; |
| // The session is establishing connection to the signaling channel. |
| SIGNALING = 16; |
| // The session is creating the client plugin. |
| CREATING_PLUGIN = 17; |
| // The client received the first video packet. |
| VIDEO_STREAM_STARTED = 18; |
| } |
| // The session state reported by the client or host. |
| optional SessionState session_state = 9; |
| |
| // Connection type definitions. |
| // Next ID to use: 4 |
| enum ConnectionType { |
| // Value returned when the field is not set. |
| UNSPECIFIED_CONNECTION_TYPE = 0; |
| // Peer to peer connection. |
| DIRECT = 1; |
| // A STUN server is used to get an external network address. |
| STUN = 2; |
| // Direct connection was unavailable, using a third party server to route |
| // the traffic from peer to peer. |
| RELAY = 3; |
| } |
| // The connection type reported by the client or host. |
| optional ConnectionType connection_type = 10; |
| |
| // Definition of a connection error. |
| // Next ID to use: 21 |
| enum ConnectionError { |
| // No errors. |
| NONE = 1; |
| // The host is online. |
| HOST_OFFLINE = 2; |
| // Connection rejected since the host is not started. |
| SESSION_REJECTED = 3; |
| // The protocol does not match between host and client. |
| INCOMPATIBLE_PROTOCOL = 4; |
| // A network issue has prevented the remote connection. |
| NETWORK_FAILURE = 5; |
| // Unknown error. |
| UNKNOWN_ERROR = 6; |
| // The access code provided does not match the expected code. |
| INVALID_ACCESS_CODE = 7; |
| // The plugin on the client side is missing. |
| MISSING_PLUGIN = 8; |
| // Authentication has failed for the connection. |
| AUTHENTICATION_FAILED = 9; |
| // The plugin version does not match the expected version. |
| ERROR_BAD_PLUGIN_VERSION = 10; |
| // Connection rejected by the host due to an overload of failed login |
| // attempts. |
| HOST_OVERLOAD = 11; |
| // There has been an issue connecting peer-to-peer. |
| P2P_FAILURE = 12; |
| // An unexpected event. |
| UNEXPECTED = 13; |
| // Connection dropped since the client computer is sleeping. |
| CLIENT_SUSPENDED = 14; |
| // The plugin fails to initialize as Native Client is disabled. |
| NACL_DISABLED = 15; |
| // Maximum session duration has been reached. |
| MAX_SESSION_LENGTH = 16; |
| // Host failed to initialize the session. |
| HOST_CONFIGURATION_ERROR = 17; |
| // Host failed to initialize the session. |
| NACL_PLUGIN_CRASHED = 18; |
| // Host security policies do not allow connections from client. |
| INVALID_ACCOUNT = 19; |
| // Connection fails due to invalid third-party authentication token. |
| INVALID_THIRD_PARTY_TOKEN = 20; |
| } |
| // A connection error reported by the client or host. |
| optional ConnectionError connection_error = 11; |
| |
| // The time in seconds from the start of a session to a log event. |
| optional float session_duration = 12; |
| |
| // The following fields are typically associated with |
| // CONNECTION_STATISTICS events. |
| |
| // The video bandwidth reported by the client, in bytes per second. |
| optional float video_bandwidth = 13; |
| |
| // The capture latency reported by the client, in milliseconds. |
| optional float capture_latency = 14; |
| |
| // The max capture latency reported by the client, in milliseconds. |
| optional float max_capture_latency = 38; |
| |
| // The encode latency reported by the client, in milliseconds. |
| optional float encode_latency = 15; |
| |
| // The max encode latency reported by the client, in milliseconds. |
| optional float max_encode_latency = 39; |
| |
| // The decode latency reported by the client, in milliseconds. |
| optional float decode_latency = 16; |
| |
| // The max decode latency reported by the client, in milliseconds. |
| optional float max_decode_latency = 40; |
| |
| // The render latency reported by the client, in milliseconds. |
| optional float render_latency = 17; |
| |
| // The max render latency reported by the client, in milliseconds. |
| optional float max_render_latency = 41; |
| |
| // The roundtrip latency reported by the client, in milliseconds. |
| optional float roundtrip_latency = 18; |
| |
| // The max roundtrip latency reported by the client, in milliseconds. |
| optional float max_roundtrip_latency = 42; |
| |
| // Definition of mode of operation. |
| enum Mode { |
| // Value returned when the field is not set. |
| UNSPECIFIED_MODE = 0; |
| // Help/support mode. |
| IT2ME = 1; |
| // Personal connection. |
| ME2ME = 2; |
| } |
| // The mode in which the client or host is operating. |
| optional Mode mode = 19; |
| |
| // Signaling strategies available. |
| // Next ID to use: 5 |
| enum SignalStrategyType { |
| // Value returned when the field is not set. |
| UNSPECIFIED_SIGNALING_STRATEGY_TYPE = 0; |
| // XMPP, gTalk. |
| XMPP = 1; |
| // Web Connection Server, Babel. |
| WCS = 2; |
| // XMPP, Marmoset. |
| LCS = 3; |
| // Protobuf, Tachyon. |
| FTL = 4; |
| } |
| // The signal strategy in use. |
| optional SignalStrategyType signal_strategy_type = 24; |
| |
| // The previous state of the session. Only used in SESSION_STATE events. |
| optional SessionState previous_session_state = 28; |
| |
| // This enum identifies how a remote session is being intitiated. |
| enum SessionEntryPoint { |
| // Value returned when the field is not set. |
| UNSPECIFIED_SESSION_ENTRY_POINT = 0; |
| // The user initiates the session by clicking on the connect button (or |
| // access button for IT2ME). |
| CONNECT_BUTTON = 1; |
| // The user initiates the connection by clicking on the reconnect button |
| // on the Me2Me finished dialog. |
| RECONNECT_BUTTON = 2; |
| // This session is initiated on behalf on the user to auto-reconnect after |
| // a connection drop. |
| AUTO_RECONNECT_ON_CONNECTION_DROPPED = 3; |
| // A user-initiated connection attempt has just failed with HOST_OFFLINE. |
| // The client refreshes the JID of the host and initiates a new connection |
| // on behalf of the user. |
| AUTO_RECONNECT_ON_HOST_OFFLINE = 4; |
| } |
| // This field identifies how a remote session is being intitiated. |
| optional SessionEntryPoint session_entry_point = 29; |
| |
| // The OS on which the host is running. |
| optional Os host_os = 32; |
| |
| // The version of the OS on which the host is running. |
| optional string host_os_version = 33; |
| |
| // This enum identifies how a chromoting session is being authenticated. |
| enum AuthMethod { |
| // Value returned when the field is not set. |
| UNSPECIFIED_AUTH_METHOD = 0; |
| // A numeric passcode set locally. |
| PIN = 1; |
| // A IT2ME style auth. |
| ACCESS_CODE = 2; |
| // Trusted connection without a pin. |
| PINLESS = 3; |
| // Other security, like a corp auth. |
| THIRD_PARTY = 4; |
| } |
| // This field identifies how a chromoting session is being authenticated. |
| optional AuthMethod auth_method = 34; |
| } |