toolkit/components/extensions/schemas/experiments.json
author criss <ccozmuta@mozilla.com>
Mon, 18 Oct 2021 16:30:48 +0300
changeset 596179 ee8efced380b871deac4fba285955953a4a89ef5
parent 399188 8b2768e6d9ab52a3d41a7fd116db0c9c4d2d32d8
permissions -rw-r--r--
Backed out changeset 21276955f659 (bug 1720926) for causing hybrid bustages on nsIPrincipal. CLOSED TREE

[
  {
    "namespace": "manifest",
    "types": [
      {
        "$extend": "Permission",
        "choices": [
          {
            "type": "string",
            "pattern": "^experiments(\\.\\w+)+$"
          }
        ]
      },
      {
        "$extend": "WebExtensionManifest",
        "properties": {
          "experiment_apis": {
            "type": "object",
            "additionalProperties": {"$ref": "experiments.ExperimentAPI"},
            "optional": true
          }
        }
      }
    ]
  },
  {
    "namespace": "experiments",
    "types": [
      {
        "id": "ExperimentAPI",
        "type": "object",
        "properties": {
          "schema": {"$ref": "ExperimentURL"},

          "parent": {
            "type": "object",
            "properties": {
              "events": {
                "$ref": "APIEvents",
                "optional": true,
                "default": []
              },

              "paths": {
                "$ref": "APIPaths",
                "optional": true,
                "default": []
              },

              "script": {"$ref": "ExperimentURL"},

              "scopes": {
                "type": "array",
                "items": {"$ref": "APIParentScope", "onError": "warn"},
                "optional": true,
                "default": []
              }
            },
            "optional": true
          },

          "child": {
            "type": "object",
            "properties": {
              "paths": {"$ref": "APIPaths"},

              "script": {"$ref": "ExperimentURL"},

              "scopes": {
                "type": "array",
                "minItems": 1,
                "items": {"$ref": "APIChildScope", "onError": "warn"}
              }
            },
            "optional": true
          }
        }
      },
      {
        "id": "ExperimentURL",
        "type": "string",
        "format": "unresolvedRelativeUrl"
      },
      {
        "id": "APIPaths",
        "type": "array",
        "items": {"$ref": "APIPath"},
        "minItems": 1
      },
      {
        "id": "APIPath",
        "type": "array",
        "items": {"type": "string"},
        "minItems": 1
      },
      {
        "id": "APIEvents",
        "type": "array",
        "items": {"$ref": "APIEvent", "onError": "warn"}
      },
      {
        "id": "APIEvent",
        "type": "string",
        "enum": [
          "startup"
        ]
      },
      {
        "id": "APIParentScope",
        "type": "string",
        "enum": [
          "addon_parent",
          "content_parent",
          "devtools_parent"
        ]
      },
      {
        "id": "APIChildScope",
        "type": "string",
        "enum": [
          "addon_child",
          "content_child",
          "devtools_child"
        ]
      }
    ]
  }
]