// Copyright 2014 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// This features file defines manifest keys implemented under src/extensions.
// See chrome/common/extensions/api/_features.md to understand this file, as
// well as feature.h, simple_feature.h, and feature_provider.h.

{
  "about_page": {
    "channel": "stable",
    "extension_types": ["shared_module"]
  },
  "action": {
    "channel": "stable",
    "extension_types": ["extension"],
    "min_manifest_version": 3
  },
  "action_handlers": {
    "channel": "stable",
    "extension_types": ["platform_app"],
    "platforms": ["chromeos"]
  },
  "app": {
    "channel": "stable",
    "extension_types": ["legacy_packaged_app", "hosted_app", "platform_app"]
  },
  // The default platform app CSP can only be overridden by allowlisted apps.
  // This is a separate key from the top-level content_security_policy one since
  // we can't combine type restrictions with allowlisted ID restrictions. If
  // there is a need for additional allowlisted entries, the feature system
  // should instead be extended to support OR-ing of restrictions.
  "app.content_security_policy": {
    "channel": "stable",
    "extension_types": ["platform_app"],
    "allowlist": [
      "5107DE9024C329EEA9C9A72D94C16723790C6422" // Apps Debugger
    ]
  },
  "app.background": {
    "channel": "stable",
    "extension_types": ["platform_app"]
  },
  "author": {
    "channel": "stable",
    "extension_types": "all"
  },
  "automation": {
    // This is a private API which, for historical reasons, does not include
    // 'private' in the name. It should not be exposed outside of first-party
    // allow-listed very trusted extensions and component extensions.
    // This API has no protection in the JS wrappers around untrusted scripts
    // putting getters/setters to intercept and manipulate native bindings.
    "channel": "stable",
    "extension_types": ["extension", "legacy_packaged_app", "platform_app"],
    "allowlist": [
      "2FCBCE08B34CCA1728A85F1EFBD9A34DD2558B2E",
      "05D1DBD6E8B9C4690FFA7D50E6F60C5290DC662A", // http://crbug.com/941107
      "0D209B5E4401BB8E7873B5AB5B1346A1CB067015", // http://crbug.com/654525
      "93CFDA3681E923AD7AB291CEDD98248396B5496C"  // http://crbug.com/803543
    ]
  },
  "background": {
    "channel": "stable",
    "extension_types": [
      // Platform apps specify their background page via app.background.
      "extension", "legacy_packaged_app", "hosted_app", "login_screen_extension", "chromeos_system_extension" ]
  },
  "background.persistent": {
    "channel": "stable",
    "extension_types": [
      "extension", "legacy_packaged_app", "login_screen_extension" ],
    "max_manifest_version": 2
  },
  "background.scripts": {
    "channel": "stable",
    "max_manifest_version": 2
  },
  "background.page": {
    "channel": "stable",
    "max_manifest_version": 2
  },
  "background.service_worker": {
    "channel": "stable",
    "extension_types": ["extension", "chromeos_system_extension", "login_screen_extension"]
  },
  "bluetooth": [{
    // Note: The "bluetooth" manifest permission is used by the
    // chrome.bluetooth, chrome.bluetoothSocket and chrome.bluetoothLowEnergy
    // APIs.
    "channel": "stable",
    "extension_types": ["platform_app"],
    "platforms": ["chromeos"]
  }, {
    "channel": "stable",
    "extension_types": ["extension"],
    "platforms": ["chromeos"],
    "allowlist": [
      "75C7F4B720314B6CB1B5817CD86089DB95CD2461"  // http://crbug.com/899052
    ]
  }],
  "chrome_url_overrides": {
    "channel": "stable",
    "extension_types": ["extension", "legacy_packaged_app"]
  },
  "chrome_url_overrides.activationmessage": {
    "channel": "stable",
    "extension_types": ["extension", "legacy_packaged_app"],
    "platforms": ["chromeos"]
  },
  "chrome_url_overrides.keyboard": {
    "channel": "stable",
    "extension_types": ["extension", "legacy_packaged_app"],
    "platforms": ["chromeos"]
  },
  "commands": {
    "channel": "stable",
    "extension_types": ["extension", "platform_app"]
  },
  "content_capabilities": [{
    "channel": "stable",
    "extension_types": ["extension"],
    "allowlist": [
      "950D13BB9B4794F4CA2A68D3597E5DFAA47C88AE",  // Drive
      "0EEB39B7A9A52CAAE6A072F83320435749B184A4",  // http://crbug.com/481210
      "99717FF3BE1AFB5B343CDD024E53873C1783521B",  // http://crbug.com/838690
      "4895B1DBB92D52488F8D9FFDF9CC7B95C7258C9A",  // http://crbug.com/505532
      "A3880AA78DB0004DE841CC980959D8443F3A8E40",  // http://crbug.com/521615
      "C8B53B3C2CC39CB504B19D990165684FF0CE880C"   // http://crbug.com/521615
    ]
  }, {
    "channel": "canary",
    "extension_types": ["extension"]
  }],
  "content_security_policy": {
    "channel": "stable",
    // Platform apps have a restricted content security policy that cannot be
    // overriden (except for a allowlist of exceptions, see the
    // app.content_security_policy allowlist).
    "extension_types": [
      "extension", "legacy_packaged_app", "login_screen_extension"
    ]
  },
  "cross_origin_embedder_policy": {
    "channel": "stable",
    "extension_types": ["extension", "platform_app"]
  },
  "cross_origin_opener_policy": {
    "channel": "stable",
    "extension_types": ["extension", "platform_app"]
  },
  "current_locale": {
    "channel": "stable",
    "extension_types": "all"
  },
  "declarative_net_request": {
    "channel": "stable",
    "extension_types": ["extension"]
  },
  "default_locale": {
    "channel": "stable",
    "extension_types": "all"
  },
  "description": {
    "channel": "stable",
    "extension_types": "all"
  },
  "devtools_page": {
    "channel": "stable",
    "extension_types": ["extension", "legacy_packaged_app"]
  },
  "differential_fingerprint": {
    "channel": "stable",
    "extension_types": "all"
  },
  "event_rules": {
    "channel": "stable",
    // "event_rules" does not grant any capabilities, it's just
    // an optimisation for any API which uses events, so it's safe
    // to expose to all extension types.
    "extension_types": [
      "extension",
      "legacy_packaged_app",
      "platform_app",
      "hosted_app",
      "shared_module",
      "theme"
    ]
  },
  "export": {
    "channel": "stable",
    "extension_types": ["shared_module"]
  },
  "externally_connectable": [{
    "channel": "stable",
    "extension_types": [
      "extension",
      "hosted_app",
      "legacy_packaged_app",
      "platform_app",
      "chromeos_system_extension"
    ]
  }, {
    "channel": "stable",
    "extension_types": ["login_screen_extension"],
    "location": "policy",
    "platforms": ["chromeos"],
    "allowlist": [
      "93B7178E8C275515C38D4F43D9DF4648F0EA9B03", // Identity Card Connector
      // https://crbug.com/383855830
      "1FC31C9D42DF1B51EA7648F73DF26400322999A8"  // IDmelon Accesskey
    ]
  }],
  "file_handlers": [
    {
      "channel": "stable",
      "extension_types": ["platform_app"]
    },
    {
      "channel": "stable",
      "extension_types": [ "extension"],
      "allowlist": [
        "2FC374607C2DF285634B67C64A2E356C607091C3",  // Quickoffice
        "3727DD3E564B6055387425027AD74C58784ACC15",  // Quickoffice internal
        "12E618C3C6E97495AAECF2AC12DEB082353241C6"   // QO component extension
      ]
    },
    {
      "channel": "stable",
      "extension_types": ["extension"],
      "min_manifest_version": 3,
      "platforms": ["chromeos"]
    }
  ],
  "protocol_handlers": {
    "channel": "dev",
    "extension_types": ["extension"],
    "min_manifest_version": 3
  },
  "homepage_url": {
    "channel": "stable",
    "extension_types": ["extension", "legacy_packaged_app"]
  },
  "host_permissions": [{
    "channel": "stable",
    "extension_types": ["extension"],
    "min_manifest_version": 3
  },
  {
    "channel": "stable",
    "dependencies": ["behavior:imprivata_login_screen_extension"],
    "extension_types": ["login_screen_extension"],
    "min_manifest_version": 3
  }],
  "icons": {
    "channel": "stable",
    "extension_types": "all"
  },
  "input_components": {
    "channel": "stable",
    "extension_types": ["extension", "legacy_packaged_app"]
  },
  "import": {
    "channel": "stable",
    "extension_types": "all"
  },
  "icon_variants": {
    "channel": "canary",
    "extension_types": ["extension"],
    "min_manifest_version": 3,
    "feature_flag": "ExtensionIconVariants"
  },
  "incognito": [
    {
      "channel": "stable",
      "extension_types": ["extension", "legacy_packaged_app"]
    },
    {
      "channel": "stable",
      "extension_types": ["platform_app"],
      "location": "component"
    }
  ],
  "key": {
    "channel": "stable",
    "extension_types": "all"
  },
  "kiosk": {
    "channel": "stable",
    "extension_types": ["platform_app"]
  },
  "kiosk.always_update": {
    "channel": "stable",
    "extension_types": ["platform_app"]
  },
  "kiosk.required_platform_version": {
    "channel": "stable",
    "extension_types": ["platform_app"]
  },
  "kiosk_enabled": [
    {
      "channel": "stable",
      "extension_types": [
        "platform_app"
      ]
    },
    {
      "channel": "stable",
      "extension_types": [
        "extension"
      ],
      "session_types": [
        "kiosk"
      ]
    }
  ],
  "kiosk_only": {
    "channel": "stable",
    "extension_types": [
      "platform_app"
    ],
    "platforms": ["chromeos"]
  },
  "kiosk_secondary_apps": {
    "channel": "stable",
    "extension_types": [
      "platform_app"
    ]
  },
  "message_serialization": {
    "channel": "canary",
    "extension_types": ["extension"],
    "min_manifest_version": 3
  },
  "manifest_version": {
    "channel": "stable",
    "extension_types": "all"
  },
  "mime_types": {
    "channel": "stable",
    "extension_types": [ "extension", "legacy_packaged_app", "platform_app" ],
    "allowlist": [
      "787000072C6FBB934AF5A42275CDE73FC977D995",  // browser_tests
      "2FC374607C2DF285634B67C64A2E356C607091C3",  // QuickOffice
      "5D3851BEFF680AB6D954B76678EFCCE834465C23",  // QuickOffice Dev
      "12E618C3C6E97495AAECF2AC12DEB082353241C6",  // Quickoffice component extension
      "3727DD3E564B6055387425027AD74C58784ACC15",  // Editor
      "CBCC42ABED43A4B58FE3810E62AFFA010EB0349F"   // PDF
    ]
  },
  "mime_types_handler": [{
    "channel": "stable",
    "extension_types": [ "extension", "legacy_packaged_app", "platform_app" ],
    "allowlist": [
      "787000072C6FBB934AF5A42275CDE73FC977D995",  // browser_tests
      "2FC374607C2DF285634B67C64A2E356C607091C3",  // QuickOffice
      "12E618C3C6E97495AAECF2AC12DEB082353241C6",  // QuickOffice component extension
      "3727DD3E564B6055387425027AD74C58784ACC15",  // QuickOffice Editor
      "CBCC42ABED43A4B58FE3810E62AFFA010EB0349F"   // PDF
    ]
  }, {
    "channel": "stable",
    "extension_types": ["extension"],
    "feature_flag": "ApiMimeHandler"
  }],
  "name": {
    "channel": "stable",
    "extension_types": "all"
  },
  "oauth2": {
    "channel": "stable",
    "extension_types": [
      "extension", "legacy_packaged_app", "platform_app"
    ]
  },
  "oauth2.auto_approve": {
    "channel": "stable",
    "extension_types": [
      "extension", "platform_app"
    ],
    "allowlist": [
      "F57FDBA2822F21B82A4C417405ABC51241CC6426",  // unit_tests
      "C41AD9DCD670210295614257EF8C9945AD68D86E",  // Google Now
      "64291898C201DAF15B090EC4B9EC270BEB6BE6FF",  // In-app payments support app.
      "4B1D0E19C6C43C008C44A8278C8B5BFE15ABEB3C",
      "F7FA7ABC1ECB89BA8EE6656847EFABBF43BB9BCA",

      "07BD6A765FFC289FF755D7CAB2893A40EC337FEC",  // http://crbug.com/430730
      "896B85CC7E913E11C34892C1425A093C0701D386",  // http://crbug.com/430730
      "11A01C82EF355E674E4F9728A801F5C3CB40D83F",  // http://crbug.com/430730
      "F410C88469990EE7947450311D24B8AF2ADB2595",  // http://crbug.com/430730

      // TODO(joaodasilva): remove these two once we have the new policy to
      // grant auto approval by ID. http://crbug.com/399392
      "A8208CCC87F8261AFAEB6B85D5E8D47372DDEA6B",
      "A4577D8C2AF4CF26F40CBCA83FFA4251D6F6C8F8",
      "EFCF5358672FEE04789FD2EC3638A67ADEDB6C8C"  // http://crbug.com/514696
    ]
  },
  "offline_enabled": {
    "channel": "stable",
    "extension_types": [
      "extension", "legacy_packaged_app", "hosted_app", "platform_app"
    ]
  },
  "optional_host_permissions": {
    "channel": "stable",
    "extension_types": ["extension"],
    "min_manifest_version": 3
  },
  "options_page": {
    "channel": "stable",
    "extension_types": [
      "extension",
      "legacy_packaged_app",
      "hosted_app",
      "chromeos_system_extension"
    ]
  },
  "options_ui": {
    "channel": "stable",
    "extension_types": ["extension", "legacy_packaged_app"]
  },
  "page_action": {
    "channel": "stable",
    "extension_types": ["extension"],
    "max_manifest_version": 2
  },
  "permissions": {
    "channel": "stable",
    "extension_types": [
      "extension",
      "legacy_packaged_app",
      "hosted_app",
      "platform_app",
      "login_screen_extension",
      "chromeos_system_extension"
    ]
  },
  "replacement_web_app": {
    "channel": "stable",
    "extension_types": ["extension", "platform_app"]
  },
  "requirements": {
    "channel": "stable",
    "extension_types": [
      "extension", "legacy_packaged_app", "hosted_app", "platform_app"
    ]
  },
  "sandbox": {
    "channel": "stable",
    "extension_types": [
      "extension", "platform_app", "legacy_packaged_app"
    ]
  },
  "short_name": {
    "channel": "stable",
    "extension_types": "all"
  },
  "sockets": [
    {
      "channel": "stable",
      "extension_types": ["platform_app"]
    },
    {
      "channel": "stable",
      "extension_types": ["extension"],
      "allowlist": [
        "3BC1ED0B3E6EFDC7BD4D3D1D75D44B52DEE0A226",  // Secure Shell Ext (stable)
        "38C361D4A0726CE45D3572D65071B6BDB3092371"   // Secure Shell Ext (dev)
      ]
    },
    {
      "channel": "dev",
      "extension_types": ["extension"],
      "platforms": ["chromeos"],
      "session_types": ["kiosk"]
    }
  ],
  "trial_tokens": {
    "channel": "stable",
    "extension_types": ["extension"],
    "min_manifest_version": 3
  },
  "tts_engine": {
    "channel": "stable",
    "extension_types": ["extension", "legacy_packaged_app"]
  },
  "update_url": {
    "channel": "stable",
    "extension_types": "all"
  },
  "usb_printers": {
    "channel": "stable",
    "extension_types": ["platform_app"]
  },
  "version": {
    "channel": "stable",
    "extension_types": "all"
  },
  "version_name": {
    "channel": "stable",
    "extension_types": "all"
  },
  "web_accessible_resources": [
    {
      "channel": "stable",
      "extension_types": [
        "extension", "legacy_packaged_app", "hosted_app"
      ]
    },
    {
      "channel": "stable",
      "extension_types": ["platform_app"],
      "location": "component"
    },
    {
      "channel": "stable",
      "dependencies": ["behavior:imprivata_login_screen_extension"],
      "extension_types": ["login_screen_extension"]
    }, {
      "channel": "stable",
      "extension_types": ["login_screen_extension"],
      "location": "policy",
      "platforms": ["chromeos"],
      "allowlist": [
        // https://crbug.com/383855830
        "1FC31C9D42DF1B51EA7648F73DF26400322999A8"  // IDmelon Accesskey
      ]
    }
  ],
  "webview": {
    "channel": "stable",
    "extension_types": ["platform_app"]
  }
}
