// Copyright (c) 2012 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.
//
// Sync protocol datatype extension for custom search engines.

// Update proto_value_conversions{.h,.cc,_unittest.cc} if you change
// any fields in this file.

syntax = "proto2";

option optimize_for = LITE_RUNTIME;
option retain_unknown_fields = true;

package sync_pb;

// Properties of custom search engine sync objects.
message SearchEngineSpecifics {
  // The description of the search engine.
  optional string short_name = 1;
  // The search engine keyword for omnibox access.
  optional string keyword = 2;
  // A URL to the favicon to show in the search engines options page.
  optional string favicon_url = 3;
  // The actual parameterized search engine query URL.
  optional string url = 4;
  // A flag signifying whether it is safe to automatically modify this search
  // engine entry or not.
  optional bool safe_for_autoreplace = 5;
  // The URL to the OSD file this search engine entry came from.
  optional string originating_url = 6;
  // The date this search engine entry was created. A UTC timestamp with units
  // in microseconds.
  optional int64 date_created = 7;
  // A list of supported input encodings.
  optional string input_encodings = 8;
  // Whether this entry is shown in the list of default search engines or not.
  optional bool show_in_default_list = 9;
  // The parameterized URL that provides suggestions as the user types.
  optional string suggestions_url = 10;
  // The ID associated with the prepopulate data this search engine comes from.
  // Set to zero if it was not prepopulated.
  optional int32 prepopulate_id = 11;
  // DEPRECATED: Whether to autogenerate a keyword for the search engine or not.
  // Do not write to this field in the future.  We preserve this for now so we
  // can read the field in order to migrate existing data that sets this bit.
  optional bool autogenerate_keyword = 12;
  // ID 13 reserved - previously used by |logo_id|, now deprecated.
  // Obsolete field. This used to represent whether or not this search engine
  // entry was created automatically by an administrator via group policy. This
  // notion no longer exists amongst synced search engines as we do not want to
  // sync managed search engines.
  // optional bool deprecated_created_by_policy = 14;
  // The parameterized URL that is used for Instant results.
  optional string instant_url = 15;
  // ID 16 reserved - previously used by |id|, now deprecated.
  // The last time this entry was modified by a user. A UTC timestamp with units
  // in microseconds.
  optional int64 last_modified = 17;
  // The primary identifier of this search engine entry for Sync.
  optional string sync_guid = 18;
  // A list of URL patterns that can be used, in addition to |url| and
  // |instant_url|, to extract search terms from a URL.
  repeated string alternate_urls = 19;
  // Parameter that, if present in a search URL, indicates that Chrome should
  // perform search terms replacement in the omnibox.
  optional string search_terms_replacement_key = 20;
  // The parameterized URL that provides image results according to the image
  // content or image URL provided by user.
  optional string image_url = 21;

  // The following post_params are comma-separated lists used to specify the
  // post parameters for the corresponding search URL.
  optional string search_url_post_params = 22;
  optional string suggestions_url_post_params = 23;
  optional string instant_url_post_params = 24;
  optional string image_url_post_params = 25;
}

