chromium/third_party/omnibox_proto/answer_data.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.

syntax = 'proto2';

option optimize_for = LITE_RUNTIME;
option java_package = 'org.chromium.components.omnibox';
option java_outer_classname = 'AnswerDataProto';

package omnibox;

// Data to render an individual answer block.
// Next ID: 7
message AnswerData {
  optional FormattedString headline = 1;
  optional FormattedString subhead = 2;
  optional Image image = 5;

  reserved 3, 4;
}

message FormattedString {
  // The full text to show. The formatting and indices used are all based off
  // UTF-16 code units.
  optional string text = 1;

  // The readaloud text for accessibility. Only filled out if it is different
  // than the text (i.e. for cases with unicode chars like stars).
  optional string a11y_text = 3;

  // A list of fragments with the styling data. Each platform can choose to
  // concatenate the fragments or use the full text above for simplicity.
  repeated FormattedStringFragment fragments = 2;

  // A substring of the full text with styling data. The concatenation of
  // all these fragments will be the full string.
  message FormattedStringFragment {
    // The start index of the fragment within the full text. The index is
    // based off UTF-16 code units.
    optional uint32 start_index = 1;
    // The text of the fragment.
    optional string text = 2;
    optional ColorType color = 3;

    reserved 4 to 9;
  }
  enum ColorType {
    COLOR_UNKNOWN = 0;
    COLOR_CANVAS = 1;
    COLOR_SURFACE = 2;
    COLOR_PRIMARY = 3;
    COLOR_TERTIARY = 4;
    COLOR_ON_TERTIARY = 5;
    COLOR_ON_SURFACE_LINK_VISITED = 6;
    COLOR_ON_SURFACE_DEFAULT = 7;
    COLOR_ON_SURFACE_POSITIVE = 8;
    COLOR_ON_SURFACE_NEGATIVE = 9;
    COLOR_ON_SURFACE_EMPHASIS = 10;
    COLOR_ON_SURFACE_DEEMPHASIS = 11;
    COLOR_OUTLINE_DEFAULT = 12;
    COLOR_SUBTITLE_TEXT = 13;
  }
}

message Image {
  optional string url = 1;
  optional ImageType type = 2;

  enum ImageType {
    TYPE_UNKNOWN = 0;
    TYPE_LARGE = 1;
    TYPE_SMALL = 2;
  }

  reserved 3, 4;
}