chromium/components/sync/protocol/user_event_specifics.proto

// Copyright 2017 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// Sync protocol datatype extension for user events.

// If you change or add any fields in this file, update proto_visitors.h and
// potentially proto_enum_conversions.{h, cc}.

syntax = "proto2";

option java_multiple_files = true;
option java_package = "org.chromium.components.sync.protocol";

option optimize_for = LITE_RUNTIME;

package sync_pb;

import "components/sync/protocol/gaia_password_reuse.proto";

message UserEventSpecifics {
  // Time of event, as measured by client in microseconds since Windows epoch.
  optional int64 event_time_usec = 1;

  // The |global_id| field of the associated navigation, if there is one.
  optional int64 navigation_id = 2;

  // On startup we generate a new random id to identify which FieldTrialEvents
  // other events belonged to.
  optional fixed64 session_id = 3;

  // 4-7 reserved for future scalars.

  // Used for testing and debugging EventLog system.
  message Test {}

  // Language detection output.
  message LanguageDetection {
    option deprecated = true;

    message Language {
      // ISO 639 language code will be used.
      optional string language_code = 1;
      // Whether the detected language is reliable, note this is determined by
      // the CLD3.
      optional bool is_reliable = 2;
    }
    // Top n languages. Typically we just log the top language, but for page
    // that we're not confident about, we may log up to 3 top languages in
    // descending order.
    repeated Language detected_languages = 1;
    // Adopted language code is the code of final determined language.
    // It will be stored only if it's different from the first detected
    // language.
    optional string adopted_language_code = 2;
  }

  // User translated a page or interacted with translate suggestion.
  message Translation {
    option deprecated = true;

    // Source language of the translation.
    optional string from_language_code = 1;
    // Target language of the translation.
    optional string to_language_code = 2;
    enum Interaction {
      UNKNOWN = 0;
      ACCEPT = 1;
      DECLINE = 2;
      // This happens when user scroll or click outside the UI without
      // translation.
      IGNORED = 3;
      // This happens when user choose to close the translation window without
      // translation.
      DISMISSED = 4;
      // User manually entered either language.
      // In this case, from_language_code and to_language_code will be user
      // chosen values.
      MANUAL = 5;
      // User choose to revert the translation, in this case, from_language_code
      // and to_language_code will be previous chosen values.
      TRANSLATION_REVERTED = 6;
      // Automatically triggered translation.
      // User sets always translate in user settings.
      AUTO_TRANSLATION_BY_PREF = 7;
      // User navigated through a click from a translated page.
      AUTO_TRANSLATION_BY_LINK = 8;
      // Failed to initialize the translate script, this can happen for iOS due
      // to CSPs.
      INITIALIZATION_ERROR = 9;
    }
    optional Interaction interaction = 3;
  }

  // Logged when the user logs into Google, and at least once per 28d.
  message GaiaPasswordCaptured {
    enum EventTrigger {
      UNSPECIFIED = 0;
      // Event added because user logged in.
      USER_LOGGED_IN = 1;
      // Event added because 28d timer fired.
      EXPIRED_28D_TIMER = 2;
    }
    optional EventTrigger event_trigger = 1;
  }

  message FlocIdComputed {
    enum EventTrigger {
      UNSPECIFIED = 0;
      // Event added because the floc id is computed for the 1st floc session.
      NEW = 1;
      // Event added because the floc id is re-computed due to a long period of
      // time has passed since the last computation.
      REFRESHED = 2;
      // Event added because the floc id is re-computed due to history deletion.
      HISTORY_DELETE = 3;
    }
    reserved 1;
    reserved "event_trigger";

    // If not set, it means that the floc is disabled.
    optional uint64 floc_id = 2;
  }

  oneof event {
    Test test_event = 8;
    LanguageDetection language_detection_event = 10 [deprecated = true];
    Translation translation_event = 11 [deprecated = true];
    // Happens when a user types their Google account password on another site.
    GaiaPasswordReuse gaia_password_reuse_event = 104;
    GaiaPasswordCaptured gaia_password_captured_event = 15;
    FlocIdComputed floc_id_computed_event = 16;
  }

  reserved "field_trial_event";
  reserved 9;

  reserved "user_consent";
  reserved 12;
}