chromium/extensions/common/api/_manifest_features.json

// 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_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": [
      // Keep this list in sync with extensions_misc::kHangoutsExtensionIds but
      // omit the Packaged App ids.
      "53041A2FA309EECED01FFC751E7399186E860B2C",  // Hangouts Production.
      "312745D9BF916161191143F6490085EEA0434997",  // Hangouts Debug.
      "E7E2461CE072DF036CF9592740196159E2D7C089",  // Hangouts Alpha.
      "A74A4D44C7CFCD8844830E6140C8D763E12DD8F3",  // Hangouts Beta.

      "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", "lacros", "win", "mac"]
  }, {
    "channel": "stable",
    "extension_types": ["platform_app"],
    "platforms": ["linux"],
    "allowlist": [
      "9E287A8257E58EFB13E89C86A4B75A3AC4B058D8",  // unit_tests browser_tests
      "1C93BD3CF875F4A73C0B2A163BB8FBDA8B8B3D80",  // http://crbug.com/396117
      "A3BC37E2148AC4E99BE4B16AF9D42DD1E592BBBE",  // http://crbug.com/396117
      "E703483CEF33DEC18B4B6DD84B5C776FB9182BDB",  // http://crbug.com/396117
      "307E96539209F95A1A8740C713E6998A73657D96",  // http://crbug.com/396117
      "4F25792AF1AA7483936DE29C07806F203C7170A0",  // http://crbug.com/407693
      "BD8781D757D830FC2E85470A1B6E8A718B7EE0D9",  // http://crbug.com/407693
      "4AC2B6C63C6480D150DFDA13E4A5956EB1D0DDBB",  // http://crbug.com/407693
      "81986D4F846CEDDDB962643FA501D1780DD441BB",  // http://crbug.com/407693
      "A9A9FC0228ADF541F0334F22BEFB8F9C245B21D7"   // http://crbug.com/839189
    ]
  }, {
    "channel": "stable",
    "extension_types": ["extension"],
    "platforms": ["chromeos"],
    "allowlist": [
      "75C7F4B720314B6CB1B5817CD86089DB95CD2461"  // http://crbug.com/899052
    ]
  }],
  "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"
  },
  "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
    ]
  }],
  "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", "lacros"]
    }
  ],
  "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"
    ]
  },
  "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
    ]
  },
  "nacl_modules": {
    "channel": "stable",
    "extension_types": [
      "extension", "legacy_packaged_app", "hosted_app", "platform_app"
    ],
    "max_manifest_version": 2
  },
  "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", "lacros"],
      "session_types": ["kiosk"]
    }
  ],
  "trial_tokens": {
    "channel": "canary",
    "extension_types": ["extension"],
    "min_manifest_version": 3
  },
  "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"]
    }
  ],
  "webview": {
    "channel": "stable",
    "extension_types": ["platform_app"]
  }
}