| // 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 extension APIs 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. |
| // |
| // Note that specifying "web_page", "privileged_web_page", or "all" as a context |
| // type will require manually updating extensions/renderer/extension_bindings_system.cc. |
| |
| { |
| "alarms": { |
| "dependencies": ["permission:alarms"], |
| "contexts": ["privileged_extension"] |
| }, |
| "app.runtime": [{ |
| "channel": "stable", |
| "contexts": ["privileged_extension", "lock_screen_extension"], |
| "extension_types": ["platform_app"], |
| "noparent": true |
| }, { |
| "channel": "stable", |
| "component_extensions_auto_granted": false, |
| "contexts": ["privileged_extension"], |
| "extension_types": ["extension"], |
| "noparent": true, |
| "allowlist": [ |
| "2FC374607C2DF285634B67C64A2E356C607091C3", // Quickoffice |
| "3727DD3E564B6055387425027AD74C58784ACC15", // Quickoffice internal |
| "12E618C3C6E97495AAECF2AC12DEB082353241C6" // QO component extension |
| ] |
| }], |
| "app.window": [{ |
| "channel": "stable", |
| "contexts": ["privileged_extension", "lock_screen_extension"], |
| "extension_types": ["platform_app"], |
| "noparent": true |
| }, { |
| "channel": "stable", |
| "contexts": ["privileged_extension"], |
| "extension_types": ["extension"], |
| "noparent": true, |
| "component_extensions_auto_granted": false, |
| "allowlist": [ |
| "B9EF10DDFEA11EF77873CC5009809E5037FC4C7A", // Google input tools |
| "06BE211D5F014BAB34BC22D9DDA09C63A81D828E", // Official xkb extension |
| "F94EE6AB36D6C6588670B2B01EB65212D9C64E33" // Open source xkb extension |
| ] |
| }], |
| "app.currentWindowInternal": { |
| "noparent": true, |
| "internal": true, |
| "channel": "stable", |
| "contexts": ["privileged_extension", "lock_screen_extension"] |
| }, |
| "app.currentWindowInternal.setShape": { |
| "dependencies": ["permission:app.window.shape"], |
| "contexts": ["privileged_extension"] |
| }, |
| // The API for the *embedder* of appview. Appview has both an embedder and |
| // guest API, which are different. |
| "appViewEmbedderInternal": { |
| "internal": true, |
| "contexts": ["privileged_extension"], |
| "dependencies": ["permission:appview"] |
| }, |
| // Note that exposing this doesn't necessarily expose AppView, |
| // appViewEmbedderInternal is required for that. |
| // See http://crbug.com/437891. |
| "appViewGuestInternal": { |
| "internal": true, |
| "channel": "stable", |
| "contexts": ["privileged_extension"] |
| }, |
| "audio": { |
| "dependencies": ["permission:audio"], |
| "contexts": ["privileged_extension"] |
| }, |
| "automationInternal": { |
| "internal": true, |
| "dependencies": ["manifest:automation"], |
| "contexts": ["privileged_extension"] |
| }, |
| "automation": { |
| "dependencies": ["manifest:automation"], |
| "contexts": ["privileged_extension"] |
| }, |
| "bluetooth": [{ |
| "dependencies": ["manifest:bluetooth"], |
| "contexts": ["privileged_extension"] |
| }, { |
| "channel": "stable", |
| "contexts": ["webui"], |
| "matches": [ |
| "chrome://bluetooth-pairing/*", |
| "chrome://os-settings/*" |
| ] |
| }], |
| "bluetoothLowEnergy": { |
| "dependencies": ["manifest:bluetooth"], |
| "contexts": ["privileged_extension"], |
| "platforms": ["chromeos", "lacros", "linux"] |
| }, |
| "bluetoothPrivate": [{ |
| "dependencies": ["permission:bluetoothPrivate"], |
| "contexts": ["privileged_extension"] |
| }, { |
| "channel": "stable", |
| "contexts": ["webui"], |
| "matches": [ |
| "chrome://bluetooth-pairing/*", |
| "chrome://os-settings/*" |
| ] |
| }], |
| "bluetoothSocket": { |
| "dependencies": ["manifest:bluetooth"], |
| "contexts": ["privileged_extension"] |
| }, |
| "cecPrivate": { |
| "dependencies": ["permission:cecPrivate"], |
| "contexts": ["privileged_extension"] |
| }, |
| "clipboard": { |
| "dependencies": ["permission:clipboard"], |
| "contexts": ["privileged_extension"] |
| }, |
| "clipboard.onClipboardDataChanged": { |
| "dependencies": ["permission:clipboardRead"] |
| }, |
| "clipboard.setImageData": { |
| "dependencies": ["permission:clipboardWrite"] |
| }, |
| "declarativeNetRequest": [{ |
| "dependencies": ["permission:declarativeNetRequest"], |
| "contexts": ["privileged_extension"], |
| "default_parent": true |
| }, { |
| "dependencies": ["permission:declarativeNetRequestWithHostAccess"], |
| "contexts": ["privileged_extension"] |
| }], |
| "declarativeNetRequest.onRuleMatchedDebug": [{ |
| "dependencies": ["permission:declarativeNetRequestFeedback", "permission:declarativeNetRequest"], |
| "location": "unpacked" |
| }, { |
| "dependencies": ["permission:declarativeNetRequestFeedback", "permission:declarativeNetRequestWithHostAccess"], |
| "location": "unpacked" |
| }], |
| "declarativeNetRequest.testMatchOutcome": { |
| "dependencies": ["permission:declarativeNetRequest"], |
| "location": "unpacked" |
| }, |
| "declarativeWebRequest": { |
| "dependencies": ["permission:declarativeWebRequest"], |
| "contexts": ["privileged_extension"] |
| }, |
| "diagnostics": { |
| "dependencies": ["permission:diagnostics"], |
| "extension_types": ["platform_app"], |
| "contexts": ["privileged_extension"] |
| }, |
| "dns": { |
| "dependencies": ["permission:dns"], |
| "contexts": ["privileged_extension"] |
| }, |
| // This is not a real API, only here for documentation purposes. |
| // See http://crbug.com/275944 for background. |
| "extensionTypes": { |
| "internal": true, |
| "channel": "stable", |
| "extension_types": ["extension", "legacy_packaged_app", "platform_app"], |
| "contexts": ["privileged_extension"] |
| }, |
| "events": { |
| "internal": true, |
| "channel": "stable", |
| "extension_types": ["platform_app", "extension"], |
| "contexts": "all", |
| "matches": ["<all_urls>"] |
| }, |
| "feedbackPrivate": [ |
| { |
| "dependencies": ["permission:feedbackPrivate"], |
| "contexts": ["privileged_extension"], |
| "default_parent": true |
| }, |
| { |
| "channel": "stable", |
| "contexts": ["webui"], |
| "matches": [ |
| "chrome://feedback/*", |
| "chrome://cast-feedback/*", |
| "chrome://os-feedback/*" |
| ] |
| } |
| ], |
| "feedbackPrivate.openFeedback": { |
| "dependencies": [], |
| "channel": "stable", |
| "contexts": ["privileged_extension"], |
| "extension_types": ["extension"], |
| "allowlist": [ |
| "2FC374607C2DF285634B67C64A2E356C607091C3", // http://crbug.com/1352358 |
| "3727DD3E564B6055387425027AD74C58784ACC15", // http://crbug.com/1352358 |
| "12E618C3C6E97495AAECF2AC12DEB082353241C6" // http://crbug.com/1352358 |
| ] |
| }, |
| "feedbackPrivate.readLogSource": [ |
| { |
| "platforms": ["chromeos", "lacros"], |
| "session_types": ["kiosk"] |
| }, |
| { |
| "channel": "stable", |
| "contexts": ["webui"], |
| "matches": [ |
| "chrome://feedback/*" |
| ] |
| } |
| ], |
| "fileSystem": { |
| "dependencies": ["permission:fileSystem"], |
| "contexts": ["privileged_extension"], |
| "disallow_for_service_workers": true |
| }, |
| "guestViewInternal": [ |
| { |
| "internal": true, |
| "channel": "stable", |
| "contexts": ["privileged_extension"] |
| }, { |
| "internal": true, |
| "channel": "stable", |
| "contexts": ["webui"], |
| "matches": [ |
| "chrome://add-supervision/*", |
| "chrome://assistant-optin/*", |
| "chrome://discards/*", |
| "chrome://extensions/*", |
| "chrome://home/*", |
| "chrome://chrome-signin/*", |
| "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": "stable", |
| "contexts": ["web_page"], |
| // This feature is only enabled if the embedder's delegated check returns |
| // true. |
| "requires_delegated_availability_check": true |
| } |
| ], |
| "hid": { |
| "dependencies": ["permission:hid"], |
| "contexts": ["privileged_extension"] |
| }, |
| "i18n": { |
| "channel": "stable", |
| "extension_types": ["extension", "legacy_packaged_app", "platform_app", |
| "login_screen_extension"], |
| "contexts": [ |
| "privileged_extension", |
| "unprivileged_extension", |
| "content_script", |
| "lock_screen_extension" |
| ] |
| }, |
| "idle": { |
| "dependencies": ["permission:idle"], |
| "contexts": ["privileged_extension"] |
| }, |
| "idle.getAutoLockDelay": { |
| "platforms": ["chromeos", "lacros"] |
| }, |
| "lockScreen.data": { |
| "dependencies": ["permission:lockScreen"], |
| "contexts": ["privileged_extension", "lock_screen_extension"] |
| }, |
| "lockScreen.data.create": { |
| "contexts": ["lock_screen_extension"] |
| }, |
| "management": [{ |
| "dependencies": ["permission:management"], |
| "contexts": ["privileged_extension"], |
| "default_parent": true |
| }, { |
| "channel": "stable", |
| "contexts": ["webui"], |
| "matches": [ |
| "chrome://extensions/*", |
| "chrome://settings/*" |
| ] |
| }, { |
| "channel": "stable", |
| "contexts": ["web_page"], |
| "matches": ["https://chromewebstore.google.com/*"], |
| "feature_flag": "NewWebstoreDomain" |
| }], |
| "management.getPermissionWarningsByManifest": { |
| "dependencies": [], |
| "channel": "stable", |
| "extension_types": ["extension", "legacy_packaged_app", "platform_app"] |
| }, |
| "management.getSelf": { |
| "dependencies": [], |
| "channel": "stable", |
| "extension_types": ["extension", "legacy_packaged_app", "platform_app"] |
| }, |
| "management.installReplacementWebApp": { |
| "dependencies": ["manifest:replacement_web_app"], |
| "channel": "stable", |
| "extension_types": ["extension", "platform_app"] |
| }, |
| "management.uninstallSelf": { |
| "dependencies": [], |
| "channel": "stable", |
| "extension_types": ["extension", "legacy_packaged_app", "platform_app"] |
| }, |
| "mediaPerceptionPrivate": { |
| "dependencies": ["permission:mediaPerceptionPrivate"], |
| "contexts": ["privileged_extension"] |
| }, |
| "metricsPrivate": [{ |
| "dependencies": ["permission:metricsPrivate"], |
| "contexts": ["privileged_extension"], |
| "alias": "metricsPrivateIndividualApis", |
| "default_parent": true |
| }, { |
| "channel": "stable", |
| "contexts": ["webui"], |
| "matches": [ |
| "chrome://apps/*", |
| "chrome://bookmarks/*", |
| "chrome://bookmarks-side-panel.top-chrome/*", |
| "chrome://customize-chrome-side-panel.top-chrome/*", |
| "chrome://shopping-insights-side-panel.top-chrome/*", |
| "chrome://download-shelf.top-chrome/*", |
| "chrome://eche-app/*", |
| "chrome://extensions/*", |
| "chrome://file-manager/*", |
| "chrome://help-app/*", |
| "chrome://history/*", |
| "chrome://new-tab-page/*", |
| "chrome://os-settings/*", |
| "chrome://password-manager/*", |
| "chrome://personalization/*", |
| "chrome://profile-picker/*", |
| "chrome://read-later.top-chrome/*", |
| "chrome://settings/*", |
| "chrome://sync-confirmation/*", |
| "chrome://tab-search.top-chrome/*", |
| "chrome://tab-strip.top-chrome/*", |
| "chrome://welcome/*", |
| "chrome://vc-background/*", |
| "chrome://app-settings/*", |
| "chrome://search-engine-choice/*" |
| ] |
| }, { |
| "channel": "stable", |
| "contexts": ["webui_untrusted"], |
| "matches": [ |
| "chrome-untrusted://compose/*", |
| "chrome-untrusted://help-app/*", |
| "chrome-untrusted://media-app/*", |
| "chrome-untrusted://mako/*", |
| "chrome-untrusted://projector/*", |
| "chrome-untrusted://read-anything-side-panel.top-chrome/*" |
| ] |
| }], |
| "metricsPrivateIndividualApis": { |
| "contexts": [], |
| "channel": "stable", |
| "source": "metricsPrivate" |
| }, |
| "metricsPrivate.getIsCrashReportingEnabled": { |
| "allowlist": [ |
| // This function inherits the extension restrictions of metricsPrivate, |
| // but also requires allowlisting. New uses of this function should get |
| // /tools/metrics/OWNERS approval of the usage before adding entries |
| // below. See crbug.com/374199. |
| "2FC374607C2DF285634B67C64A2E356C607091C3", // Quickoffice |
| "3727DD3E564B6055387425027AD74C58784ACC15", // Quickoffice internal |
| "12E618C3C6E97495AAECF2AC12DEB082353241C6", // QO component extension |
| "3727DD3E564B6055387425027AD74C58784ACC15", // Editor |
| "C41AD9DCD670210295614257EF8C9945AD68D86E", // Google Now |
| "D7986543275120831B39EF28D1327552FC343960", // http://crbug.com/378067 |
| "A291B26E088FA6BA53FFD72F0916F06EBA7C585A", // http://crbug.com/378067 |
| "07BD6A765FFC289FF755D7CAB2893A40EC337FEC", // http://crbug.com/456214 |
| "896B85CC7E913E11C34892C1425A093C0701D386", // http://crbug.com/456214 |
| "11A01C82EF355E674E4F9728A801F5C3CB40D83F", // http://crbug.com/456214 |
| "F410C88469990EE7947450311D24B8AF2ADB2595", // http://crbug.com/456214 |
| // TODO (ntang) Remove the following 2 hashes by 12/31/2017. |
| "B620CF4203315F9F2E046EDED22C7571A935958D", // http://crbug.com/510270 |
| "B206D8716769728278D2D300349C6CB7D7DE2EF9", // http://crbug.com/510270 |
| "2B6C6A4A5940017146F3E58B7F90116206E84685", // http://crbug.com/642141 |
| "B6C2EFAB3EC3BF6EF03701408B6B09A67B2D0069", // http://crbug.com/642141 |
| "96FF2FFA5C9173C76D47184B3E86D267B37781DE", // http://crbug.com/642141 |
| "0136FCB13DB29FD5CD442F56E59E53B61F1DF96F", // http://crbug.com/642141 |
| "46578A13607D38F1DC8E280C4F499FB0A2F9565C", // http://crbug.com/819404 |
| "898FB5A39687D210766B8998BA4530B99C9E6586", // http://crbug.com/819404 |
| "82F30B65397BC3E4ADE627BBD857AB8A58210648", // http://crbug.com/819404 |
| "C74B2AF138F9EDECD04D0965AB36CA66C8290466", // http://crbug.com/957772 |
| "754A9CB3C8623093180E10CF4C3AB64837179E68", // https://crbug.com/1201800 |
| "CF6B19571334F49878327D557597D23B1458AA39" // https://crbug.com/1201800 |
| ] |
| }, |
| "metricsPrivateIndividualApis.recordUserAction": { |
| "dependencies": [], |
| "channel": "stable", |
| "contexts": ["webui_untrusted"], |
| "matches": [ |
| "chrome://apps/*", |
| "chrome-untrusted://demo-mode-app/*" |
| ] |
| }, |
| "metricsPrivateIndividualApis.recordMediumTime": { |
| "dependencies": [], |
| "channel": "stable", |
| "contexts": ["webui_untrusted"], |
| "matches": [ |
| "chrome-untrusted://demo-mode-app/*" |
| ] |
| }, |
| "metricsPrivateIndividualApis.recordEnumerationValue": { |
| "dependencies": [], |
| "channel": "stable", |
| "contexts": ["webui_untrusted"], |
| "matches": [ |
| "chrome-untrusted://demo-mode-app/*" |
| ] |
| }, |
| "mimeHandlerPrivate": { |
| "dependencies": ["manifest:mime_types_handler"], |
| "contexts": ["privileged_extension"] |
| }, |
| "mojoPrivate": { |
| "contexts": ["privileged_extension"], |
| "dependencies": ["behavior:imprivata_in_session_extension"], |
| "extension_types": ["extension"], |
| "location": "policy", |
| "platforms": ["chromeos", "lacros"] |
| }, |
| "networking.onc": { |
| "dependencies": ["permission:networking.onc"], |
| "contexts": ["privileged_extension"], |
| "source": "networkingPrivate" |
| }, |
| "networkingPrivate": [{ |
| "dependencies": ["permission:networkingPrivate"], |
| "contexts": ["privileged_extension"], |
| // TODO(tbarzic): networkingPrivate is being renamed to networking.onc. |
| // The goal is to eventually remove networkingPrivate API in favour of |
| // networking.onc, but until current usages are migrated to the new |
| // name, use API aliasing to expose the API under both names. |
| // (http://crbug.com/672186). |
| "alias": "networking.onc" |
| }, { |
| "channel": "stable", |
| "contexts": ["webui"], |
| "matches": [ |
| "chrome://network/*", |
| "chrome://oobe/*", |
| "chrome://internet-config-dialog/*", |
| "chrome://internet-detail-dialog/*", |
| "chrome://os-settings/*" |
| ] |
| }], |
| "odfsConfigPrivate": { |
| "dependencies": ["permission:odfsConfigPrivate"], |
| "contexts": ["privileged_extension"], |
| "feature_flag": "ApiOdfsConfigPrivate" |
| }, |
| "offscreen": { |
| "dependencies": ["permission:offscreen"], |
| "contexts": ["privileged_extension"] |
| }, |
| "power": { |
| "dependencies": ["permission:power"], |
| "contexts": ["privileged_extension"] |
| }, |
| "power.reportActivity": { |
| "platforms": ["chromeos", "lacros"] |
| }, |
| "printerProvider": { |
| "dependencies": ["permission:printerProvider"], |
| "contexts": ["privileged_extension"] |
| }, |
| "printerProviderInternal": { |
| "internal": true, |
| "dependencies": ["permission:printerProvider"], |
| "contexts": ["privileged_extension"] |
| }, |
| "runtime": { |
| "channel": "stable", |
| "extension_types": [ |
| "extension", |
| "legacy_packaged_app", |
| "platform_app", |
| "login_screen_extension", |
| "chromeos_system_extension" |
| ], |
| "contexts": [ |
| "privileged_extension", |
| "lock_screen_extension" |
| ] |
| }, |
| "runtime.getBackgroundPage": { |
| "disallow_for_service_workers": true |
| }, |
| "runtime.getPackageDirectoryEntry": { |
| "disallow_for_service_workers": true |
| }, |
| "runtime.getManifest": { |
| "contexts": [ |
| "privileged_extension", |
| "lock_screen_extension", |
| "unprivileged_extension", |
| "content_script" |
| ] |
| }, |
| "runtime.connect": [{ |
| // Everything except WebUI. |
| "contexts": [ |
| "privileged_web_page", |
| "content_script", |
| "privileged_extension", |
| "lock_screen_extension", |
| "offscreen_extension", |
| "unprivileged_extension", |
| "user_script", |
| "web_page" |
| ], |
| "matches": ["<all_urls>"] |
| },{ |
| "channel": "stable", |
| "contexts": ["webui_untrusted"], |
| "matches": [ |
| // Allow only terminal_ssh.html in Terminal System Web App. |
| "chrome-untrusted://terminal/html/terminal_ssh.html*" |
| ] |
| }], |
| "runtime.connectNative": { |
| "dependencies": ["permission:nativeMessaging"], |
| "contexts": ["privileged_extension"] |
| }, |
| "runtime.getContexts": { |
| "min_manifest_version": 3, |
| "contexts": ["privileged_extension"] |
| }, |
| "runtime.getURL": { |
| "contexts": [ |
| "privileged_extension", |
| "lock_screen_extension", |
| "offscreen_extension", |
| "unprivileged_extension", |
| "content_script" |
| ] |
| }, |
| "runtime.id": { |
| "contexts": [ |
| "privileged_extension", |
| "lock_screen_extension", |
| "offscreen_extension", |
| "unprivileged_extension", |
| "content_script" |
| ] |
| }, |
| "runtime.lastError": { |
| "contexts": "all", |
| "extension_types": "all", |
| "matches": ["<all_urls>"] |
| }, |
| "runtime.onConnect": { |
| "contexts": [ |
| "privileged_extension", |
| "lock_screen_extension", |
| "offscreen_extension", |
| "unprivileged_extension", |
| "user_script", |
| "content_script" |
| ] |
| }, |
| "runtime.onConnectExternal": { |
| "contexts": [ |
| "privileged_extension", |
| "lock_screen_extension", |
| "offscreen_extension" |
| ] |
| }, |
| "runtime.onConnectNative": { |
| "dependencies": ["permission:nativeMessaging"], |
| "contexts": ["privileged_extension"] |
| }, |
| "runtime.onUserScriptConnect": { |
| // NOTE: We can readily open this up to offscreen extensions and |
| // lockscreen extensions, if there's desire. For now, limit it. |
| "contexts": ["privileged_extension"], |
| "min_manifest_version": 3 |
| }, |
| "runtime.onMessage": { |
| "contexts": [ |
| "privileged_extension", |
| "lock_screen_extension", |
| "offscreen_extension", |
| "unprivileged_extension", |
| "user_script", |
| "content_script" |
| ] |
| }, |
| "runtime.onMessageExternal": { |
| "contexts": [ |
| "privileged_extension", |
| "lock_screen_extension", |
| "offscreen_extension" |
| ] |
| }, |
| "runtime.onUserScriptMessage": { |
| // NOTE: We can readily open this up to offscreen extensions and |
| // lockscreen extensions, if there's desire. For now, limit it. |
| "contexts": ["privileged_extension"], |
| "min_manifest_version": 3 |
| }, |
| "runtime.sendMessage": [{ |
| // Everything except WebUI. |
| "contexts": [ |
| "privileged_web_page", |
| "content_script", |
| "privileged_extension", |
| "lock_screen_extension", |
| "offscreen_extension", |
| "unprivileged_extension", |
| "user_script", |
| "web_page" |
| ], |
| "matches": ["<all_urls>"] |
| },{ |
| "contexts": ["webui"], |
| "matches": [ |
| "chrome://password-change/*", |
| "chrome://file-manager/*" |
| ] |
| },{ |
| "channel": "stable", |
| "contexts": ["webui_untrusted"], |
| "matches": [ |
| "chrome-untrusted://terminal/*" |
| ] |
| }], |
| "runtime.sendNativeMessage": { |
| "dependencies": ["permission:nativeMessaging"], |
| "contexts": ["privileged_extension"] |
| }, |
| "serial": { |
| "dependencies": ["permission:serial"], |
| "contexts": ["privileged_extension"] |
| }, |
| "socket": { |
| "dependencies": ["permission:socket"], |
| "contexts": ["privileged_extension"] |
| }, |
| "sockets.tcp": [{ |
| "dependencies": ["manifest:sockets"], |
| "contexts": ["privileged_extension"] |
| },{ |
| "channel": "stable", |
| "contexts": ["webui_untrusted"], |
| "matches": [ |
| "chrome-untrusted://terminal/*" |
| ] |
| }], |
| "sockets.tcpServer": [{ |
| "dependencies": ["manifest:sockets"], |
| "contexts": ["privileged_extension"] |
| },{ |
| "channel": "stable", |
| "contexts": ["webui_untrusted"], |
| "matches": [ |
| "chrome-untrusted://terminal/*" |
| ] |
| }], |
| "sockets.udp": [{ |
| "dependencies": ["manifest:sockets"], |
| "contexts": ["privileged_extension"] |
| },{ |
| "channel": "stable", |
| "contexts": ["webui_untrusted"], |
| "matches": [ |
| "chrome-untrusted://terminal/*" |
| ] |
| }], |
| "storage": { |
| "dependencies": ["permission:storage"], |
| "contexts": [ |
| "privileged_extension", |
| "unprivileged_extension", |
| "content_script" |
| ] |
| }, |
| "storage.session": { |
| "min_manifest_version": 3 |
| }, |
| "system.cpu": { |
| "dependencies": ["permission:system.cpu"], |
| "contexts": ["privileged_extension"] |
| }, |
| "system.display": [{ |
| "dependencies": ["permission:system.display"], |
| "contexts": ["privileged_extension"] |
| }, { |
| "channel": "stable", |
| "contexts": ["webui"], |
| "matches": [ |
| "chrome://os-settings/*" |
| ] |
| }], |
| "system.memory": { |
| "dependencies": ["permission:system.memory"], |
| "contexts": ["privileged_extension"] |
| }, |
| "system.network": { |
| "dependencies": ["permission:system.network"], |
| "contexts": ["privileged_extension"] |
| }, |
| "system.storage": { |
| "dependencies": ["permission:system.storage"], |
| "contexts": ["privileged_extension"] |
| }, |
| "system.storage.getAvailableCapacity": { |
| "channel": "dev" |
| }, |
| "test": [{ |
| "channel": "stable", |
| "extension_types": "all", |
| // Everything except web pages and WebUI. WebUI is declared in a separate |
| // rule to keep the "matches" property isolated. |
| "contexts": [ |
| "privileged_extension", |
| "privileged_web_page", |
| "content_script", |
| "lock_screen_extension", |
| "offscreen_extension", |
| "unprivileged_extension", |
| "user_script" |
| ] |
| }, { |
| "channel": "stable", |
| "contexts": ["webui"], |
| "matches": [ |
| "chrome://extensions/*", |
| // System Web App version of File Manager. |
| "chrome://file-manager/*", |
| "chrome://webui-test/*" |
| ] |
| }, { |
| "channel": "stable", |
| "contexts": [ "webui_untrusted" ], |
| "matches": [ "chrome-untrusted://api-test/*" ] |
| }], |
| "types": { |
| "internal": true, |
| "channel": "stable", |
| "extension_types": ["extension", "legacy_packaged_app", "platform_app"], |
| "contexts": ["privileged_extension"] |
| }, |
| "usb": { |
| "dependencies": ["permission:usb"], |
| "contexts": ["privileged_extension"] |
| }, |
| "userScripts": { |
| "dependencies": [ "permission:userScripts" ], |
| "contexts": [ "privileged_extension" ], |
| "developer_mode_only": true, |
| "feature_flag": "ApiUserScripts" |
| }, |
| "userScripts.getWorldConfigurations": { |
| "dependencies": [ "permission:userScripts" ], |
| "contexts": [ "privileged_extension" ], |
| "developer_mode_only": true, |
| "feature_flag": "ApiUserScriptsMultipleWorlds" |
| }, |
| "userScripts.resetWorldConfiguration": { |
| "dependencies": [ "permission:userScripts" ], |
| "contexts": [ "privileged_extension" ], |
| "developer_mode_only": true, |
| "feature_flag": "ApiUserScriptsMultipleWorlds" |
| }, |
| "virtualKeyboard": { |
| "dependencies": ["permission:virtualKeyboard"], |
| "contexts": ["privileged_extension"] |
| }, |
| "vpnProvider": { |
| "dependencies": ["permission:vpnProvider"], |
| "contexts": ["privileged_extension"] |
| }, |
| "webRequest": { |
| "dependencies": ["permission:webRequest"], |
| "contexts": ["privileged_extension"] |
| }, |
| "webRequestInternal": [{ |
| "internal": true, |
| "channel": "stable", |
| "contexts": ["privileged_extension"] |
| }, { |
| // webview uses webRequestInternal API. |
| "channel": "stable", |
| "internal": true, |
| "contexts": ["webui"], |
| "matches": [ |
| "chrome://add-supervision/*", |
| "chrome://assistant-optin/*", |
| "chrome://chrome-signin/*", |
| "chrome://discards/*", |
| "chrome://home/*", |
| "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": "stable", |
| "contexts": ["web_page"], |
| // This feature is only enabled if the embedder's delegated check returns |
| // true. |
| "requires_delegated_availability_check": true |
| }], |
| "webViewInternal": [{ |
| "internal": true, |
| "dependencies": ["permission:webview"], |
| "contexts": ["privileged_extension"] |
| }, { |
| "internal": true, |
| "channel": "stable", |
| "contexts": ["webui"], |
| "matches": [ |
| "chrome://add-supervision/*", |
| "chrome://assistant-optin/*", |
| "chrome://chrome-signin/*", |
| "chrome://discards/*", |
| "chrome://home/*", |
| "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": "stable", |
| "contexts": ["web_page"], |
| // This feature is only enabled if the embedder's delegated check returns |
| // true. |
| "requires_delegated_availability_check": true |
| }], |
| "webViewRequest": [{ |
| "dependencies": ["permission:webview"], |
| "contexts": ["privileged_extension"] |
| }, { |
| "channel": "stable", |
| "contexts": ["webui"], |
| "matches": [ |
| "chrome://add-supervision/*", |
| "chrome://assistant-optin/*", |
| "chrome://chrome-signin/*", |
| "chrome://discards/*", |
| "chrome://home/*", |
| "chrome://mobilesetup/*", |
| "chrome://oobe/*", |
| "chrome://os-settings/*", |
| "chrome://parent-access/*" |
| ] |
| }] |
| } |