chrome_api_permissions.cc revision c2e0dbddbe15c98d52c4786dac06cb8952a8ae6d
15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved. 2926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// found in the LICENSE file. 45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "chrome/common/extensions/permissions/chrome_api_permissions.h" 65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "chrome/common/extensions/permissions/api_permission.h" 85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "chrome/common/extensions/permissions/api_permission_set.h" 95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "chrome/common/extensions/permissions/bluetooth_device_permission.h" 105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "chrome/common/extensions/permissions/media_galleries_permission.h" 115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "chrome/common/extensions/permissions/permission_message.h" 125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "chrome/common/extensions/permissions/permissions_info.h" 135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "chrome/common/extensions/permissions/socket_permission.h" 145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "chrome/common/extensions/permissions/usb_device_permission.h" 155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "grit/generated_resources.h" 165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)namespace extensions { 185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)namespace { 205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)const char kOldUnlimitedStoragePermission[] = "unlimited_storage"; 225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)const char kWindowsPermission[] = "windows"; 235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)template<typename T> APIPermission* CreateAPIPermission( 255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) const APIPermissionInfo* permission) { 265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return new T(permission); 275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} // namespace 305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 31d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)std::vector<APIPermissionInfo*> ChromeAPIPermissions::GetAllPermissions() 32d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) const { 335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) struct PermissionRegistration { 34c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) APIPermission::ID id; 3593ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) const char* name; 36d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) int flags; 37c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) int l10n_message_id; 38f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles) PermissionMessage::ID message_id; 3993ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) APIPermissionInfo::APIPermissionConstructor constructor; 405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } PermissionsToRegister[] = { 41c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) // Register permissions for all extension types. 425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { APIPermission::kBackground, "background" }, 43d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) { APIPermission::kClipboardRead, "clipboardRead", 44d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) APIPermissionInfo::kFlagNone, 45d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) IDS_EXTENSION_PROMPT_WARNING_CLIPBOARD, 4683750176c3ee2cea66c8a9751271026a5901be3aBen Murdoch PermissionMessage::kClipboard }, 47323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) { APIPermission::kClipboardWrite, "clipboardWrite" }, 48323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) { APIPermission::kDeclarativeContent, "declarativeContent" }, 49323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) { APIPermission::kDeclarativeWebRequest, "declarativeWebRequest" }, 50323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) { APIPermission::kDownloads, "downloads", APIPermissionInfo::kFlagNone, 51323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) IDS_EXTENSION_PROMPT_WARNING_DOWNLOADS, 5293ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) PermissionMessage::kDownloads }, 5393ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) { APIPermission::kIdentity, "identity" }, 5493ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) { APIPermission::kExperimental, "experimental", 5593ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) APIPermissionInfo::kFlagCannotBeOptional }, 5693ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) { APIPermission::kGeolocation, "geolocation", 5793ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) APIPermissionInfo::kFlagCannotBeOptional, 5893ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) IDS_EXTENSION_PROMPT_WARNING_GEOLOCATION, 5993ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) PermissionMessage::kGeolocation }, 6093ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) { APIPermission::kNotification, "notifications" }, 6153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) { APIPermission::kScreensaver, "screensaver" }, 62c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) { APIPermission::kUnlimitedStorage, "unlimitedStorage", 637242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci APIPermissionInfo::kFlagCannotBeOptional }, 64d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Register extension permissions. 66e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) { APIPermission::kActiveTab, "activeTab" }, 67e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) { APIPermission::kAdView, "adview" }, 68e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) { APIPermission::kAlarms, "alarms" }, 69e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) { APIPermission::kBookmark, "bookmarks", APIPermissionInfo::kFlagNone, 70e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) IDS_EXTENSION_PROMPT_WARNING_BOOKMARKS, 71e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) PermissionMessage::kBookmarks }, 72e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) { APIPermission::kBrowsingData, "browsingData" }, 73e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) { APIPermission::kContentSettings, "contentSettings", 74c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) APIPermissionInfo::kFlagNone, 75e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) IDS_EXTENSION_PROMPT_WARNING_CONTENT_SETTINGS, 76c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) PermissionMessage::kContentSettings }, 77d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) { APIPermission::kContextMenus, "contextMenus" }, 78c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) { APIPermission::kCookie, "cookies" }, 79e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) { APIPermission::kFileBrowserHandler, "fileBrowserHandler", 80e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) APIPermissionInfo::kFlagCannotBeOptional }, 81d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) { APIPermission::kFontSettings, "fontSettings", 8253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) APIPermissionInfo::kFlagCannotBeOptional }, 8351b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) { APIPermission::kHistory, "history", APIPermissionInfo::kFlagNone, 8451b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) IDS_EXTENSION_PROMPT_WARNING_BROWSING_HISTORY, 85e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) PermissionMessage::kBrowsingHistory }, 8693ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) { APIPermission::kIdle, "idle" }, 8793ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) { APIPermission::kInput, "input", APIPermissionInfo::kFlagNone, 8883750176c3ee2cea66c8a9751271026a5901be3aBen Murdoch IDS_EXTENSION_PROMPT_WARNING_INPUT, 8909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) PermissionMessage::kInput }, 9009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) { APIPermission::kLocation, "location", 9193ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) APIPermissionInfo::kFlagCannotBeOptional, 9293ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) IDS_EXTENSION_PROMPT_WARNING_GEOLOCATION, 9310f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch PermissionMessage::kGeolocation }, 9410f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch { APIPermission::kManagement, "management", APIPermissionInfo::kFlagNone, 9510f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch IDS_EXTENSION_PROMPT_WARNING_MANAGEMENT, 9610f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch PermissionMessage::kManagement }, 9710f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch { APIPermission::kNativeMessaging, "nativeMessaging" }, 9810f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch { APIPermission::kPower, "power", }, 9910f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch { APIPermission::kPrivacy, "privacy", APIPermissionInfo::kFlagNone, 10093ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) IDS_EXTENSION_PROMPT_WARNING_PRIVACY, 10110f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch PermissionMessage::kPrivacy }, 10210f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch { APIPermission::kSessionRestore, "sessionRestore" }, 10310f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch { APIPermission::kStorage, "storage" }, 10410f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch { APIPermission::kSyncFileSystem, "syncFileSystem", 10509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) APIPermissionInfo::kFlagNone, 106d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) IDS_EXTENSION_PROMPT_WARNING_SYNCFILESYSTEM, 107d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) PermissionMessage::kSyncFileSystem }, 10810f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch { APIPermission::kTab, "tabs", APIPermissionInfo::kFlagNone, 109d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) IDS_EXTENSION_PROMPT_WARNING_TABS, 11009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) PermissionMessage::kTabs }, 11109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) { APIPermission::kTopSites, "topSites", APIPermissionInfo::kFlagNone, 11210f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch IDS_EXTENSION_PROMPT_WARNING_BROWSING_HISTORY, 11310f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch PermissionMessage::kBrowsingHistory }, 11409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) { APIPermission::kTts, "tts", 0, APIPermissionInfo::kFlagCannotBeOptional }, 11583750176c3ee2cea66c8a9751271026a5901be3aBen Murdoch { APIPermission::kTtsEngine, "ttsEngine", 1167242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci APIPermissionInfo::kFlagCannotBeOptional, 1177242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci IDS_EXTENSION_PROMPT_WARNING_TTS_ENGINE, 1187242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci PermissionMessage::kTtsEngine }, 119d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) { APIPermission::kWebNavigation, "webNavigation", 120d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) APIPermissionInfo::kFlagNone, 12181a5157921f1d2a7ff6aae115bfe3c139b38a5c8Torne (Richard Coles) IDS_EXTENSION_PROMPT_WARNING_TABS, PermissionMessage::kTabs }, 122c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) { APIPermission::kWebRequest, "webRequest" }, 12393ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) { APIPermission::kWebRequestBlocking, "webRequestBlocking" }, 124d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) { APIPermission::kWebView, "webview", 12593ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) APIPermissionInfo::kFlagCannotBeOptional }, 12693ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) 127323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) // Register private permissions. 12809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) { APIPermission::kAutoTestPrivate, "autotestPrivate", 129a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch APIPermissionInfo::kFlagCannotBeOptional }, 13010f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch { APIPermission::kBookmarkManagerPrivate, "bookmarkManagerPrivate", 131bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) APIPermissionInfo::kFlagCannotBeOptional }, 132d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) { APIPermission::kChromeosInfoPrivate, "chromeosInfoPrivate", 133d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) APIPermissionInfo::kFlagCannotBeOptional }, 134d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) { APIPermission::kCommandLinePrivate, "commandLinePrivate", 135d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) APIPermissionInfo::kFlagCannotBeOptional }, 136d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) { APIPermission::kDeveloperPrivate, "developerPrivate", 137d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) APIPermissionInfo::kFlagCannotBeOptional }, 138d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) { APIPermission::kDial, "dial", APIPermissionInfo::kFlagCannotBeOptional }, 139d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) { APIPermission::kDownloadsInternal, "downloadsInternal" }, 140d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) { APIPermission::kFileBrowserHandlerInternal, "fileBrowserHandlerInternal", 141d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) APIPermissionInfo::kFlagCannotBeOptional }, 14209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) { APIPermission::kFileBrowserPrivate, "fileBrowserPrivate", 14309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) APIPermissionInfo::kFlagCannotBeOptional }, 14409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) { APIPermission::kNetworkingPrivate, "networkingPrivate", 145d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) APIPermissionInfo::kFlagCannotBeOptional }, 14693ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) { APIPermission::kManagedModePrivate, "managedModePrivate", 14709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) APIPermissionInfo::kFlagCannotBeOptional }, 148d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) { APIPermission::kMediaPlayerPrivate, "mediaPlayerPrivate", 14983750176c3ee2cea66c8a9751271026a5901be3aBen Murdoch APIPermissionInfo::kFlagCannotBeOptional }, 15093ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) { APIPermission::kMetricsPrivate, "metricsPrivate", 151d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) APIPermissionInfo::kFlagCannotBeOptional }, 15293ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) { APIPermission::kSystemPrivate, "systemPrivate", 153d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) APIPermissionInfo::kFlagCannotBeOptional }, 15410f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch { APIPermission::kCloudPrintPrivate, "cloudPrintPrivate", 155c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) APIPermissionInfo::kFlagCannotBeOptional }, 15693ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) { APIPermission::kInputMethodPrivate, "inputMethodPrivate", 15793ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) APIPermissionInfo::kFlagCannotBeOptional }, 158e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) { APIPermission::kEchoPrivate, "echoPrivate", 15993ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) APIPermissionInfo::kFlagCannotBeOptional }, 16093ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) { APIPermission::kRtcPrivate, "rtcPrivate", 16193ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) APIPermissionInfo::kFlagCannotBeOptional }, 16293ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) { APIPermission::kTerminalPrivate, "terminalPrivate", 16383750176c3ee2cea66c8a9751271026a5901be3aBen Murdoch APIPermissionInfo::kFlagCannotBeOptional }, 16409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) { APIPermission::kWallpaperPrivate, "wallpaperPrivate", 16509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) APIPermissionInfo::kFlagCannotBeOptional }, 16609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) { APIPermission::kWebRequestInternal, "webRequestInternal" }, 16793ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) { APIPermission::kWebSocketProxyPrivate, "webSocketProxyPrivate", 16809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) APIPermissionInfo::kFlagCannotBeOptional }, 16909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) { APIPermission::kWebstorePrivate, "webstorePrivate", 1707242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci APIPermissionInfo::kFlagCannotBeOptional }, 17181a5157921f1d2a7ff6aae115bfe3c139b38a5c8Torne (Richard Coles) { APIPermission::kMediaGalleriesPrivate, "mediaGalleriesPrivate", 17209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) APIPermissionInfo::kFlagCannotBeOptional }, 17353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) { APIPermission::kStreamsPrivate, "streamsPrivate", 1745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) APIPermissionInfo::kFlagCannotBeOptional }, 175c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) { APIPermission::kEnterprisePlatformKeysPrivate, 1765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "enterprise.platformKeysPrivate", 17781a5157921f1d2a7ff6aae115bfe3c139b38a5c8Torne (Richard Coles) APIPermissionInfo::kFlagCannotBeOptional }, 178 179 // Full url access permissions. 180 { APIPermission::kDebugger, "debugger", 181 APIPermissionInfo::kFlagImpliesFullURLAccess | 182 APIPermissionInfo::kFlagCannotBeOptional, 183 IDS_EXTENSION_PROMPT_WARNING_DEBUGGER, 184 PermissionMessage::kDebugger }, 185 { APIPermission::kDevtools, "devtools", 186 APIPermissionInfo::kFlagImpliesFullURLAccess | 187 APIPermissionInfo::kFlagCannotBeOptional }, 188 { APIPermission::kPageCapture, "pageCapture", 189 APIPermissionInfo::kFlagImpliesFullURLAccess }, 190 { APIPermission::kTabCapture, "tabCapture", 191 APIPermissionInfo::kFlagImpliesFullURLAccess }, 192 { APIPermission::kPlugin, "plugin", 193 APIPermissionInfo::kFlagImpliesFullURLAccess | 194 APIPermissionInfo::kFlagImpliesFullAccess | 195 APIPermissionInfo::kFlagCannotBeOptional, 196 IDS_EXTENSION_PROMPT_WARNING_FULL_ACCESS, 197 PermissionMessage::kFullAccess }, 198 { APIPermission::kProxy, "proxy", 199 APIPermissionInfo::kFlagImpliesFullURLAccess | 200 APIPermissionInfo::kFlagCannotBeOptional }, 201 202 // Platform-app permissions. 203 { APIPermission::kSerial, "serial", APIPermissionInfo::kFlagNone, 204 IDS_EXTENSION_PROMPT_WARNING_SERIAL, 205 PermissionMessage::kSerial }, 206 // Because warning messages for the "socket" permission vary based on the 207 // permissions parameters, no message ID or message text is specified here. 208 // The message ID and text used will be determined at run-time in the 209 // |SocketPermission| class. 210 { APIPermission::kSocket, "socket", 211 APIPermissionInfo::kFlagCannotBeOptional, 0, 212 PermissionMessage::kNone, &CreateAPIPermission<SocketPermission> }, 213 { APIPermission::kAppCurrentWindowInternal, "app.currentWindowInternal" }, 214 { APIPermission::kAppRuntime, "app.runtime" }, 215 { APIPermission::kAppWindow, "app.window" }, 216 { APIPermission::kAudioCapture, "audioCapture", 217 APIPermissionInfo::kFlagNone, 218 IDS_EXTENSION_PROMPT_WARNING_AUDIO_CAPTURE, 219 PermissionMessage::kAudioCapture }, 220 { APIPermission::kVideoCapture, "videoCapture", 221 APIPermissionInfo::kFlagNone, 222 IDS_EXTENSION_PROMPT_WARNING_VIDEO_CAPTURE, 223 PermissionMessage::kVideoCapture }, 224 // The permission string for "fileSystem" is only shown when "write" is 225 // present. Read-only access is only granted after the user has been shown 226 // a file chooser dialog and selected a file. Selecting the file is 227 // considered consent to read it. 228 { APIPermission::kFileSystem, "fileSystem" }, 229 { APIPermission::kFileSystemWrite, "fileSystem.write", 230 APIPermissionInfo::kFlagNone, 231 IDS_EXTENSION_PROMPT_WARNING_FILE_SYSTEM_WRITE, 232 PermissionMessage::kFileSystemWrite }, 233 // Because warning messages for the "mediaGalleries" permission vary based 234 // on the permissions parameters, no message ID or message text is 235 // specified here. 236 // The message ID and text used will be determined at run-time in the 237 // |MediaGalleriesPermission| class. 238 { APIPermission::kMediaGalleries, "mediaGalleries", 239 APIPermissionInfo::kFlagNone, 0, 240 PermissionMessage::kNone, 241 &CreateAPIPermission<MediaGalleriesPermission> }, 242 { APIPermission::kPushMessaging, "pushMessaging", 243 APIPermissionInfo::kFlagCannotBeOptional }, 244 { APIPermission::kBluetooth, "bluetooth", APIPermissionInfo::kFlagNone, 245 IDS_EXTENSION_PROMPT_WARNING_BLUETOOTH, 246 PermissionMessage::kBluetooth }, 247 { APIPermission::kBluetoothDevice, "bluetoothDevices", 248 APIPermissionInfo::kFlagNone, 0, PermissionMessage::kNone, 249 &CreateAPIPermission<BluetoothDevicePermission> }, 250 { APIPermission::kUsb, "usb", APIPermissionInfo::kFlagNone, 251 IDS_EXTENSION_PROMPT_WARNING_USB, 252 PermissionMessage::kUsb }, 253 { APIPermission::kUsbDevice, "usbDevices", 254 APIPermissionInfo::kFlagMustBeOptional, 0, PermissionMessage::kNone, 255 &CreateAPIPermission<UsbDevicePermission> }, 256 { APIPermission::kSystemIndicator, "systemIndicator", 257 APIPermissionInfo::kFlagNone, 258 IDS_EXTENSION_PROMPT_WARNING_SYSTEM_INDICATOR, 259 PermissionMessage::kSystemIndicator }, 260 { APIPermission::kSystemInfoDisplay, "systemInfo.display" }, 261 { APIPermission::kPointerLock, "pointerLock" }, 262 { APIPermission::kFullscreen, "fullscreen" }, 263 { APIPermission::kAudio, "audio" }, 264 }; 265 266 std::vector<APIPermissionInfo*> permissions; 267 268 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(PermissionsToRegister); ++i) { 269 const PermissionRegistration& pr = PermissionsToRegister[i]; 270 permissions.push_back(new APIPermissionInfo( 271 pr.id, pr.name, pr.l10n_message_id, 272 pr.message_id ? pr.message_id : PermissionMessage::kNone, 273 pr.flags, 274 pr.constructor)); 275 } 276 return permissions; 277} 278 279std::vector<PermissionsInfo::AliasInfo> ChromeAPIPermissions::GetAllAliases() 280 const { 281 // Register aliases. 282 std::vector<PermissionsInfo::AliasInfo> aliases; 283 aliases.push_back(PermissionsInfo::AliasInfo( 284 "unlimitedStorage", kOldUnlimitedStoragePermission)); 285 aliases.push_back(PermissionsInfo::AliasInfo( 286 "tabs", kWindowsPermission)); 287 return aliases; 288} 289 290} // namespace extensions 291