chromium/chrome/browser/policy/messaging_layer/proto/synced/crd_event.proto

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

// Events related to adding and removing users from Chrome.

syntax = "proto2";

option optimize_for = LITE_RUNTIME;

import "components/reporting/proto/synced/session_affiliated_user.proto";

package ash.reporting;

enum ConnectionType {
  CRD_CONNECTION_UNKNOWN = 0;
  CRD_CONNECTION_DIRECT = 1;
  CRD_CONNECTION_RELAY = 2;
  CRD_CONNECTION_STUN = 3;
}

// To be reported when host is started.
message CRDHostStarted {}

// To be reported when client is connected or reconnected.
message CRDClientConnected {
  optional string host_ip = 1;
  optional string client_ip = 2;
  optional string session_id = 3;
  optional ConnectionType connection_type = 4;
}

// To be reported when client is disconnected.
message CRDClientDisconnected {
  optional string host_ip = 1;
  optional string client_ip = 2;
  optional string session_id = 3;
}

// To be reported when host is ended.
message CRDHostEnded {}

message CRDRecord {
  optional int64 event_timestamp_sec = 1;  // Seconds since epoch.

  optional .reporting.SessionAffiliatedUser host_user =
      2;  // Omitted if not affiliated.

  oneof event {
    CRDHostStarted started = 3;
    CRDClientConnected connected = 4;
    CRDClientDisconnected disconnected = 5;
    CRDHostEnded ended = 6;
  }

  optional bool is_kiosk_session = 7;  // true if CRD session runs on Kiosk
}