chromium/tools/json_schema_compiler/test/content_settings.json

// 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": "contentSettings",
    "description": "The contentSettings API.",
    "types": [
      {
        "id": "ResourceIdentifier",
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The resource identifier for the given content type."
          },
          "description": {
            "type": "string",
            "optional": true,
            "description": "A human readable description of the resource."
          }
        },
        "description": "The only content type using resource identifiers is <a href=\"contentSettings.html#property-plugins\"><var>plugins</var></a>. For more information, see <a href=\"contentSettings.html#resource-identifiers\">Resource Identifiers</a>."
      },
      {
        "id": "ContentSetting",
        "type": "object",
        "functions": [
          {
            "name": "clear",
            "type": "function",
            "description": "Clear all content setting rules set by this extension.",
            "parameters": [
              {
                "name": "details",
                "type": "object",
                "properties": {
                  "scope": {
                    "type": "string",
                    "enum": ["regular", "incognito_session_only"],
                    "optional": true,
                    "description": "Where to set the setting (default: regular). One of<br><var>regular</var>: setting for regular profile (which is inherited by the incognito profile if not overridden elsewhere),<br><var>incognito_session_only</var>: setting for incognito profile that can only be set during an incognito session and is deleted when the incognito session ends (overrides regular settings)."
                  }
                }
              },
              {
                "type": "function",
                "name": "callback",
                "optional": true,
                "parameters": []
              }
            ]
          },
          {
            "name": "get",
            "type": "function",
            "description": "Gets the current content setting for a given pair of URLs.",
            "parameters": [
              {
                "name": "details",
                "type": "object",
                "properties": {
                  "primaryUrl": {
                    "type": "string",
                    "description": "The primary URL for which the content setting should be retrieved. Note that the meaning of a primary URL depends on the content type."
                  },
                  "secondaryUrl": {
                    "type": "string",
                    "description": "The secondary URL for which the content setting should be retrieved. Defaults to the primary URL. Note that the meaning of a secondary URL depends on the content type, and not all content types use secondary URLs.",
                    "optional": true
                  },
                  "resourceIdentifier": {
                    "$ref": "ResourceIdentifier",
                    "optional": true,
                    "description": "A more specific identifier of the type of content for which the settings should be retrieved."
                  },
                  "incognito": {
                    "type": "boolean",
                    "optional": true,
                    "description": "Whether to check the content settings for an incognito session. (default false)"
                  }
                }
              },
              {
                "type": "function",
                "name": "callback",
                "parameters": [
                  {
                    "name": "details",
                    "type": "object",
                    "properties": {
                      "setting": {
                        "type": "any",
                        "description": "The content setting. See the description of the individual ContentSetting objects for the possible values."
                      }
                    }
                  }
                ]
              }
            ]
          },
          {
            "name": "set",
            "type": "function",
            "description": "Applies a new content setting rule.",
            "parameters": [
              {
                "name": "details",
                "type": "object",
                "properties": {
                  "primaryPattern": {
                    "type": "string",
                    "description": "The pattern for the primary URL. For details on the format of a pattern, see <a href='contentSettings.html#patterns'>Content Setting Patterns</a>."
                  },
                  "secondaryPattern": {
                    "type": "string",
                    "description": "The pattern for the secondary URL. Defaults to matching all URLs. For details on the format of a pattern, see <a href='contentSettings.html#patterns'>Content Setting Patterns</a>.",
                    "optional": true
                  },
                  "resourceIdentifier": {
                    "$ref": "ResourceIdentifier",
                    "optional": true,
                    "description": "The resource identifier for the content type."
                  },
                  "setting": {
                    "type": "any",
                    "description": "The setting applied by this rule. See the description of the individual ContentSetting objects for the possible values."
                  },
                  "scope": {
                    "type": "string",
                    "enum": ["regular", "incognito_session_only"],
                    "optional": true,
                    "description": "Where to clear the setting (default: regular). One of<br><var>regular</var>: setting for regular profile (which is inherited by the incognito profile if not overridden elsewhere),<br><var>incognito_session_only</var>: setting for incognito profile that can only be set during an incognito session and is deleted when the incognito session ends (overrides regular settings)."
                  }
                }
              },
              {
                "type": "function",
                "name": "callback",
                "optional": true,
                "parameters": []
              }
            ]
          },
          {
            "name": "getResourceIdentifiers",
            "type": "function",
            "description": "",
            "parameters": [
              {
                "name": "callback",
                "type": "function",
                "parameters": [
                  {
                    "name": "resourceIdentifiers",
                    "type": "array",
                    "description": "A list of resource identifiers for this content type, or <var>undefined</var> if this content type does not use resource identifiers.",
                    "optional": true,
                    "items": {
                      "$ref": "ResourceIdentifier"
                    }
                  }
                ]
              }
            ]
          }
        ]
      }
    ],
    "properties": {
      "cookies": {
        "$ref": "ContentSetting",
        "description": "Whether to allow cookies and other local data to be set by websites. One of<br><var>allow</var>: Accept cookies,<br><var>block</var>: Block cookies,<br><var>session_only</var>: Accept cookies only for the current session. <br>Default is <var>allow</var>.<br>The primary URL is the URL representing the cookie origin. The secondary URL is the URL of the top-level frame.",
        "value": [
          "cookies",
          {"type":"string", "enum": ["allow", "block", "session_only"]}
        ]
      },
      "images": {
        "$ref": "ContentSetting",
        "description": "Whether to show images. One of<br><var>allow</var>: Show images,<br><var>block</var>: Don't show images. <br>Default is <var>allow</var>.<br>The primary URL is the main-frame URL. The secondary URL is the URL of the image.",
        "value": [
          "images",
          {"type":"string", "enum": ["allow", "block"]}
        ]
      },
      "javascript": {
        "$ref": "ContentSetting",
        "description": "Whether to run JavaScript. One of<br><var>allow</var>: Run JavaScript,<br><var>block</var>: Don't run JavaScript. <br>Default is <var>allow</var>.<br>The primary URL is the main-frame URL. The secondary URL is not used.",
        "value": [
          "javascript",
          {"type":"string", "enum": ["allow", "block"]}
        ]
      },
      "plugins": {
        "$ref": "ContentSetting",
        "description": "Whether to run plugins. One of<br><var>allow</var>: Run plugins automatically,<br><var>block</var>: Don't run plugins automatically. <br>Default is <var>allow</var>.<br>The primary URL is the main-frame URL. The secondary URL is not used.",
        "value": [
          "plugins",
          {"type":"string", "enum": ["allow", "block"]}
        ]
      },
      "popups": {
        "$ref": "ContentSetting",
        "description": "Whether to allow sites to show pop-ups. One of<br><var>allow</var>: Allow sites to show pop-ups,<br><var>block</var>: Don't allow sites to show pop-ups. <br>Default is <var>block</var>.<br>The primary URL is the main-frame URL. The secondary URL is not used.",
        "value": [
          "popups",
          {"type":"string", "enum": ["allow", "block"]}
        ]
      },
      "notifications": {
        "$ref": "ContentSetting",
        "description": "Whether to allow sites to show desktop notifications. One of<br><var>allow</var>: Allow sites to show desktop notifications,<br><var>block</var>: Don't allow sites to show desktop notifications,<br><var>ask</var>: Ask when a site wants to show desktop notifications. <br>Default is <var>ask</var>.<br>The primary URL is the main-frame URL. The secondary URL is not used.",
        "value": [
          "notifications",
          {"type":"string", "enum": ["allow", "block", "ask"]}
        ]
      }
    }
  }
]