// 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": "browsingData",
    "description": "Use the <code>chrome.browsingData</code> API to remove browsing data from a user's local profile.",
    "types": [
      {
        "id": "RemovalOptions",
        "type": "object",
        "description": "Options that determine exactly what data will be removed.",
        "properties": {
          "since": {
            "type": "number",
            "optional": true,
            "description": "Remove data accumulated on or after this date, represented in milliseconds since the epoch (accessible via the <code>getTime</code> method of the JavaScript <code>Date</code> object). If absent, defaults to 0 (which would remove all browsing data)."
          },
          "originTypes": {
            "type": "object",
            "optional": true,
            "description": "An object whose properties specify which origin types ought to be cleared. If this object isn't specified, it defaults to clearing only \"unprotected\" origins. Please ensure that you <em>really</em> want to remove application data before adding 'protectedWeb' or 'extensions'.",
            "properties": {
              "unprotectedWeb": {
                "type": "boolean",
                "optional": true,
                "description": "Normal websites."
              },
              "protectedWeb": {
                "type": "boolean",
                "optional": true,
                "description": "Websites that have been installed as hosted applications (be careful!)."
              },
              "extension": {
                "type": "boolean",
                "optional": true,
                "description": "Extensions and packaged applications a user has installed (be _really_ careful!)."
              }
            }
          }
        }
      },
      {
        "id": "DataTypeSet",
        "type": "object",
        "description": "A set of data types. Missing data types are interpreted as <code>false</code>.",
        "properties": {
          "appcache": {
            "type": "boolean",
            "optional": true,
            "description": "Websites' appcaches."
          },
          "cache": {
            "type": "boolean",
            "optional": true,
            "description": "The browser's cache. Note: when removing data, this clears the <em>entire</em> cache: it is not limited to the range you specify."
          },
          "cookies": {
            "type": "boolean",
            "optional": true,
            "description": "The browser's cookies."
          },
          "downloads": {
            "type": "boolean",
            "optional": true,
            "description": "The browser's download list."
          },
          "fileSystems": {
            "type": "boolean",
            "optional": true,
            "description": "Websites' file systems."
          },
          "formData": {
            "type": "boolean",
            "optional": true,
            "description": "The browser's stored form data."
          },
          "history": {
            "type": "boolean",
            "optional": true,
            "description": "The browser's history."
          },
          "indexedDB": {
            "type": "boolean",
            "optional": true,
            "description": "Websites' IndexedDB data."
          },
          "localStorage": {
            "type": "boolean",
            "optional": true,
            "description": "Websites' local storage data."
          },
          "serverBoundCertificates": {
            "type": "boolean",
            "optional": true,
            "description": "Server-bound certificates."
          },
          "pluginData": {
            "type": "boolean",
            "optional": true,
            "description": "Plugins' data."
          },
          "passwords": {
            "type": "boolean",
            "optional": true,
            "description": "Stored passwords."
          },
          "webSQL": {
            "type": "boolean",
            "optional": true,
            "description": "Websites' WebSQL data."
          }
        }
      }
    ],
    "functions": [
      {
        "name": "settings",
        "description": "Reports which types of data are currently selected in the 'Clear browsing data' settings UI.  Note: some of the data types included in this API are not available in the settings UI, and some UI settings control more than one data type listed here.",
        "type": "function",
        "parameters": [
          {
            "name": "callback",
            "type": "function",
            "parameters": [
              {
                "name": "result",
                "type": "object",
                "properties": {
                  "options": {
                    "$ref": "RemovalOptions"
                  },
                  "dataToRemove": {
                    "$ref": "DataTypeSet",
                    "description": "All of the types will be present in the result, with values of <code>true</code> if they are both selected to be removed and permitted to be removed, otherwise <code>false</code>."
                  },
                  "dataRemovalPermitted": {
                    "$ref": "DataTypeSet",
                    "description": "All of the types will be present in the result, with values of <code>true</code> if they are permitted to be removed (e.g., by enterprise policy) and <code>false</code> if not."
                  }
                }
              }
            ]
          }
        ]
      },
      {
        "name": "remove",
        "description": "Clears various types of browsing data stored in a user's profile.",
        "type": "function",
        "parameters": [
          {
            "$ref": "RemovalOptions",
            "name": "options"
          },
          {
            "name": "dataToRemove",
            "$ref": "DataTypeSet",
            "description": "The set of data types to remove."
          },
          {
            "name": "callback",
            "type": "function",
            "description": "Called when deletion has completed.",
            "optional": true,
            "parameters": []
          }
        ]
      },
      {
        "name": "removeAppcache",
        "description": "Clears websites' appcache data.",
        "type": "function",
        "parameters": [
          {
            "$ref": "RemovalOptions",
            "name": "options"
          },
          {
            "name": "callback",
            "type": "function",
            "description": "Called when websites' appcache data has been cleared.",
            "optional": true,
            "parameters": []
          }
        ]
      },
      {
        "name": "removeCache",
        "description": "Clears the browser's cache.",
        "type": "function",
        "parameters": [
          {
            "$ref": "RemovalOptions",
            "name": "options"
          },
          {
            "name": "callback",
            "type": "function",
            "description": "Called when the browser's cache has been cleared.",
            "optional": true,
            "parameters": []
          }
        ]
      },
      {
        "name": "removeCookies",
        "description": "Clears the browser's cookies and server-bound certificates modified within a particular timeframe.",
        "type": "function",
        "parameters": [
          {
            "$ref": "RemovalOptions",
            "name": "options"
          },
          {
            "name": "callback",
            "type": "function",
            "description": "Called when the browser's cookies and server-bound certificates have been cleared.",
            "optional": true,
            "parameters": []
          }
        ]
      },
      {
        "name": "removeDownloads",
        "description": "Clears the browser's list of downloaded files (<em>not</em> the downloaded files themselves).",
        "type": "function",
        "parameters": [
          {
            "$ref": "RemovalOptions",
            "name": "options"
          },
          {
            "name": "callback",
            "type": "function",
            "description": "Called when the browser's list of downloaded files has been cleared.",
            "optional": true,
            "parameters": []
          }
        ]
      },
      {
        "name": "removeFileSystems",
        "description": "Clears websites' file system data.",
        "type": "function",
        "parameters": [
          {
            "$ref": "RemovalOptions",
            "name": "options"
          },
          {
            "name": "callback",
            "type": "function",
            "description": "Called when websites' file systems have been cleared.",
            "optional": true,
            "parameters": []
          }
        ]
      },
      {
        "name": "removeFormData",
        "description": "Clears the browser's stored form data (autofill).",
        "type": "function",
        "parameters": [
          {
            "$ref": "RemovalOptions",
            "name": "options"
          },
          {
            "name": "callback",
            "type": "function",
            "description": "Called when the browser's form data has been cleared.",
            "optional": true,
            "parameters": []
          }
        ]
      },
      {
        "name": "removeHistory",
        "description": "Clears the browser's history.",
        "type": "function",
        "parameters": [
          {
            "$ref": "RemovalOptions",
            "name": "options"
          },
          {
            "name": "callback",
            "type": "function",
            "description": "Called when the browser's history has cleared.",
            "optional": true,
            "parameters": []
          }
        ]
      },
      {
        "name": "removeIndexedDB",
        "description": "Clears websites' IndexedDB data.",
        "type": "function",
        "parameters": [
          {
            "$ref": "RemovalOptions",
            "name": "options"
          },
          {
            "name": "callback",
            "type": "function",
            "description": "Called when websites' IndexedDB data has been cleared.",
            "optional": true,
            "parameters": []
          }
        ]
      },
      {
        "name": "removeLocalStorage",
        "description": "Clears websites' local storage data.",
        "type": "function",
        "parameters": [
          {
            "$ref": "RemovalOptions",
            "name": "options"
          },
          {
            "name": "callback",
            "type": "function",
            "description": "Called when websites' local storage has been cleared.",
            "optional": true,
            "parameters": []
          }
        ]
      },
      {
        "name": "removePluginData",
        "description": "Clears plugins' data.",
        "type": "function",
        "parameters": [
          {
            "$ref": "RemovalOptions",
            "name": "options"
          },
          {
            "name": "callback",
            "type": "function",
            "description": "Called when plugins' data has been cleared.",
            "optional": true,
            "parameters": []
          }
        ]
      },
      {
        "name": "removePasswords",
        "description": "Clears the browser's stored passwords.",
        "type": "function",
        "parameters": [
          {
            "$ref": "RemovalOptions",
            "name": "options"
          },
          {
            "name": "callback",
            "type": "function",
            "description": "Called when the browser's passwords have been cleared.",
            "optional": true,
            "parameters": []
          }
        ]
      },
      {
        "name": "removeWebSQL",
        "description": "Clears websites' WebSQL data.",
        "type": "function",
        "parameters": [
          {
            "$ref": "RemovalOptions",
            "name": "options"
          },
          {
            "name": "callback",
            "type": "function",
            "description": "Called when websites' WebSQL databases have been cleared.",
            "optional": true,
            "parameters": []
          }
        ]
      }
    ]
  }
]