// 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.

// This features file defines extension APIs implemented under src/chrome.
// See chrome/common/extensions/api/_features.md to understand this file, as
// well as feature.h, simple_feature.h, and feature_provider.h.
//
// Note that specifying "web_page", "blessed_web_page", or "all" as a context
// type will require manually updating javascript bindings code in the
// renderer.

{
  "accessibilityFeatures": [{
    "dependencies": ["permission:accessibilityFeatures.modify"],
    "contexts": ["blessed_extension"]
  }, {
    "dependencies": ["permission:accessibilityFeatures.read"],
    "contexts": ["blessed_extension"]
  }],
  "accessibilityPrivate": {
    "dependencies": ["permission:accessibilityPrivate"],
    "contexts": ["blessed_extension"]
  },
  "accessibilityPrivate.onTwoFingerTouchStart": {
    "channel": "stable",
    "contexts": ["blessed_extension"],
    "dependencies": [],
    "extension_types": ["platform_app"],
    "session_types": ["kiosk"],
    "allowlist": [
       "E703483CEF33DEC18B4B6DD84B5C776FB9182BDB",  // http://crbug.com/717501
       "A3BC37E2148AC4E99BE4B16AF9D42DD1E592BBBE",  // http://crbug.com/717501
       "1C93BD3CF875F4A73C0B2A163BB8FBDA8B8B3D80",  // http://crbug.com/717501
       "307E96539209F95A1A8740C713E6998A73657D96",  // http://crbug.com/717501
       "4F25792AF1AA7483936DE29C07806F203C7170A0",  // http://crbug.com/717501
       "BD8781D757D830FC2E85470A1B6E8A718B7EE0D9",  // http://crbug.com/717501
       "4AC2B6C63C6480D150DFDA13E4A5956EB1D0DDBB",  // http://crbug.com/717501
       "81986D4F846CEDDDB962643FA501D1780DD441BB",  // http://crbug.com/717501
       "A9A9FC0228ADF541F0334F22BEFB8F9C245B21D7"   // http://crbug.com/839189
    ]
  },
  "accessibilityPrivate.onTwoFingerTouchStop": {
    "channel": "stable",
    "contexts": ["blessed_extension"],
    "dependencies": [],
    "extension_types": ["platform_app"],
    "session_types": ["kiosk"],
    "allowlist": [
       "E703483CEF33DEC18B4B6DD84B5C776FB9182BDB",  // http://crbug.com/717501
       "A3BC37E2148AC4E99BE4B16AF9D42DD1E592BBBE",  // http://crbug.com/717501
       "1C93BD3CF875F4A73C0B2A163BB8FBDA8B8B3D80",  // http://crbug.com/717501
       "307E96539209F95A1A8740C713E6998A73657D96",  // http://crbug.com/717501
       "4F25792AF1AA7483936DE29C07806F203C7170A0",  // http://crbug.com/717501
       "BD8781D757D830FC2E85470A1B6E8A718B7EE0D9",  // http://crbug.com/717501
       "4AC2B6C63C6480D150DFDA13E4A5956EB1D0DDBB",  // http://crbug.com/717501
       "81986D4F846CEDDDB962643FA501D1780DD441BB",  // http://crbug.com/717501
       "A9A9FC0228ADF541F0334F22BEFB8F9C245B21D7"   // http://crbug.com/839189
    ]
  },
  "accessibilityServicePrivate": {
    "dependencies": ["permission:accessibilityServicePrivate"],
    "channel": "stable",
    "contexts": ["blessed_extension"],
    "platforms": ["chromeos", "lacros"],
    "feature_flag": "ApiAccessibilityServicePrivate"
  },
  "action": {
    "dependencies": ["manifest:action"],
    "contexts": ["blessed_extension"]
  },
  "action.openPopup": [{
    // TODO(https://crbug.com/1245093): Upgrade to stable channel.
    "channel": "dev"
  }, {
    "channel": "stable",
    "location": "policy"
  }],
  "action.isEnabled": {
    "channel": "stable"
  },
  "action.getBadgeTextColor": {
    "channel": "stable"
  },
  "action.setBadgeTextColor": {
    "channel": "stable"
  },
  "activityLogPrivate": [{
    "dependencies": ["permission:activityLogPrivate"],
    "contexts": ["blessed_extension"]
  }, {
    "channel": "stable",
    "contexts": ["webui"],
    "matches": [
      "chrome://extensions/*"
    ]
  }],
  "app": {
    "blocklist": [
      "2FC374607C2DF285634B67C64A2E356C607091C3",  // Quickoffice
      "3727DD3E564B6055387425027AD74C58784ACC15",  // Quickoffice internal
      "12E618C3C6E97495AAECF2AC12DEB082353241C6",  // QO component extension
      "06BE211D5F014BAB34BC22D9DDA09C63A81D828E",  // Official xkb extension
      "F94EE6AB36D6C6588670B2B01EB65212D9C64E33",  // Open source xkb extension
      "B9EF10DDFEA11EF77873CC5009809E5037FC4C7A"   // Google input tools
    ],
    "channel": "stable",
    "extension_types": ["hosted_app", "extension", "legacy_packaged_app"],
    "contexts": [
      "blessed_extension",
      "unblessed_extension",
      "content_script",
      "web_page",
      "blessed_web_page"
    ],
    "disallow_for_service_workers": true,
    "max_manifest_version": 2,
    // Any webpage can use the app API.
    "matches": ["<all_urls>"]
  },
  "appviewTag": {
    "internal": true,
    "dependencies": ["permission:appview"],
    "contexts": ["blessed_extension"]
  },
  "autofillPrivate": [{
    "dependencies": ["permission:autofillPrivate"],
    "contexts": ["blessed_extension"]
  }, {
    "channel": "stable",
    "contexts": ["webui"],
    "matches": [
      "chrome://settings/*"
    ]
  }],
  "autotestPrivate": {
    "dependencies": ["permission:autotestPrivate"],
    "contexts": ["blessed_extension"]
  },
  "bookmarkManagerPrivate": {
    "channel": "stable",
    "contexts": ["webui"],
    "matches": [
      "chrome://bookmarks/*",
      "chrome://bookmarks-side-panel.top-chrome/*",
      "chrome://read-later.top-chrome/*"
    ]
  },
  "bookmarks": [{
    "dependencies": ["permission:bookmarks"],
    "contexts": ["blessed_extension"],
    "default_parent": true
  }, {
    "channel": "stable",
    "contexts": ["webui"],
    "matches": [
      "chrome://bookmarks/*",
      "chrome://bookmarks-side-panel.top-chrome/*",
      "chrome://read-later.top-chrome/*",
      "chrome://welcome/*"
    ]
  }],
  "bookmarks.export": {
    "channel": "stable",
    "contexts": ["webui"],
    "dependencies": [],
    "matches": [
      "chrome://bookmarks/*"
    ]
  },
  "bookmarks.import": {
    "channel": "stable",
    "contexts": ["webui"],
    "dependencies": [],
    "matches": [
      "chrome://bookmarks/*"
    ]
  },
  "brailleDisplayPrivate": {
    "dependencies": ["permission:brailleDisplayPrivate"],
    "contexts": ["blessed_extension"]
  },
  "browserAction": {
    "dependencies": ["manifest:browser_action"],
    "contexts": ["blessed_extension"]
  },
  // This API is allowlisted on stable and should not be enabled for a wider
  // audience without resolving security issues raised in API proposal and
  // review (https://codereview.chromium.org/25305002).
  "browserAction.openPopup": [{
    "channel": "dev",
    "dependencies": ["manifest:browser_action"],
    "contexts": ["blessed_extension"]
  }, {
    "channel": "stable",
    "dependencies": ["manifest:browser_action"],
    "allowlist": [
      // The extensions below here only use openPopup on a user action,
      // so are safe, and can be removed when the allowlist on that
      // capability is lifted. See crbug.com/436489 for context.
      "A4577D8C2AF4CF26F40CBCA83FFA4251D6F6C8F8",  // http://crbug.com/497301
      "A8208CCC87F8261AFAEB6B85D5E8D47372DDEA6B",  // http://crbug.com/497301
      "EFCF5358672FEE04789FD2EC3638A67ADEDB6C8C"   // http://crbug.com/514696
    ],
    "contexts": ["blessed_extension"]
  }],
  "browsingData": {
    "dependencies": ["permission:browsingData"],
    "contexts": ["blessed_extension"]
  },
  "certificateProvider": {
    "dependencies": ["permission:certificateProvider"],
    "contexts": ["blessed_extension"]
  },
  "certificateProvider.onCertificatesRequested": {
    "max_manifest_version": 2
  },
  "certificateProvider.onSignDigestRequested": {
    "max_manifest_version": 2
  },
  "certificateProviderInternal": {
    "internal": true,
    "dependencies": ["permission:certificateProvider"],
    "contexts": ["blessed_extension"]
  },
  "chromeosInfoPrivate": [{
    "dependencies": ["permission:chromeosInfoPrivate"],
    "contexts": ["blessed_extension"]
  }, {
    "channel": "stable",
    "contexts": ["webui"],
    "matches": [
      "chrome://version/*"
    ],
    "platforms": ["chromeos", "lacros"]
  }],
  "chromeWebViewInternal": [{
    "internal": true,
    "dependencies": ["permission:webview"],
    "contexts": ["blessed_extension"]
  }, {
    "internal": true,
    "channel": "stable",
    "contexts": ["webui"],
    "matches": [
      "chrome://assistant-optin/*",
      "chrome://add-supervision/*",
      "chrome://chrome-signin/*",
      "chrome://discards/*",
      "chrome://mobilesetup/*",
      "chrome://oobe/*",
      "chrome://os-settings/*",
      "chrome://parent-access/*",
      "chrome://password-change/*",
      "chrome://lock-reauth/*"
    ]
  }, {
    // This feature is used by the Controlled Frame API and is specifically
    // enabled by //chrome.
    "internal": true,
    "channel": "dev",
    "contexts": ["web_page"],
    // This feature is only enabled if the embedder's delegated check returns
    // true.
    "requires_delegated_availability_check": true
  }],
  "commandLinePrivate": {
    "dependencies": ["permission:commandLinePrivate"],
    "contexts": ["blessed_extension"]
  },
  "commands": {
    "dependencies": ["manifest:commands"],
    "contexts": ["blessed_extension"]
  },
  "contentSettings": {
    "dependencies": ["permission:contentSettings"],
    "contexts": ["blessed_extension"]
  },
  "contextMenus": {
    "dependencies": ["permission:contextMenus"],
    "contexts": ["blessed_extension"]
  },
  "cookies": {
    "dependencies": ["permission:cookies"],
    "contexts": ["blessed_extension"]
  },
  "crashReportPrivate": [{
    "dependencies": ["permission:crashReportPrivate"],
    "contexts": ["blessed_extension"],
    "default_parent": true
  },
  {
    "channel": "stable",
    "contexts": [
      "webui"
    ],
    "matches": [
      "chrome://camera-app/*",
      "chrome://media-app/*"
    ]
  },
  {
    "channel": "stable",
    "contexts": ["webui_untrusted"],
    "matches": [
      "chrome-untrusted://camera-app/*",
      "chrome-untrusted://help-app/*",
      "chrome-untrusted://media-app/*",
      "chrome-untrusted://projector/*",
      "chrome-untrusted://projector-annotator/*"
    ]
  }],
  "dashboardPrivate": {
    "channel": "stable",
    "contexts": ["blessed_extension"],
    "allowlist": [
      "B44D08FD98F1523ED5837D78D0A606EA9D6206E5"  // Web Store
    ]
  },
  "debugger": {
    "dependencies": ["permission:debugger"],
    "contexts": ["blessed_extension"],
    "developer_mode_only": true
  },
  "declarativeContent": {
    "dependencies": ["permission:declarativeContent"],
    "contexts": ["blessed_extension"]
  },
  "desktopCapture": {
    "dependencies": ["permission:desktopCapture"],
    "contexts": ["blessed_extension"]
  },
  "developerPrivate": [{
    "dependencies": ["permission:developerPrivate", "permission:management"],
    "contexts": ["blessed_extension"]
  }, {
    "channel": "stable",
    "contexts": ["webui"],
    "matches": ["chrome://extensions/*"]
  }],
  // All devtools APIs are implemented by hand, so don't compile them.
  "devtools.inspectedWindow": {
    "nocompile": true,
    "dependencies": ["manifest:devtools_page"],
    "contexts": ["blessed_extension"]
  },
  "devtools.network": {
    "nocompile": true,
    "dependencies": ["manifest:devtools_page"],
    "contexts": ["blessed_extension"]
  },
  "devtools.panels": {
    "nocompile": true,
    "dependencies": ["manifest:devtools_page"],
    "contexts": ["blessed_extension"]
  },
  "documentScan": {
    "dependencies": ["permission:documentScan"],
    "contexts": ["blessed_extension"]
  },
  "dom": {
    "channel": "stable",
    "contexts": ["blessed_extension", "content_script"]
  },
  "downloads": [
    {
      "dependencies": ["permission:downloads"],
      "contexts": ["blessed_extension"]
    },
    {
      "channel": "stable",
      "contexts": ["webui"],
      "matches": ["chrome://download-shelf.top-chrome/*"]
    }
  ],
  "downloadsInternal": [
    {
      "internal": true,
      "channel": "stable",
      "contexts": ["blessed_extension"],
      "dependencies": ["permission:downloads"]
    },
    {
      "internal": true,
      "channel": "stable",
      "contexts": ["webui"],
      "matches": ["chrome://download-shelf.top-chrome/*"]
    }
  ],
  "echoPrivate": {
    "dependencies": ["permission:echoPrivate"],
    "contexts": ["blessed_extension"]
  },
  "enterprise.hardwarePlatform": {
    "dependencies": ["permission:enterprise.hardwarePlatform"],
    "contexts": ["blessed_extension"]
  },
  "enterprise.deviceAttributes": {
    "dependencies": ["permission:enterprise.deviceAttributes"],
    "contexts": ["blessed_extension"]
  },
  "enterprise.networkingAttributes": {
    "dependencies": ["permission:enterprise.networkingAttributes"],
    "contexts": ["blessed_extension"]
  },
  "enterprise.platformKeys": {
    "dependencies": ["permission:enterprise.platformKeys"],
    "contexts": ["blessed_extension"]
  },
  "enterprise.platformKeysInternal": {
    "dependencies": ["permission:enterprise.platformKeys"],
    "internal": true,
    "contexts": ["blessed_extension"]
  },
  "enterprise.platformKeysPrivate": {
    "dependencies": ["permission:enterprise.platformKeysPrivate"],
    "contexts": ["blessed_extension"]
  },
  "enterprise.reportingPrivate": {
    "dependencies": ["permission:enterprise.reportingPrivate"],
    "contexts": ["blessed_extension"]
  },
  "enterprise.reportingPrivate.getFileSystemInfo": {
    "platforms": ["win", "mac", "linux"]
  },
  "enterprise.reportingPrivate.getSettings": {
    "platforms": ["win", "mac"]
  },
  "enterprise.reportingPrivate.getAvInfo": {
    "platforms": ["win"]
  },
  "enterprise.reportingPrivate.getHotfixes": {
    "platforms": ["win"]
  },
  "experimental.devtools.audits": {
    "nocompile": true,
    "dependencies": ["permission:experimental", "manifest:devtools_page"],
    "contexts": ["blessed_extension"]
  },
  "experimental.devtools.console": {
    "nocompile": true,
    "dependencies": ["permission:experimental", "manifest:devtools_page"],
    "contexts": ["blessed_extension"]
  },
  "extension": {
    "channel": "stable",
    "extension_types": ["extension", "legacy_packaged_app"],
    "contexts": ["blessed_extension"]
  },
  "extension.getBackgroundPage": {
    "contexts": ["blessed_extension"],
    "disallow_for_service_workers": true
  },
  "extension.getExtensionTabs": {
    "contexts": ["blessed_extension"],
    "disallow_for_service_workers": true,
    "max_manifest_version": 2
  },
  "extension.getURL": {
    "contexts": ["blessed_extension", "unblessed_extension", "content_script"],
    "max_manifest_version": 2
  },
  "extension.getViews": {
    "channel": "stable",
    "contexts": ["blessed_extension"],
    "extension_types": ["extension", "legacy_packaged_app"],
    "disallow_for_service_workers": true
  },
  "extension.inIncognitoContext": {
    "contexts": ["blessed_extension", "unblessed_extension", "content_script"]
  },
  "extension.lastError": {
    "contexts": ["blessed_extension", "unblessed_extension", "content_script"],
    "max_manifest_version": 2
  },
  "extension.onRequest": {
    "contexts": ["blessed_extension", "unblessed_extension", "content_script"],
    "max_manifest_version": 2
  },
  "extension.onRequestExternal": {
    "max_manifest_version": 2
  },
  "extension.sendRequest": {
    "contexts": ["blessed_extension", "unblessed_extension", "content_script"],
    "max_manifest_version": 2
  },
  "extensionOptionsInternal": {
    "internal": true,
    "channel": "stable",
    "contexts": ["webui"],
    "matches": ["chrome://extensions/*"]
  },
  // This is not a real API, only here for documentation purposes.
  // See http://crbug.com/275944 for background.
  "extensionsManifestTypes": {
    "internal": true,
    "channel": "stable",
    "contexts": []
  },
  "fileBrowserHandler": {
    "dependencies": ["permission:fileBrowserHandler"],
    "contexts": ["blessed_extension"],
    "disallow_for_service_workers": true
  },
  "fileBrowserHandlerInternal": {
    "internal": true,
    "dependencies": ["permission:fileBrowserHandler"],
    "contexts": ["blessed_extension"],
    "disallow_for_service_workers": true
  },
  "fileManagerPrivate": [{
    "dependencies": ["permission:fileManagerPrivate"],
    "contexts": ["blessed_extension"]
  }, {
    "channel": "stable",
    "contexts": ["webui"],
    "matches": [
      "chrome://file-manager/*",
      "chrome://webui-test/*"
    ]
  }],
  "fileManagerPrivateInternal": [{
    "internal": true,
    "dependencies": ["permission:fileManagerPrivate"],
    "contexts": ["blessed_extension"]
  }, {
    "internal": true,
    "channel": "stable",
    "contexts": ["webui"],
    "matches": [
      "chrome://file-manager/*",
      "chrome://webui-test/*"
    ]
  }],
  "fileSystemProvider": [{
    "dependencies": ["permission:fileSystemProvider"],
    "contexts": ["blessed_extension"]
  }, {
    "channel": "stable",
    "contexts": ["webui_untrusted"],
    "matches": [
      "chrome-untrusted://terminal/*"
    ],
    "platforms": ["chromeos"]
  }],
  "fileSystemProviderInternal": [{
    "internal": true,
    "dependencies": ["permission:fileSystemProvider"],
    "contexts": ["blessed_extension"]
  }, {
    "internal": true,
    "channel": "stable",
    "contexts": ["webui_untrusted"],
    "matches": [
      "chrome-untrusted://terminal/*"
    ],
    "platforms": ["chromeos"]
  }],
  "fontSettings": {
    "dependencies": ["permission:fontSettings"],
    "contexts": ["blessed_extension"]
  },
  "gcm": {
    "dependencies": ["permission:gcm"],
    "contexts": ["blessed_extension"]
  },
  "sharedStoragePrivate": {
    "dependencies": ["permission:sharedStoragePrivate"],
    "contexts": ["blessed_extension"]
  },
  "history": {
    "dependencies": ["permission:history"],
    "contexts": ["blessed_extension"]
  },
  "identity": {
    "dependencies": ["permission:identity"],
    "contexts": ["blessed_extension"]
  },
  "identity.getAccounts": {
    "channel": "dev",
    "dependencies": ["permission:identity"],
    "contexts": ["blessed_extension"]
  },
  "idltest": {
    "dependencies": ["permission:idltest"],
    "contexts": ["blessed_extension"]
  },
  "imageLoaderPrivate": {
    "dependencies": ["permission:imageLoaderPrivate"],
    "contexts": ["blessed_extension"]
  },
  "input.ime": {
    "dependencies": ["permission:input"],
    "contexts": ["blessed_extension"]
  },
  "inputMethodPrivate": [{
    "dependencies": ["permission:inputMethodPrivate"],
    "contexts": ["blessed_extension"]
  }, {
    "channel": "stable",
    "contexts": ["webui"],
    "matches": [
      // TODO(maybelle): Audit and remove chrome://settings or
      // chrome://os-settings as appropriate
      "chrome://os-settings/*",
      "chrome://settings/*"
    ]
  }],
  "instanceID": {
    "dependencies": ["permission:gcm"],
    "contexts": ["blessed_extension"]
  },
  "languageSettingsPrivate": [{
    "dependencies": ["permission:languageSettingsPrivate"],
    "contexts": ["blessed_extension"]
  }, {
    "channel": "stable",
    "contexts": ["webui"],
    "matches": [
      // TODO(maybelle): Audit and remove chrome://settings or
      // chrome://os-settings as appropriate
      "chrome://os-settings/*",
      "chrome://settings/*"
    ]
  }],
  "login": {
    "dependencies": ["permission:login"],
    "contexts": ["blessed_extension"]
  },
  "loginScreenStorage": {
    "dependencies": ["permission:loginScreenStorage"],
    "contexts": ["blessed_extension"]
  },
  "loginScreenUi": {
    "dependencies": ["permission:loginScreenUi"],
    "contexts": ["blessed_extension"]
  },
  "loginState": {
    "dependencies": ["permission:loginState"],
    "contexts": ["blessed_extension"]
  },
  "webcamPrivate": {
    "dependencies": ["permission:webcamPrivate"],
    "contexts": ["blessed_extension"]
  },
  // This is not a real API, only here for documentation purposes.
  // See http://crbug.com/275944 for background.
  "manifestTypes": {
    "internal": true,
    "channel": "stable",
    "contexts": []
  },
  "mediaPlayerPrivate": {
    "dependencies": ["permission:mediaPlayerPrivate"],
    "contexts": ["blessed_extension"]
  },
  "mdns": {
    "dependencies": ["permission:mdns"],
    "contexts": ["blessed_extension"]
  },
  "mimeHandlerViewGuestInternal": {
    "internal": true,
    "contexts": "all",
    "channel": "stable",
    "matches": ["<all_urls>"]
  },
  "notifications": {
    "dependencies": ["permission:notifications"],
    "contexts": ["blessed_extension"]
  },
  "omnibox": {
    "dependencies": ["manifest:omnibox"],
    "contexts": ["blessed_extension"]
  },
  "pageAction": {
    "dependencies": ["manifest:page_action"],
    "contexts": ["blessed_extension"]
  },
  "pageCapture": {
    "dependencies": ["permission:pageCapture"],
    "contexts": ["blessed_extension"]
  },
  "passwordsPrivate": [{
    "dependencies": ["permission:passwordsPrivate"],
    "contexts": ["blessed_extension"]
  }, {
    "channel": "stable",
    "contexts": ["webui"],
    "matches": [
      "chrome://settings/*",
      "chrome://password-manager/*"
    ]
  }],
  "permissions": {
    "channel": "stable",
    "extension_types": [
      "extension",
      "legacy_packaged_app",
      "platform_app",
      "chromeos_system_extension"
    ],
    "contexts": ["blessed_extension"]
  },
  "platformKeys": {
    "dependencies": ["permission:platformKeys"],
    "contexts": ["blessed_extension"]
  },
  "platformKeysInternal": [{
    "dependencies": ["permission:platformKeys"],
    "internal": true,
    "contexts": ["blessed_extension"]
  },{
    "dependencies": ["permission:enterprise.platformKeys"],
    "internal": true,
    "contexts": ["blessed_extension"]
  }],
  "pdfViewerPrivate": {
    "dependencies": ["permission:pdfViewerPrivate"],
    "contexts": ["blessed_extension"]
  },
  "printing": {
    "dependencies": ["permission:printing"],
    "contexts": ["blessed_extension"]
  },
  "printingMetrics": {
    "dependencies": ["permission:printingMetrics"],
    "contexts": ["blessed_extension"]
  },
  "privacy": {
    "dependencies": ["permission:privacy"],
    "contexts": ["blessed_extension"]
  },
  "processes": {
    "dependencies": ["permission:processes"],
    "contexts": ["blessed_extension"]
  },
  "proxy": {
    "dependencies": ["permission:proxy"],
    "contexts": ["blessed_extension"]
  },
  "imageWriterPrivate": {
    "dependencies": ["permission:imageWriterPrivate"],
    "contexts": ["blessed_extension"]
  },
  "quickUnlockPrivate": {
    "channel": "stable",
    "contexts": ["webui"],
    "matches": [
      "chrome://multidevice-setup/*",
      "chrome://os-settings/*",
      "chrome://settings/*",
      "chrome://oobe/*"
    ],
    "platforms": ["chromeos", "lacros"]
  },
  "readingList": {
    "dependencies": ["permission:readingList"],
    "contexts": ["blessed_extension"],
    "feature_flag": "ApiReadingList"
  },
  "resourcesPrivate": [{
    "dependencies": ["permission:resourcesPrivate"],
    "contexts": ["blessed_extension"]
  }, {
    "channel": "stable",
    "contexts": ["webui"],
    "matches": [
      "chrome://print/*"
    ]
  }],
  "rtcPrivate": {
    "dependencies": ["permission:rtcPrivate"],
    "contexts": ["blessed_extension"]
  },
  "safeBrowsingPrivate": {
    "dependencies": ["permission:safeBrowsingPrivate"],
    "contexts": ["blessed_extension"]
  },
  "scripting": {
    "dependencies": ["permission:scripting"],
    "contexts": ["blessed_extension"]
  },
  "scripting.globalParams": {
    "channel": "trunk",
    "dependencies": ["permission:scripting"],
    "contexts": ["content_script"]
  },
  "search": {
    "dependencies": ["permission:search"],
    "contexts": ["blessed_extension"]
  },
  "sessions": {
    "dependencies": ["permission:sessions"],
    "contexts": ["blessed_extension"]
  },
  "settingsPrivate": [{
    "dependencies": ["permission:settingsPrivate"],
    "contexts": ["blessed_extension"]
  }, {
    "channel": "stable",
    "contexts": ["webui"],
    "matches": [
      "chrome://os-settings/*",
      "chrome://settings/*",
      "chrome://password-manager/*"
    ]
  }],
  "sidePanel": {
    "dependencies": ["permission:sidePanel"],
    "contexts": ["blessed_extension"]
  },
  "sidePanel.open": [{
    "feature_flag": "ApiSidePanelOpen"
  }, {
    "allowlist": [
      // Note: this list is also enforced in the sidePanel.open() implementation
      // as a sanity check.
      "3CEFE7915CDBD48D769E214807ACAA51581724A0"  // https://crbug.com/1446731
    ]
  }],
  "smartCardProviderPrivate": {
    "dependencies": ["permission:smartCardProviderPrivate"],
    "contexts": ["blessed_extension"]
  },
  "speechRecognitionPrivate": {
    "dependencies": ["permission:speechRecognitionPrivate"],
    "contexts": ["blessed_extension"]
  },
  "systemIndicator": {
    "dependencies": ["manifest:system_indicator"],
    "contexts": ["blessed_extension"]
  },
  "systemLog": {
    "dependencies": ["permission:systemLog"],
    "contexts": ["blessed_extension"]
  },
  "systemPrivate": {
    "dependencies": ["permission:systemPrivate"],
    "contexts": ["blessed_extension"]
  },
  "tabCapture": {
    "dependencies": ["permission:tabCapture"],
    "contexts": ["blessed_extension"]
  },
  "tabCapture.capture": {
    "disallow_for_service_workers": true
  },
  "tabGroups": {
    "dependencies": ["permission:tabGroups"],
    "contexts": ["blessed_extension"]
  },
  "tabs": [{
    "channel": "stable",
    "extension_types": ["extension", "legacy_packaged_app"],
    "contexts": ["blessed_extension"],
    "default_parent": true
  }, {
    "channel": "stable",
    "contexts": ["webui"],
    "matches": [
      "chrome://bookmarks/*",
      "chrome://bookmarks-side-panel.top-chrome/*",
      "chrome://read-later.top-chrome/*",
      "chrome://tab-strip.top-chrome/*"
    ]
  }, {
    "channel": "stable",
    "contexts": ["webui_untrusted"],
    "matches": [
      "chrome-untrusted://crosh/*",
      "chrome-untrusted://terminal/*"
    ],
    "platforms": ["chromeos"]
  }],
  "tabs.executeScript": {
    "max_manifest_version": 2
  },
  "tabs.getAllInWindow": {
    "max_manifest_version": 2
  },
  "tabs.getSelected": {
    "max_manifest_version": 2
  },
  "tabs.insertCSS": {
    "max_manifest_version": 2
  },
  "tabs.removeCSS": {
    "max_manifest_version": 2
  },
  "tabs.onActiveChanged": {
    "max_manifest_version": 2
  },
  "tabs.onHighlightChanged": {
    "max_manifest_version": 2
  },
  "tabs.onSelectionChanged": {
    "max_manifest_version": 2
  },
  "tabs.sendRequest": {
    "max_manifest_version": 2
  },
  // chrome.terminalPrivate allowed for nassh extensions,
  // chrome-untrusted://crosh, and chrome-untrusted://terminal.
  "terminalPrivate": [{
    "dependencies": ["permission:terminalPrivate"],
    "contexts": ["blessed_extension"],
    "default_parent": true,
    "platforms": ["chromeos"]
  }, {
    "channel": "stable",
    "contexts": ["webui_untrusted"],
    "matches": [
      "chrome-untrusted://crosh/*",
      "chrome-untrusted://terminal/*"
    ],
    "platforms": ["chromeos"]
  }],
  // terminalPrivate.openTerminalProcess allowed for nassh extensions,
  // and chrome-untrusted://crosh, but NOT for chrome-untrusted://terminal.
  "terminalPrivate.openTerminalProcess": [{
    "contexts": ["blessed_extension"]
  }, {
    "dependencies": [],
    "channel": "stable",
    "contexts": ["webui_untrusted"],
    "matches": [
      "chrome-untrusted://crosh/*"
    ]
  }],
  "topSites": {
    "dependencies": ["permission:topSites"],
    "contexts": ["blessed_extension"]
  },
  "tts": [{
    "dependencies": ["permission:tts"],
    "contexts": ["blessed_extension"]
  }, {
    "channel": "stable",
    "contexts": ["webui"],
    "matches": [
      "chrome://oobe/*"
    ]
  }],
  "ttsEngine": {
    "dependencies": ["permission:ttsEngine"],
    "contexts": ["blessed_extension"]
  },
  "usersPrivate": [{
    "dependencies": ["permission:usersPrivate"],
    "contexts": ["blessed_extension"],
    "platforms": ["chromeos"]
  }, {
    "channel": "stable",
    "contexts": ["webui"],
    "matches": [
      "chrome://os-settings/*"
    ]
  }],
  "virtualKeyboardPrivate": {
    "dependencies": ["permission:virtualKeyboardPrivate"],
    "contexts": ["blessed_extension"]
  },
  "wallpaper": [{
    "dependencies": ["permission:wallpaper"],
    "contexts": ["blessed_extension"]
  }, {
    "channel": "stable",
    "contexts": ["webui"],
    "matches": [
      "chrome://file-manager/*"
    ]
  }],
  "webAuthenticationProxy": {
    "dependencies": ["permission:webAuthenticationProxy"],
    "contexts": ["blessed_extension"]
  },
  "webNavigation": {
    "dependencies": ["permission:webNavigation"],
    "contexts": ["blessed_extension"]
  },
  "webrtcAudioPrivate": {
    "dependencies": ["permission:webrtcAudioPrivate"],
    "contexts": ["blessed_extension"]
  },
  "webrtcDesktopCapturePrivate": {
    "dependencies": ["permission:webrtcDesktopCapturePrivate"],
    "contexts": ["blessed_extension"]
  },
  "webrtcLoggingPrivate": {
    "dependencies": ["permission:webrtcLoggingPrivate"],
    "contexts": ["blessed_extension"]
  },
  "webrtcLoggingPrivate.getLogsDirectory": {
    "component_extensions_auto_granted": false,
    "allowlist": [
      // Extension used for API test.
      "ADFA45434ABA2F1A4647E673F53FF37F8F6047A3",
      "4F25792AF1AA7483936DE29C07806F203C7170A0",  // http://crbug.com/775961
      "BD8781D757D830FC2E85470A1B6E8A718B7EE0D9",  // http://crbug.com/775961
      "4AC2B6C63C6480D150DFDA13E4A5956EB1D0DDBB",  // http://crbug.com/775961
      "81986D4F846CEDDDB962643FA501D1780DD441BB"   // http://crbug.com/775961
    ]
  },
  "webstorePrivate": [{
    "dependencies": ["permission:webstorePrivate"],
    // NOTE: even though this is only used by the webstore hosted app, which
    // normally would mean blessed_web_page, component hosted apps are actually
    // given the blessed_extension denomination. Confusing.
    "contexts": ["blessed_extension"]
  }, {
    "channel": "stable",
    "contexts": ["web_page"],
    "matches": ["https://chromewebstore.google.com/*"],
    "feature_flag": "NewWebstoreDomain"
  }],
  "webviewTag": {
    "internal": true,
    "channel": "stable",
    "dependencies": ["permission:webview"],
    "contexts": ["blessed_extension"]
  },
  "windows": [{
    "dependencies": ["api:tabs"],
    "contexts": ["blessed_extension"]
  }, {
    "channel": "stable",
    "contexts": ["webui"],
    "matches": [
      "chrome://bookmarks/*",
      "chrome://tab-strip.top-chrome/*"
    ]
  }, {
    "channel": "stable",
    "contexts": ["webui_untrusted"],
    "matches": [
      "chrome-untrusted://crosh/*",
      "chrome-untrusted://terminal/*"
    ],
    "platforms": ["chromeos"]
  }],
  "wmDesksPrivate": {
    "dependencies": ["permission:wmDesksPrivate"],
    "contexts": ["blessed_extension"]
  }
}
