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

[
  {
    "namespace": "omnibox",
    "description": "The omnibox API allows you to register a keyword with Google Chrome's address bar, which is also known as the omnibox.",
    "types": [
      {
        "id": "SuggestResult",
        "type": "object",
        "description": "A suggest result.",
        "properties": {
          "content": {
            "type": "string",
            "minLength": 1,
            "description": "The text that is put into the URL bar, and that is sent to the extension when the user chooses this entry."
          },
          "description": {
            "type": "string",
            "minLength": 1,
            "description": "The text that is displayed in the URL dropdown. Can contain XML-style markup for styling. The supported tags are 'url' (for a literal URL), 'match' (for highlighting text that matched what the user's query), and 'dim' (for dim helper text). The styles can be nested, eg. <dim><match>dimmed match</match></dim>."
          },
          "descriptionStyles": {
            "nodoc": true,
            "optional": true,
            "type": "array",
            "description": "An array of style ranges for the description, as provided by the extension.",
            "items": {
              "type": "object",
              "name": "matchClassification",
              "description": "The style ranges for the description, as provided by the extension.",
              "properties": {
                "offset": { "type": "integer" },
                "type": { "description": "The style type", "type": "string", "enum": ["url", "match", "dim"]},
                "length": { "type": "integer", "optional": true }
              }
            }
          },
          "descriptionStylesRaw": {
            "nodoc": true,
            "optional": true,
            "type": "array",
            "description": "An array of style ranges for the description, as provided by ToValue().",
            "items": {
              "type": "object",
              "name": "matchClassification",
              "description": "The style ranges for the description, as provided by ToValue().",
              "properties": {
                "offset": { "type": "integer" },
                "type": { "type": "integer" }
              }
            }
          }
        }
      },
      {
        "id": "DefaultSuggestResult",
        "inline_doc": true,
        "type": "object",
        "description": "A suggest result.",
        "properties": {
          "description": {
            "type": "string",
            "minLength": 1,
            "description": "The text that is displayed in the URL dropdown. Can contain XML-style markup for styling. The supported tags are 'url' (for a literal URL), 'match' (for highlighting text that matched what the user's query), and 'dim' (for dim helper text). The styles can be nested, eg. <dim><match>dimmed match</match></dim>."
          },
          "descriptionStyles": {
            "nodoc": true,
            "optional": true,
            "type": "array",
            "description": "An array of style ranges for the description, as provided by the extension.",
            "items": {
              "type": "object",
              "name": "matchClassification",
              "description": "The style ranges for the description, as provided by the extension.",
              "properties": {
                "offset": { "type": "integer" },
                "type": { "description": "The style type", "type": "string", "enum": ["url", "match", "dim"]},
                "length": { "type": "integer", "optional": true }
              }
            }
          },
          "descriptionStylesRaw": {
            "nodoc": true,
            "optional": true,
            "type": "array",
            "description": "An array of style ranges for the description, as provided by ToValue().",
            "items": {
              "type": "object",
              "name": "matchClassification",
              "description": "The style ranges for the description, as provided by ToValue().",
              "properties": {
                "offset": { "type": "integer" },
                "type": { "type": "integer" }
              }
            }
          }
        }
      }
    ],
    "functions": [
      {
        "name": "sendSuggestions",
        "nodoc": true,
        "type": "function",
        "description": "A callback passed to the onInputChanged event used for sending suggestions back to the browser.",
        "parameters": [
          {"type": "integer", "name": "requestId"},
          {
            "name": "suggestResults",
            "type": "array",
            "description": "An array of suggest results",
            "items": {
              "$ref": "SuggestResult"
            }
          }
        ]
      },
      {
        "name": "setDefaultSuggestion",
        "type": "function",
        "description": "Sets the description and styling for the default suggestion. The default suggestion is the text that is displayed in the first suggestion row underneath the URL bar.",
        "parameters": [
          {
            "name": "suggestion",
            "$ref": "DefaultSuggestResult",
            "description": "A partial SuggestResult object, without the 'content' parameter."
          }
        ]
      }
    ],
    "events": [
      {
        "name": "onInputStarted",
        "type": "function",
        "description": "User has started a keyword input session by typing the extension's keyword. This is guaranteed to be sent exactly once per input session, and before any onInputChanged events.",
        "parameters": []
      },
      {
        "name": "onInputChanged",
        "type": "function",
        "description": "User has changed what is typed into the omnibox.",
        "parameters": [
          {
            "type": "string",
            "name": "text"
          },
          {
            "name": "suggest",
            "type": "function",
            "description": "A callback passed to the onInputChanged event used for sending suggestions back to the browser.",
            "parameters": [
              {
                "name": "suggestResults",
                "type": "array",
                "description": "Array of suggest results",
                "items": {
                  "$ref": "SuggestResult"
                }
              }
            ]
          }
        ]
      },
      {
        "name": "onInputEntered",
        "type": "function",
        "description": "User has accepted what is typed into the omnibox.",
        "parameters": [
          {
            "type": "string",
            "name": "text"
          },
          {
            "name": "disposition",
            "type": "string",
            "enum": ["currentTab", "newForegroundTab", "newBackgroundTab"],
            "description": "The window disposition for the omnibox query. This is the recommended context to display results. For example, if the omnibox command is to navigate to a certain URL, a disposition of 'newForegroundTab' means the navigation should take place in a new selected tab."
          }
        ]
      },
      {
        "name": "onInputCancelled",
        "type": "function",
        "description": "User has ended the keyword input session without accepting the input.",
        "parameters": []
      }
    ]
  }
]
