// 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", "privileged_web_page", or "all" as a context
// type will require manually updating javascript bindings code in the
// renderer.

{
  "accessibilityFeatures": [{
    "dependencies": ["permission:accessibilityFeatures.modify"],
    "contexts": ["privileged_extension"]
  }, {
    "dependencies": ["permission:accessibilityFeatures.read"],
    "contexts": ["privileged_extension"]
  }],
  "accessibilityPrivate": {
    "dependencies": ["permission:accessibilityPrivate"],
    "contexts": ["privileged_extension"]
  },
  "accessibilityServicePrivate": {
    "dependencies": ["permission:accessibilityServicePrivate"],
    "contexts": ["privileged_extension"],
    "platforms": ["chromeos"]
  },
  // NOTE: C++ source is under api/extension_action not api/action.
  "action": {
    "dependencies": ["manifest:action"],
    "contexts": ["privileged_extension"]
  },
  "action.openPopup": [{
    "channel": "stable",
    // TODO(https://crbug.com/40057101): Remove this guard after the feature
    // has been in stable for a milestone or two.
    "feature_flag": "ApiActionOpenPopup"
  }, {
    "channel": "stable",
    "location": "policy"
  }],
  "action.isEnabled": {
    "channel": "stable"
  },
  "action.getBadgeTextColor": {
    "channel": "stable"
  },
  "action.setBadgeTextColor": {
    "channel": "stable"
  },
  "activityLogPrivate": [{
    "dependencies": ["permission:activityLogPrivate"],
    "contexts": ["privileged_extension"]
  }, {
    "channel": "stable",
    "contexts": ["webui"],
    "matches": [
      "chrome://extensions/*",
      // ARKWEB_ARKWEB_EXTENSIONS
      "arkweb://extensions/*"      
    ]
  }],
  "experimentalActor": {
    "contexts": ["privileged_extension"],
    "dependencies": ["permission:experimentalActor"]
  },
  "experimentalAiData": {
    "contexts": ["privileged_extension"],
    "dependencies": ["permission:experimentalAiData"]
  },
  "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": [
      "privileged_extension",
      "unprivileged_extension",
      "content_script",
      "web_page",
      "privileged_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": ["privileged_extension"]
  },
  "autofillPrivate": [{
    "dependencies": ["permission:autofillPrivate"],
    "contexts": ["privileged_extension"]
  }, {
    "channel": "stable",
    "contexts": ["webui"],
    "matches": [
      "chrome://settings/*"
    ],
    // "desktop_android" is not supported.
    "platforms": ["chromeos", "linux", "mac", "win"]
  }],
  "autotestPrivate": {
    "dependencies": ["permission:autotestPrivate"],
    "contexts": ["privileged_extension"]
  },
  "bookmarkManagerPrivate": {
    "channel": "stable",
    "contexts": ["webui"],
    "matches": [
      "chrome://bookmarks/*",
      "chrome://bookmarks-side-panel.top-chrome/*",
      "chrome://read-later.top-chrome/*"
    ],
    // "desktop_android" is not supported.
    "platforms": ["chromeos", "linux", "mac", "win"]
  },
  "bookmarks": [{
    "dependencies": ["permission:bookmarks"],
    "contexts": ["privileged_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": ["privileged_extension"]
  },
  "browserAction": {
    "dependencies": ["manifest:browser_action"],
    "contexts": ["privileged_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": ["privileged_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": ["privileged_extension"]
  }],
  "browsingData": {
    "dependencies": ["permission:browsingData"],
    "contexts": ["privileged_extension"]
  },
  "certificateProvider": {
    "dependencies": ["permission:certificateProvider"],
    "contexts": ["privileged_extension"]
  },
  "certificateProvider.onCertificatesRequested": {
    "max_manifest_version": 2
  },
  "certificateProvider.onSignDigestRequested": {
    "max_manifest_version": 2
  },
  "certificateProviderInternal": {
    "internal": true,
    "dependencies": ["permission:certificateProvider"],
    "contexts": ["privileged_extension"]
  },
  "chromeosInfoPrivate": [{
    "dependencies": ["permission:chromeosInfoPrivate"],
    "contexts": ["privileged_extension"]
  }, {
    "channel": "stable",
    "contexts": ["webui"],
    "matches": [
      "chrome://version/*"
    ],
    "platforms": ["chromeos"]
  }],
  // This feature controls the availability of the <webview> tag itself. This
  // is separate from the chromeWebViewInternal API, which is needed by other
  // elements that are built atop <webview> (like Controlled Frame).
  "chromeWebViewTag": [{
    "internal": true,
    "dependencies": ["permission:webview"],
    "contexts": ["privileged_extension"]
  }, {
    "internal": true,
    "channel": "stable",
    "contexts": ["webui"],
    "matches": [
      "chrome://add-supervision/*",
      "chrome://chrome-signin/*",
      "chrome://contextual-tasks/*",
      "chrome://glic/*",
      "chrome://glic-fre/*",
      "chrome://graduation/*",
      "chrome://mobilesetup/*",
      "chrome://oobe/*",
      "chrome://os-settings/*",
      "chrome://parent-access/*",
      "chrome://password-change/*",
      "chrome://lock-reauth/*"
    ]
  }, {
    "internal": true,
    "channel": "stable",
    "contexts": [
      "webui_untrusted"
    ],
    "matches": [
      "chrome-untrusted://boca-app/*",
      "chrome-untrusted://lens/*"
    ]
  }],
  "chromeWebViewInternal": [{
    "internal": true,
    "dependencies": ["api:chromeWebViewTag"],
    "contexts": ["privileged_extension"]
  }, {
    "internal": true,
    "dependencies": ["api:chromeWebViewTag"],
    "contexts": ["webui"],
    // Note: The dependency above effectively restricts where this can be used
    // to the specified set of URLs, so this could even be <all_urls>. Just to
    // be extra-cautious, we restrict to the chrome scheme.
    "matches": [ "chrome://*/*" ]
  }, {
    "internal": true,
    "channel": "stable",
    "contexts": [
      "webui_untrusted"
    ],
    "matches": [
      "chrome-untrusted://boca-app/*",
      "chrome-untrusted://lens/*"
    ]
  }, {
    // This feature is used by the Controlled Frame API and is specifically
    // enabled by //chrome.
    "internal": true,
    "channel": "stable",
    "contexts": ["web_page"],
    "matches": [
      "<all_urls>"
    ],
    // This feature is only enabled if the embedder's delegated check returns
    // true.
    "requires_delegated_availability_check": true
  }],
  "commandLinePrivate": {
    "dependencies": ["permission:commandLinePrivate"],
    "contexts": ["privileged_extension"]
  },
  "commands": {
    "dependencies": ["manifest:commands"],
    "contexts": ["privileged_extension"]
  },
  "contentSettings": [{
    "dependencies": ["permission:contentSettings"],
    "contexts": [
      "privileged_extension"
    ],
    "default_parent": true
  },{
    "channel": "stable",
    "contexts": [
      "webui_untrusted"
    ],
    "matches": [
      "chrome-untrusted://boca-app/*"
    ]
  }],
  "contentSettings.clipboard": {
    "feature_flag": "ApiContentSettingsClipboard"
  },
  "contextMenus": {
    "dependencies": ["permission:contextMenus"],
    "contexts": ["privileged_extension"]
  },
  "cookies": {
    "dependencies": ["permission:cookies"],
    "contexts": ["privileged_extension"]
  },
  "crashReportPrivate": [{
    "dependencies": ["permission:crashReportPrivate"],
    "contexts": ["privileged_extension"],
    "default_parent": true
  },
  {
    "channel": "stable",
    "contexts": [
      "webui"
    ],
    "matches": [
      "chrome://camera-app/*",
      "chrome://media-app/*",
      "chrome://recorder-app/*"
    ]
  },
  {
    "channel": "stable",
    "contexts": ["webui_untrusted"],
    "matches": [
      "chrome-untrusted://boca-app/*",
      "chrome-untrusted://camera-app/*",
      "chrome-untrusted://help-app/*",
      "chrome-untrusted://media-app/*",
      "chrome-untrusted://projector/*",
      "chrome-untrusted://projector-annotator/*"
    ]
  }],
  "debugger": {
    "dependencies": ["permission:debugger"],
    "contexts": ["privileged_extension"],
    // This restriction is not true for production. It is only true when the
    // extensions_features::kDebuggerAPIRestrictedToDevMode feature is enabled.
    "developer_mode_only" : true
  },
  "declarativeContent": {
    "dependencies": ["permission:declarativeContent"],
    "contexts": ["privileged_extension"]
  },
  "desktopCapture": {
    "dependencies": ["permission:desktopCapture"],
    "contexts": ["privileged_extension"]
  },
  "developerPrivate": [{
    "dependencies": ["permission:developerPrivate", "permission:management"],
    "contexts": ["privileged_extension"]
  }, {
    "channel": "stable",
    "contexts": ["webui"],
    "matches": [
      "chrome://extensions/*",
      // ARKWEB_ARKWEB_EXTENSIONS
      "arkweb://extensions/*"
     ]
  }],
  // All devtools APIs are implemented by hand, so don't compile them.
  "devtools.inspectedWindow": {
    "nocompile": true,
    "dependencies": ["manifest:devtools_page"],
    "contexts": ["privileged_extension"]
  },
  "devtools.network": {
    "nocompile": true,
    "dependencies": ["manifest:devtools_page"],
    "contexts": ["privileged_extension"]
  },
  "devtools.panels": {
    "nocompile": true,
    "dependencies": ["manifest:devtools_page"],
    "contexts": ["privileged_extension"]
  },
  "documentScan": {
    "dependencies": ["permission:documentScan"],
    "contexts": ["privileged_extension"]
  },
  "dom": {
    "channel": "stable",
    "contexts": ["privileged_extension", "content_script"]
  },
  "downloads": {
    "dependencies": ["permission:downloads"],
    "contexts": ["privileged_extension"]
  },
  "downloadsInternal": {
    "internal": true,
    "contexts": ["privileged_extension"],
    "dependencies": ["permission:downloads"]
  },
  "echoPrivate": {
    "dependencies": ["permission:echoPrivate"],
    "contexts": ["privileged_extension"]
  },
  "enterprise.hardwarePlatform": {
    "dependencies": ["permission:enterprise.hardwarePlatform"],
    "contexts": ["privileged_extension"]
  },
  "enterprise.deviceAttributes": {
    "dependencies": ["permission:enterprise.deviceAttributes"],
    "contexts": ["privileged_extension"]
  },
  "enterprise.kioskInput": {
    "dependencies": ["permission:enterprise.kioskInput"],
    "contexts": ["privileged_extension"]
  },
  "enterprise.login": {
    "dependencies": ["permission:enterprise.login"],
    "contexts": ["privileged_extension"]
  },
  "enterprise.networkingAttributes": {
    "dependencies": ["permission:enterprise.networkingAttributes"],
    "contexts": ["privileged_extension"]
  },
  "enterprise.platformKeys": {
    "dependencies": ["permission:enterprise.platformKeys"],
    "contexts": ["privileged_extension"]
  },
  "enterprise.platformKeysInternal": {
    "dependencies": ["permission:enterprise.platformKeys"],
    "internal": true,
    "contexts": ["privileged_extension"]
  },
  "enterprise.platformKeysPrivate": {
    "dependencies": ["permission:enterprise.platformKeysPrivate"],
    "contexts": ["privileged_extension"]
  },
  "enterprise.reportingPrivate": {
    "dependencies": ["permission:enterprise.reportingPrivate"],
    "contexts": ["privileged_extension"]
  },
  "enterprise.reportingPrivate.getFileSystemInfo": {
    "platforms": ["win", "mac", "linux"]
  },
  "enterprise.reportingPrivate.getSettings": {
    "platforms": ["win", "mac"]
  },
  "enterprise.reportingPrivate.getAvInfo": {
    "platforms": ["win"]
  },
  "enterprise.reportingPrivate.getHotfixes": {
    "platforms": ["win"]
  },
  "enterprise.reportingPrivate.onDataMaskingRulesTriggered": {
    "feature_flag": "ApiEnterpriseReportingPrivateOnDataMaskingRulesTriggered"
  },
  "experimental.devtools.audits": {
    "nocompile": true,
    "dependencies": ["permission:experimental", "manifest:devtools_page"],
    "contexts": ["privileged_extension"]
  },
  "experimental.devtools.console": {
    "nocompile": true,
    "dependencies": ["permission:experimental", "manifest:devtools_page"],
    "contexts": ["privileged_extension"]
  },
  "extension": {
    "channel": "stable",
    "extension_types": ["extension", "legacy_packaged_app"],
    "contexts": ["privileged_extension"]
  },
  "extension.getBackgroundPage": {
    "contexts": ["privileged_extension"],
    "disallow_for_service_workers": true
  },
  "extension.getExtensionTabs": {
    "contexts": ["privileged_extension"],
    "disallow_for_service_workers": true,
    "max_manifest_version": 2
  },
  "extension.getURL": {
    "contexts": [
      "privileged_extension",
      "unprivileged_extension",
      "content_script"
    ],
    "max_manifest_version": 2
  },
  "extension.getViews": {
    "channel": "stable",
    "contexts": ["privileged_extension"],
    "extension_types": ["extension", "legacy_packaged_app"],
    "disallow_for_service_workers": true
  },
  "extension.inIncognitoContext": {
    "contexts": [
      "privileged_extension",
      "unprivileged_extension",
      "content_script"
    ]
  },
  "extension.lastError": {
    "contexts": [
      "privileged_extension",
      "unprivileged_extension",
      "content_script"
    ],
    "max_manifest_version": 2
  },
  "extension.onRequest": {
    "contexts": [
      "privileged_extension",
      "unprivileged_extension",
      "content_script"
    ],
    "max_manifest_version": 2
  },
  "extension.onRequestExternal": {
    "max_manifest_version": 2
  },
  "extension.sendRequest": {
    "contexts": [
      "privileged_extension",
      "unprivileged_extension",
      "content_script"
    ],
    "max_manifest_version": 2
  },
  "extensionOptionsInternal": {
    "internal": true,
    "channel": "stable",
    "contexts": ["webui"],
    "matches": [
      "chrome://extensions/*",
      // ARKWEB_ARKWEB_EXTENSIONS
      "arkweb://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": ["privileged_extension"],
    "disallow_for_service_workers": true
  },
  "fileBrowserHandlerInternal": {
    "internal": true,
    "dependencies": ["permission:fileBrowserHandler"],
    "contexts": ["privileged_extension"],
    "disallow_for_service_workers": true
  },
  "fileManagerPrivate": [{
    "dependencies": ["permission:fileManagerPrivate"],
    "contexts": ["privileged_extension"]
  }, {
    "channel": "stable",
    "contexts": ["webui"],
    "matches": [
      "chrome://file-manager/*",
      "chrome://webui-test/*"
    ]
  }],
  "fileManagerPrivateInternal": [{
    "internal": true,
    "dependencies": ["permission:fileManagerPrivate"],
    "contexts": ["privileged_extension"]
  }, {
    "internal": true,
    "channel": "stable",
    "contexts": ["webui"],
    "matches": [
      "chrome://file-manager/*",
      "chrome://webui-test/*"
    ]
  }],
  "fileSystemProvider": [{
    "dependencies": ["permission:fileSystemProvider"],
    "contexts": ["privileged_extension"]
  }, {
    "channel": "stable",
    "contexts": ["webui_untrusted"],
    "matches": [
      "chrome-untrusted://terminal/*"
    ],
    "platforms": ["chromeos"]
  }],
  "fileSystemProviderInternal": [{
    "internal": true,
    "dependencies": ["permission:fileSystemProvider"],
    "contexts": ["privileged_extension"]
  }, {
    "internal": true,
    "channel": "stable",
    "contexts": ["webui_untrusted"],
    "matches": [
      "chrome-untrusted://terminal/*"
    ],
    "platforms": ["chromeos"]
  }],
  "fontSettings": {
    "dependencies": ["permission:fontSettings"],
    "contexts": ["privileged_extension"]
  },
  "gcm": {
    "dependencies": ["permission:gcm"],
    "contexts": ["privileged_extension"]
  },
  "history": {
    "dependencies": ["permission:history"],
    "contexts": ["privileged_extension"]
  },
  "identity": {
    "dependencies": ["permission:identity"],
    "contexts": ["privileged_extension"]
  },
  "identity.getAccounts": {
    "channel": "dev",
    "dependencies": ["permission:identity"],
    "contexts": ["privileged_extension"]
  },
  "idltest": {
    "dependencies": ["permission:idltest"],
    "contexts": ["privileged_extension"]
  },
  "imageLoaderPrivate": {
    "dependencies": ["permission:imageLoaderPrivate"],
    "contexts": ["privileged_extension"]
  },
  "input.ime": {
    "dependencies": ["permission:input"],
    "contexts": ["privileged_extension"],
    "platforms": ["chromeos"]
  },
  "inputMethodPrivate": [{
    "dependencies": ["permission:inputMethodPrivate"],
    "contexts": ["privileged_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": ["privileged_extension"]
  },
  "languageSettingsPrivate": [{
    "dependencies": ["permission:languageSettingsPrivate"],
    "contexts": ["privileged_extension"]
  }, {
    "channel": "stable",
    "contexts": ["webui"],
    "matches": [
      // TODO(maybelle): Audit and remove chrome://settings or
      // chrome://os-settings as appropriate
      "chrome://os-settings/*",
      "chrome://settings/*"
    ]
  },
  {
    "channel": "stable",
    "contexts": [
      "webui_untrusted"
    ],
    "matches": [
      "chrome-untrusted://lens-overlay/*"
    ]
  }],
  "login": [{
    "dependencies": ["behavior:imprivata_extension", "permission:login"],
    "contexts": ["privileged_extension"],
    "default_parent": true
  }, {
    "dependencies": ["permission:login"],
    "contexts": ["privileged_extension"],
    "allowlist": [
      "93B7178E8C275515C38D4F43D9DF4648F0EA9B03", // Identity Card Connector
      "7FE4A999359A456C4B0FB7B7AD85CEA29CA50519", // Login screen APIs test extension
      "3F5995FE79A861F019C6F093BEF98D73FA9D3A5F", // Login screen APIs in-session test extension
      // https://crbug.com/433867146
      "4B7E9789426EBD1BB3F99D72690DAE303FC042DF"  // AuthX Secure for ChromeOS
    ]
  }],
  "login.exitCurrentSession": [{
    "dependencies": ["behavior:imprivata_extension", "permission:login"],
    "contexts": ["privileged_extension"]
  }, {
    "dependencies": ["permission:login"],
    "allowlist": [
      "93B7178E8C275515C38D4F43D9DF4648F0EA9B03", // Identity Card Connector
      "7FE4A999359A456C4B0FB7B7AD85CEA29CA50519", // Login screen APIs test extension
      "3F5995FE79A861F019C6F093BEF98D73FA9D3A5F", // Login screen APIs in-session test extension
      // https://crbug.com/433867146
      "4B7E9789426EBD1BB3F99D72690DAE303FC042DF", // AuthX Secure for ChromeOS
      // Only has access to login.exitCurrentSession
      "8ECFC754A70BE499325FA4BB705E62EFEEC1BC80", // b/314208017
      "ECD28F2B60BDB3B4E566D6C60BD88BE0774044C1",  // b/314208017
      "C03440D5E6161ED58738ABA11586B1DB4B4DCA8A"  // b/379564028#comment27
    ]
  }, {
    "channel": "stable",
    "contexts": ["webui_untrusted"],
    "dependencies": [],
    "matches": [
      "chrome-untrusted://class-tools-remote-display/*"
    ]
  }],
  "loginScreenStorage": {
    "dependencies": ["permission:loginScreenStorage"],
    "contexts": ["privileged_extension"]
  },
  "loginScreenUi": {
    "dependencies": ["permission:loginScreenUi"],
    "contexts": ["privileged_extension"]
  },
  "loginState": {
    "dependencies": ["permission:loginState"],
    "contexts": ["privileged_extension"]
  },
  "webcamPrivate": {
    "dependencies": ["permission:webcamPrivate"],
    "contexts": ["privileged_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": ["privileged_extension"]
  },
  "mdns": {
    "dependencies": ["permission:mdns"],
    "contexts": ["privileged_extension"]
  },
  "mimeHandlerViewGuestInternal": {
    "internal": true,
    "contexts": "all",
    "channel": "stable",
    "matches": ["<all_urls>"]
  },
  "notifications": {
    "dependencies": ["permission:notifications"],
    "contexts": ["privileged_extension"]
  },
  "omnibox": {
    "dependencies": ["manifest:omnibox"],
    "contexts": ["privileged_extension"]
  },
  "pageAction": {
    "dependencies": ["manifest:page_action"],
    "contexts": ["privileged_extension"]
  },
  "pageCapture": {
    "dependencies": ["permission:pageCapture"],
    "contexts": ["privileged_extension"]
  },
  "passwordsPrivate": [{
    "dependencies": ["permission:passwordsPrivate"],
    "contexts": ["privileged_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": ["privileged_extension"]
  },
  "permissions.addHostAccessRequest": {
    "min_manifest_version": 3,
    "feature_flag": "ApiPermissionsHostAccessRequests"
  },
  "permissions.removeHostAccessRequest": {
    "min_manifest_version": 3,
    "feature_flag": "ApiPermissionsHostAccessRequests"
  },
  "platformKeys": {
    "dependencies": ["permission:platformKeys"],
    "contexts": ["privileged_extension"]
  },
  "platformKeysInternal": [{
    "dependencies": ["permission:platformKeys"],
    "internal": true,
    "contexts": ["privileged_extension"]
  },{
    "dependencies": ["permission:enterprise.platformKeys"],
    "internal": true,
    "contexts": ["privileged_extension"]
  }],
  "pdfViewerPrivate": {
    "dependencies": ["permission:pdfViewerPrivate"],
    "contexts": ["privileged_extension"]
  },
  "printing": {
    "dependencies": ["permission:printing"],
    "contexts": ["privileged_extension"],
    "required_buildflags": ["use_cups"]
  },
  "printingMetrics": {
    "dependencies": ["permission:printingMetrics"],
    "contexts": ["privileged_extension"],
    "required_buildflags": ["use_cups"]
  },
  "privacy": {
    "dependencies": ["permission:privacy"],
    "contexts": ["privileged_extension"]
  },
  "processes": {
    "dependencies": ["permission:processes"],
    "contexts": ["privileged_extension"]
  },
  "proxy": {
    "dependencies": ["permission:proxy"],
    "contexts": ["privileged_extension"]
  },
  "imageWriterPrivate": {
    "dependencies": ["permission:imageWriterPrivate"],
    "contexts": ["privileged_extension"]
  },
  "quickUnlockPrivate": {
    "channel": "stable",
    "contexts": ["webui"],
    "matches": [
      "chrome://multidevice-setup/*",
      "chrome://os-settings/*",
      "chrome://settings/*",
      "chrome://oobe/*"
    ],
    "platforms": ["chromeos"]
  },
  "readingList": {
    "dependencies": ["permission:readingList"],
    "contexts": ["privileged_extension"]
  },
  "resourcesPrivate": [{
    "dependencies": ["permission:resourcesPrivate"],
    "contexts": ["privileged_extension"]
  }, {
    "channel": "stable",
    "contexts": ["webui"],
    "matches": [
      "chrome://print/*"
    ]
  }],
  "safeBrowsingPrivate": {
    "dependencies": ["permission:safeBrowsingPrivate"],
    "contexts": ["privileged_extension"]
  },
  "scripting": {
    "dependencies": ["permission:scripting"],
    "contexts": ["privileged_extension"]
  },
  "scripting.globalParams": {
    "channel": "trunk",
    "dependencies": ["permission:scripting"],
    "contexts": ["content_script"]
  },
  "search": {
    "dependencies": ["permission:search"],
    "contexts": ["privileged_extension"]
  },
  "sessions": {
    "dependencies": ["permission:sessions"],
    "contexts": ["privileged_extension"]
  },
  "settingsPrivate": [{
    "dependencies": ["permission:settingsPrivate"],
    "contexts": ["privileged_extension"]
  }, {
    "channel": "stable",
    "contexts": ["webui"],
    "matches": [
      "chrome://os-settings/*",
      "chrome://settings/*",
      "chrome://password-manager/*"
    ]
  }],
  "sidePanel": {
    "dependencies": ["permission:sidePanel"],
    "contexts": ["privileged_extension"]
  },
  "smartCardProviderPrivate": {
    "dependencies": ["permission:smartCardProviderPrivate"],
    "contexts": ["privileged_extension"]
  },
  "speechRecognitionPrivate": {
    "dependencies": ["permission:speechRecognitionPrivate"],
    "contexts": ["privileged_extension"]
  },
  "systemLog": {
    "dependencies": ["permission:systemLog"],
    "contexts": ["privileged_extension"]
  },
  "systemPrivate": {
    "dependencies": ["permission:systemPrivate"],
    "contexts": ["privileged_extension"]
  },
  "tabCapture": {
    "dependencies": ["permission:tabCapture"],
    "contexts": ["privileged_extension"]
  },
  "tabCapture.capture": {
    "disallow_for_service_workers": true
  },
  "tabGroups": {
    "dependencies": ["permission:tabGroups"],
    "contexts": ["privileged_extension"]
  },
  "tabs": [{
    "channel": "stable",
    "extension_types": ["extension", "legacy_packaged_app"],
    "contexts": ["privileged_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/*",
      "chrome-untrusted://boca-app/*"
    ],
    "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": ["privileged_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": ["privileged_extension"]
  }, {
    "dependencies": [],
    "channel": "stable",
    "contexts": ["webui_untrusted"],
    "matches": [
      "chrome-untrusted://crosh/*"
    ]
  }],
  "topSites": {
    "dependencies": ["permission:topSites"],
    "contexts": ["privileged_extension"]
  },
  "tts": [{
    "dependencies": ["permission:tts"],
    "contexts": ["privileged_extension"]
  }, {
    "channel": "stable",
    "contexts": ["webui"],
    "matches": [
      "chrome://oobe/*"
    ]
  }],
  "ttsEngine": {
    "dependencies": ["permission:ttsEngine"],
    "contexts": ["privileged_extension"]
  },
  "usersPrivate": [{
    "dependencies": ["permission:usersPrivate"],
    "contexts": ["privileged_extension"],
    "platforms": ["chromeos"]
  }, {
    "channel": "stable",
    "contexts": ["webui"],
    "matches": [
      "chrome://os-settings/*"
    ]
  }],
  "virtualKeyboardPrivate": {
    "dependencies": ["permission:virtualKeyboardPrivate"],
    "contexts": ["privileged_extension"]
  },
  "wallpaper": [{
    "dependencies": ["permission:wallpaper"],
    "contexts": ["privileged_extension"]
  }, {
    "channel": "stable",
    "contexts": ["webui"],
    "matches": [
      "chrome://file-manager/*"
    ]
  }],
  "webAuthenticationProxy": {
    "dependencies": ["permission:webAuthenticationProxy"],
    "contexts": ["privileged_extension"]
  },
  "webNavigation": {
    "dependencies": ["permission:webNavigation"],
    "contexts": ["privileged_extension"]
  },
  "webrtcAudioPrivate": {
    "dependencies": ["permission:webrtcAudioPrivate"],
    "contexts": ["privileged_extension"]
  },
  "webrtcDesktopCapturePrivate": {
    "dependencies": ["permission:webrtcDesktopCapturePrivate"],
    "contexts": ["privileged_extension"]
  },
  "webrtcLoggingPrivate": {
    "dependencies": ["permission:webrtcLoggingPrivate"],
    "contexts": ["privileged_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 privileged_web_page, component hosted apps are
    // actually given the privileged_extension denomination. Confusing.
    "contexts": ["privileged_extension"]
  }, {
    "channel": "stable",
    "contexts": ["web_page"],
    "matches": ["https://chromewebstore.google.com/*"]
  }, {
    // Used for webstore testing. See comment in
    // chrome/common/extensions/webstore_override.cc
    "channel": "stable",
    "contexts": ["web_page"],
    "requires_delegated_availability_check": true,
    "matches": ["<all_urls>"]
  }],
  "webviewTag": {
    "internal": true,
    "dependencies": ["permission:webview"],
    "contexts": ["privileged_extension"]
  },
  "windows": [{
    "dependencies": ["api:tabs"],
    "contexts": ["privileged_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/*",
      "chrome-untrusted://boca-app/*"
    ],
    "platforms": ["chromeos"]
  }],
  "wmDesksPrivate": {
    "dependencies": ["permission:wmDesksPrivate"],
    "contexts": ["privileged_extension"]
  }
}