// Copyright 2012 The Chromium Authors
// 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!)."
              }
            }
          },
          "origins": {
            "type": "array",
            "items": {"type": "string"},
            "optional": true,
            "description": "When present, only data for origins in this list is deleted. Only supported for cookies, storage and cache. Cookies are cleared for the whole registrable domain."
          },
          "excludeOrigins": {
            "type": "array",
            "items": {"type": "string"},
            "optional": true,
            "description": "When present, data for origins in this list is excluded from deletion. Can't be used together with <code>origins</code>. Only supported for cookies, storage and cache.  Cookies are excluded for the whole registrable domain."
          }
        }
      },
      {
        "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."
          },
          "cacheStorage": {
            "type": "boolean",
            "optional": true,
            "description": "Cache storage"
          },
          "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,
            "deprecated": "Support for server-bound certificates has been removed. This data type will be ignored.",
            "description": "Server-bound certificates."
          },
          "passwords": {
            "type": "boolean",
            "optional": true,
            "description": "Stored passwords."
          },
          "pluginData": {
            "type": "boolean",
            "optional": true,
            "deprecated": "Support for Flash has been removed. This data type will be ignored.",
            "description": "Plugins' data."
          },
          "serviceWorkers": {
            "type": "boolean",
            "optional": true,
            "description": "Service Workers."
          },
          "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": [],
        "returns_async": {
          "name": "callback",
          "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."
          }
        ],
        "returns_async": {
          "name": "callback",
          "description": "Called when deletion has completed.",
          "optional": true,
          "parameters": []
        }
      },
      {
        "name": "removeAppcache",
        "description": "Clears websites' appcache data.",
        "type": "function",
        "parameters": [
          {
            "$ref": "RemovalOptions",
            "name": "options"
          }
        ],
        "returns_async": {
          "name": "callback",
          "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"
          }
        ],
        "returns_async": {
          "name": "callback",
          "description": "Called when the browser's cache has been cleared.",
          "optional": true,
          "parameters": []
        }
      },
      {
        "name": "removeCacheStorage",
        "description": "Clears websites' cache storage data.",
        "type": "function",
        "parameters": [
          {
            "$ref": "RemovalOptions",
            "name": "options"
          }
        ],
        "returns_async": {
          "name": "callback",
          "description": "Called when websites' cache storage 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"
          }
        ],
        "returns_async": {
          "name": "callback",
          "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"
          }
        ],
        "returns_async": {
          "name": "callback",
          "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"
          }
        ],
        "returns_async": {
          "name": "callback",
          "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"
          }
        ],
        "returns_async": {
          "name": "callback",
          "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"
          }
        ],
        "returns_async": {
          "name": "callback",
          "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"
          }
        ],
        "returns_async": {
          "name": "callback",
          "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"
          }
        ],
        "returns_async": {
          "name": "callback",
          "description": "Called when websites' local storage has been cleared.",
          "optional": true,
          "parameters": []
        }
      },
      {
        "name": "removePluginData",
        "description": "Clears plugins' data.",
        "deprecated": "Support for Flash has been removed. This function has no effect.",
        "type": "function",
        "parameters": [
          {
            "$ref": "RemovalOptions",
            "name": "options"
          }
        ],
        "returns_async": {
          "name": "callback",
          "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"
          }
        ],
        "returns_async": {
          "name": "callback",
          "description": "Called when the browser's passwords have been cleared.",
          "optional": true,
          "parameters": []
        }
      },
      {
        "name": "removeServiceWorkers",
        "description": "Clears websites' service workers.",
        "type": "function",
        "parameters": [
          {
            "$ref": "RemovalOptions",
            "name": "options"
          }
        ],
        "returns_async": {
          "name": "callback",
          "description": "Called when websites' service workers have been cleared.",
          "optional": true,
          "parameters": []
        }
      },
      {
        "name": "removeWebSQL",
        "description": "Clears websites' WebSQL data.",
        "type": "function",
        "parameters": [
          {
            "$ref": "RemovalOptions",
            "name": "options"
          }
        ],
        "returns_async": {
          "name": "callback",
          "description": "Called when websites' WebSQL databases have been cleared.",
          "optional": true,
          "parameters": []
        }
      }
    ]
  }
]
