[
  {
    "namespace": "manifest",
    "types": [
      {
        "$extend": "OptionalPermission",
        "choices": [
          {
            "type": "string",
            "enum": ["topSites"]
          }
        ]
      }
    ]
  },
  {
    "namespace": "topSites",
    "description": "Use the chrome.topSites API to access the top sites that are displayed on the new tab page. ",
    "permissions": ["topSites"],
    "types": [
      {
        "id": "MostVisitedURL",
        "type": "object",
        "description": "An object encapsulating a most visited URL, such as the URLs on the new tab page.",
        "properties": {
          "url": {
            "type": "string",
            "description": "The most visited URL."
          },
          "title": {
            "type": "string",
            "optional": true,
            "description": "The title of the page."
          },
          "favicon": {
            "type": "string",
            "optional": true,
            "description": "Data URL for the favicon, if available."
          },
          "type": {
            "type": "string",
            "enum": ["url", "search"],
            "optional": true,
            "default": "url",
            "description": "The entry type, either <code>url</code> for a normal page link, or <code>search</code> for a search shortcut."
          }
        }
      }
    ],
    "functions": [
      {
        "name": "get",
        "type": "function",
        "description": "Gets a list of top sites.",
        "async": "callback",
        "parameters": [
          {
            "type": "object",
            "name": "options",
            "properties": {
              "providers": {
                "type": "array",
                "items": { "type": "string" },
                "deprecated": "Please use the other options to tune the results received from topSites.",
                "default": [],
                "optional": true
              },
              "limit": {
                "type": "integer",
                "default": 12,
                "maximum": 100,
                "minimum": 1,
                "optional": true,
                "description": "The number of top sites to return, defaults to the value used by Firefox"
              },
              "onePerDomain": {
                "type": "boolean",
                "default": true,
                "optional": true,
                "description": "Limit the result to a single top site link per domain"
              },
              "includeBlocked": {
                "type": "boolean",
                "default": false,
                "optional": true,
                "description": "Include sites that the user has blocked from appearing on the Firefox new tab."
              },
              "includeFavicon": {
                "type": "boolean",
                "default": false,
                "optional": true,
                "description": "Include sites favicon if available."
              },
              "includePinned": {
                "type": "boolean",
                "default": false,
                "optional": true,
                "description": "Include sites that the user has pinned on the Firefox new tab."
              },
              "includeSearchShortcuts": {
                "type": "boolean",
                "default": false,
                "optional": true,
                "description": "Include search shortcuts appearing on the Firefox new tab."
              },
              "newtab": {
                "type": "boolean",
                "default": false,
                "optional": true,
                "description": "Return the sites that exactly appear on the user's new-tab page. When true, all other options are ignored except limit and includeFavicon. If the user disabled newtab Top Sites, the newtab parameter will be ignored."
              }
            },
            "default": {},
            "optional": true
          },
          {
            "name": "callback",
            "type": "function",
            "parameters": [
              {
                "name": "results",
                "type": "array",
                "items": {
                  "$ref": "MostVisitedURL"
                }
              }
            ]
          }
        ]
      }
    ]
  }
]
