// Copyright 2012 The Chromium Authors. All rights reserved. // 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 chrome/renderer/resources/dispatcher.cc. { "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"], "whitelist": [ "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"], "whitelist": [ "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 ] }, "action": { "dependencies": ["manifest:action"], "contexts": ["blessed_extension"] }, "activityLogPrivate": [{ "dependencies": ["permission:activityLogPrivate"], "contexts": ["blessed_extension"] }, { "channel": "stable", "contexts": ["webui"], "matches": [ "chrome://extensions/*" ] }], "app": { "blacklist": [ "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" ], // Any webpage can use the app API. "matches": [""] }, "appviewTag": { "internal": true, "dependencies": ["permission:appview"], "contexts": ["blessed_extension"] }, "autofillPrivate": [{ "dependencies": ["permission:autofillPrivate"], "contexts": ["blessed_extension"] }, { "channel": "stable", "contexts": ["webui"], "matches": [ "chrome://settings/*" ] }], "automationInternal": { "internal": true, "dependencies": ["manifest:automation"], "contexts": ["blessed_extension"] }, "automation": { "dependencies": ["manifest:automation"], "contexts": ["blessed_extension"] }, "autotestPrivate": { "dependencies": ["permission:autotestPrivate"], "contexts": ["blessed_extension"] }, "bookmarkManagerPrivate": [{ "dependencies": ["permission:bookmarkManagerPrivate"], "contexts": ["blessed_extension"] }, { "channel": "stable", "contexts": ["webui"], "matches": [ "chrome://bookmarks/*" ] }], "bookmarks": [{ "dependencies": ["permission:bookmarks"], "contexts": ["blessed_extension"], "default_parent": true }, { "channel": "stable", "contexts": ["webui"], "matches": [ "chrome://bookmarks/*", "chrome://welcome/*" ] }], "bookmarks.export": [{ "whitelist": [ "D5736E4B5CF695CB93A2FB57E4FDC6E5AFAB6FE2", // http://crbug.com/312900 "D57DE394F36DC1C3220E7604C575D29C51A6C495", // http://crbug.com/319444 "3F65507A3B39259B38C8173C6FFA3D12DF64CCE9" // http://crbug.com/371562 ] }, { "channel": "stable", "contexts": ["webui"], "dependencies": [], "matches": [ "chrome://bookmarks/*" ] }], "bookmarks.import": [{ "whitelist": [ "D5736E4B5CF695CB93A2FB57E4FDC6E5AFAB6FE2", // http://crbug.com/312900 "D57DE394F36DC1C3220E7604C575D29C51A6C495", // http://crbug.com/319444 "3F65507A3B39259B38C8173C6FFA3D12DF64CCE9" // http://crbug.com/371562 ] }, { "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 whitelisted 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"], "whitelist": [ "63ED55E43214C211F82122ED56407FF1A807F2A3", // Dev // The extensions below here only use openPopup on a user action, // so are safe, and can be removed when the whitelist 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"] }, "cast.channel": { "dependencies": ["permission:cast"], "contexts": ["blessed_extension"] }, "cast.streaming.rtpStream": { "dependencies": ["permission:cast.streaming"], "contexts": ["blessed_extension"] }, "cast.streaming.receiverSession": { "dependencies": ["permission:cast.streaming"], "contexts": ["blessed_extension"] }, "cast.streaming.session": { "dependencies": ["permission:cast.streaming"], "contexts": ["blessed_extension"] }, "cast.streaming.udpTransport": { "dependencies": ["permission:cast.streaming"], "contexts": ["blessed_extension"] }, "certificateProvider": { "dependencies": ["permission:certificateProvider"], "contexts": ["blessed_extension"] }, "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"] }], "chromeWebViewInternal": [{ "internal": true, "dependencies": ["permission:webview"], "contexts": ["blessed_extension"] }, { "internal": true, "channel": "stable", "contexts": ["webui"], "matches": [ "chrome://chrome-signin/*", "chrome://discards/*", "chrome://hats/*", "chrome://media-router/*", "chrome://mobilesetup/*", "chrome://oobe/*", "chrome://assistant-optin/*" ] }], "cloudPrintPrivate": { "dependencies": ["permission:cloudPrintPrivate"], "contexts": ["blessed_extension"] }, "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"] }, "contextMenusInternal": { "internal": true, "channel": "stable", "contexts": ["blessed_extension"] }, "cookies": { "dependencies": ["permission:cookies"], "contexts": ["blessed_extension"] }, "cryptotokenPrivate": { "dependencies": ["permission:cryptotokenPrivate"], "contexts": ["blessed_extension"] }, "dashboardPrivate": [{ "channel": "stable", "contexts": ["blessed_web_page", "web_page"], "matches": ["https://chrome.google.com/webstore/*"] }, { "channel": "stable", "contexts": ["blessed_extension"], "whitelist": [ "B44D08FD98F1523ED5837D78D0A606EA9D6206E5" // Web Store ] }], "dataReductionProxy": { "dependencies": ["permission:dataReductionProxy"], "contexts": ["blessed_extension"] }, "debugger": { "dependencies": ["permission:debugger"], "contexts": ["blessed_extension"] }, "declarativeContent": { "dependencies": ["permission:declarativeContent"], "contexts": ["blessed_extension"] }, "desktopCapture": [{ "dependencies": ["permission:desktopCapture"], "contexts": ["blessed_extension"] }, { "dependencies": ["permission:desktopCapturePrivate"], "whitelist": [ "63ED55E43214C211F82122ED56407FF1A807F2A3", // Media Router Dev "226CF815E39A363090A1E547D53063472B8279FA" // Media Router Stable ], "contexts": ["blessed_extension"] }], "developerPrivate": [{ "dependencies": ["permission:developerPrivate", "permission:management"], "contexts": ["blessed_extension"] }, { "channel": "stable", "contexts": ["webui"], "matches": [ "chrome://extensions/*", "chrome://extensions-frame/*", "chrome://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"] }, "downloads": { "dependencies": ["permission:downloads"], "contexts": ["blessed_extension"] }, "downloadsInternal": { "internal": true, "channel": "stable", "contexts": ["blessed_extension"] }, "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.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"] }, "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.getURL": { "contexts": ["blessed_extension", "unblessed_extension", "content_script", "extension_service_worker"] }, "extension.getViews": [ { "channel": "stable", "contexts": ["blessed_extension"], "extension_types": ["extension", "legacy_packaged_app"] }, { // TODO(yoz): Eliminate this usage. "channel": "stable", "contexts": ["blessed_extension"], "extension_types": ["platform_app"], "whitelist": [ "A948368FC53BE437A55FEB414106E207925482F5" // File manager ] } ], "extension.inIncognitoContext": { "contexts": ["blessed_extension", "unblessed_extension", "content_script"] }, "extension.lastError": { "contexts": ["blessed_extension", "unblessed_extension", "content_script"] }, "extension.onRequest": { "contexts": ["blessed_extension", "unblessed_extension", "content_script"] }, "extension.sendRequest": { "contexts": ["blessed_extension", "unblessed_extension", "content_script"] }, "extensionOptionsInternal": [{ "internal": true, "contexts": ["blessed_extension"], "dependencies": ["permission:embeddedExtensionOptions"] }, { "internal": true, "channel": "stable", "contexts": ["webui"], "matches": ["chrome://extensions-frame/*", "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": ["blessed_extension"] }, "fileBrowserHandler": { "dependencies": ["permission:fileBrowserHandler"], "contexts": ["blessed_extension"] }, "fileBrowserHandlerInternal": { "internal": true, "dependencies": ["permission:fileBrowserHandler"], "contexts": ["blessed_extension"] }, "fileManagerPrivate": { "dependencies": ["permission:fileManagerPrivate"], "contexts": ["blessed_extension"] }, "fileManagerPrivateInternal": { "internal": true, "dependencies": ["permission:fileManagerPrivate"], "contexts": ["blessed_extension"] }, "fileSystemProvider": { "dependencies": ["permission:fileSystemProvider"], "contexts": ["blessed_extension"] }, "fileSystemProviderInternal": { "internal": true, "dependencies": ["permission:fileSystemProvider"], "contexts": ["blessed_extension"] }, "firstRunPrivate": { "dependencies": ["permission:firstRunPrivate"], "contexts": ["blessed_extension"] }, "fontSettings": { "dependencies": ["permission:fontSettings"], "contexts": ["blessed_extension"] }, "gcm": { "dependencies": ["permission:gcm"], "contexts": ["blessed_extension"] }, "history": { "dependencies": ["permission:history"], "contexts": ["blessed_extension"] }, "i18n": { "channel": "stable", "extension_types": ["extension", "legacy_packaged_app", "platform_app"], "contexts": ["blessed_extension", "unblessed_extension", "content_script", "lock_screen_extension"] }, "identity": { "dependencies": ["permission:identity"], "contexts": ["blessed_extension"] }, "identity.getAccounts": { "channel": "dev", "dependencies": ["permission:identity"], "contexts": ["blessed_extension"] }, "identityPrivate": { "dependencies": ["permission:identityPrivate"], "contexts": ["blessed_extension"] }, "idltest": { "dependencies": ["permission:idltest"], "contexts": ["blessed_extension"] }, "input.ime": { "dependencies": ["permission:input"], "contexts": ["blessed_extension"] }, "inputMethodPrivate": [{ "dependencies": ["permission:inputMethodPrivate"], "contexts": ["blessed_extension"] }, { "channel": "stable", "contexts": ["webui"], "matches": [ "chrome://settings/*" ] }], "instanceID": { "dependencies": ["permission:gcm"], "contexts": ["blessed_extension"] }, "languageSettingsPrivate": [{ "dependencies": ["permission:languageSettingsPrivate"], "contexts": ["blessed_extension"] }, { "channel": "stable", "contexts": ["webui"], "matches": [ "chrome://settings/*" ] }], "launcherSearchProvider": { "dependencies": ["permission:launcherSearchProvider"], "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": ["blessed_extension"] }, "mediaPlayerPrivate": { "dependencies": ["permission:mediaPlayerPrivate"], "contexts": ["blessed_extension"] }, "mdns": { "dependencies": ["permission:mdns"], "contexts": ["blessed_extension"] }, "mimeHandlerViewGuestInternal": { "internal": true, "contexts": "all", "channel": "stable", "matches": [""] }, "networking.castPrivate": { "channel": "stable", "contexts": ["blessed_extension"], "dependencies": ["permission:networking.castPrivate"] }, "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/*" ] }], "permissions": { "channel": "stable", "extension_types": ["extension", "legacy_packaged_app", "platform_app"], "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"] }], "preferencesPrivate": { "dependencies": ["permission:preferencesPrivate"], "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://settings/*", "chrome://oobe/*" ], "platforms": ["chromeos"] }, "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"] }, "sessions": { "dependencies": ["permission:sessions"], "contexts": ["blessed_extension"] }, "settingsPrivate": [{ "dependencies": ["permission:settingsPrivate"], "contexts": ["blessed_extension"] }, { "channel": "stable", "contexts": ["webui"], "matches": [ "chrome://settings/*" ] }], "signedInDevices": { "dependencies": ["permission:signedInDevices"], "contexts": ["blessed_extension"] }, "systemIndicator": { "dependencies": ["manifest:system_indicator"], "contexts": ["blessed_extension"] }, "systemPrivate": { "dependencies": ["permission:systemPrivate"], "contexts": ["blessed_extension"] }, "tabCapture": { "dependencies": ["permission:tabCapture"], "contexts": ["blessed_extension"] }, "tabs": [{ "channel": "stable", "extension_types": ["extension", "legacy_packaged_app"], "contexts": ["blessed_extension", "extension_service_worker"] }, { "channel": "stable", "contexts": ["webui"], "matches": [ "chrome://bookmarks/*" ] }], "terminalPrivate": { "dependencies": ["permission:terminalPrivate"], "contexts": ["blessed_extension"] }, "topSites": { "dependencies": ["permission:topSites"], "contexts": ["blessed_extension"] }, "tts": { "dependencies": ["permission:tts"], "contexts": ["blessed_extension"] }, "ttsEngine": { "dependencies": ["permission:ttsEngine"], "contexts": ["blessed_extension"] }, "usersPrivate": [{ "dependencies": ["permission:usersPrivate"], "contexts": ["blessed_extension"], "platforms": ["chromeos"] }, { "channel": "stable", "contexts": ["webui"], "matches": [ "chrome://settings/*" ] }], "virtualKeyboardPrivate": { "dependencies": ["permission:virtualKeyboardPrivate"], "contexts": ["blessed_extension"] }, "wallpaper": { "dependencies": ["permission:wallpaper"], "contexts": ["blessed_extension"] }, "wallpaperPrivate": { "dependencies": ["permission:wallpaperPrivate"], "contexts": ["blessed_extension"] }, "webNavigation": { "dependencies": ["permission:webNavigation"], "contexts": ["blessed_extension", "extension_service_worker"] }, "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, "whitelist": [ // 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"] }, "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/*" ] }] }