// 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 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 },
    // If omitted, this engine does not support a static logo.
    { "field": "logo_url", "type": "string", "optional": true },
    // If omitted, this engine does not support doodles. Note: Only at most one
    // of "doodle_url" and "logo_url" should be set.
    { "field": "doodle_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": "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
    },
    {
      "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" }
  ]
}
