chromium/components/sync/protocol/deletion_origin.proto

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

// 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;

// Represents a fingerprint-like token that identifies, or may help identity,
// which piece of functionality is responsible for issuing a deletion that
// propagates via Sync. It is sent to the Sync server as part of deletion
// requests, as a safeguard to investigate and mitigate user reports or even
// large-scale incidents.
message DeletionOrigin {
  // Populated by chromium-based browsers with the version that originally
  // created the deletion. This will often be the same as the version that
  // uploaded (committed) the deletion, but in rare cases the latter could be
  // greater (i.e. the browser was updated in between).
  optional string chromium_version = 1;

  // Populated by Android Google Play Services with the version of the APK
  // identifying the version that originally created the deletion. This should
  // not be populated for DeletionOrigin instances that go through Google Play
  // Services but were actually first triggered in chromium.
  optional string google_play_services_apk_version_name = 2;

  // Hash of the filename in the source code where the deletion originated. The
  // precise hashing function is unspecified and may change over time. It may
  // only be assumed that the hashing function is the same for a given version
  // of the client (see fields above). Hashing is used instead of including the
  // actual name to reduce the size of this message.
  optional fixed32 file_name_hash = 3;

  // Line of code where the deletion originated.
  optional int32 file_line_number = 4;

  // Human-readable and extra optional version of `file_name_hash`. Since the
  // file name can be long and includes the full path, this string is very
  // likely truncated (and hence not guaranteed to be unique). Truncation will
  // remove the beginning of the string rather than the end of it.
  optional string file_name_possibly_truncated = 5;

  // Arbitrary but unique tag defined in the source code, when other means
  // like the file name and line number aren't possible or desirable. This
  // string isn't meant to be too long (recommended limit of 30 characters) and
  // is subject to truncation any time. If truncation is used, it will remove
  // the beginning of the string rather than the end of it. This field must not
  // contain personally-identifiable information.
  optional string unique_source_tag_no_pii_possibly_truncated = 6;
}