// Copyright 2014 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.

// This file is used by json_to_struct.py to generate prepopulated_engine.h/cc.
// Any time you modify this file regenerate the .h/.cc. See
// prepopulated_engines.json for details.

{
  "type_name": "PrepopulatedEngine",
  "headers": [
    "components/search_engines/search_engine_type.h"
  ],
  "schema": [
    { "field": "name", "type": "string16" },
    { "field": "keyword", "type": "string16" },
    { "field": "favicon_url", "type": "string" },
    { "field": "search_url", "type": "string" },
    {
      "field": "encoding",
      "type": "string",
      "default": "UTF-8",
      "optional": true
    },
    // If omitted, this engine does not support suggestions.
    { "field": "suggest_url", "type": "string", "optional": true },
    // If omitted, this engine does not support instant.
    { "field": "instant_url", "type": "string", "optional": true },
    // If omitted, this engine does not support image search.
    { "field": "image_url", "type": "string", "optional": true },
    // If omitted, this engine does not support rendering a new tab page.
    { "field": "new_tab_url", "type": "string", "optional": true },
    // If omitted, this engine does not support contextual search.
    { "field": "contextual_search_url", "type": "string", "optional": true },
    // The followings are post parameters for the corresponding search URL.
    // If omitted, a GET request will be sent when using the corresponding
    // search URL. Otherwise, a POST request will be sent.
    // The string of post parameters consists of comma-separated name/value
    // pairs, e.g.:
    // "name1=value1,name2={template1},...".
    // In each name/value pair, the equal sign('=') must be delimiter between
    // name and value. In above example, the "value1" is the constant value for
    // "name1", which is not replaceable. The {template1} is a replaceable value
    // for name2, the actual value will be replaced with real search terms data.
    { "field": "search_url_post_params", "type": "string", "optional": true },
    { "field": "suggest_url_post_params", "type": "string", "optional": true },
    { "field": "instant_url_post_params", "type": "string", "optional": true },
    { "field": "image_url_post_params", "type": "string", "optional": true },
    // A list of URL patterns that can be used, in addition to |search_url|,
    // to extract search terms from a URL.
    // If "search_url_post_params" is not empty, then all alternate URLs are
    // sent using POST with using same post parameters as the search URL.
    {
      "field": "alternate_urls",
      "type": "array",
      "contents": { "type": "string" },
      "optional": true
    },
    // A parameter that, if present in the query or ref parameters of a
    // search_url or instant_url, causes Chrome to replace the URL with the
    // search term. This can be {google:instantExtendedEnabledKey}.
    {
      "field": "search_terms_replacement_key",
      "type": "string",
      "optional": true
    },
    {
      "field": "type",
      "type": "enum",
      "ctype": "SearchEngineType",
      "default": "SEARCH_ENGINE_OTHER",
      "optional": true
    },
    // Unique id for this prepopulate engine (corresponds to
    // TemplateURL::prepopulate_id). This ID must be greater than zero and must
    // remain the same for a particular site regardless of how the url changes;
    // the ID is used when modifying engine data in subsequent versions, so that
    // we can find the "old" entry to update even when the name or URL changes.
    //
    // This ID must be "unique" within one country's prepopulated data, but two
    // entries can share an ID if they represent the "same" engine (e.g. Yahoo!
    // US vs. Yahoo! UK) and will not appear in the same user-visible data set.
    // This facilitates changes like adding more specific per-country data in
    // the future; in such a case the localized engines will transparently
    // replace the previous, non-localized versions.  For engines where we need
    // two instances to appear for one country (e.g. Bing Search U.S. English
    // and Spanish), we must use two different unique IDs (and different
    // keywords).
    //
    // See prepopulated_engines.json for the list of available IDs.
    { "field": "id", "type": "int" }
  ]
}
