chrome_api_permissions.cc revision 0529e5d033099cbfc42635f6f6183833b09dff6e
1// Copyright (c) 2013 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "chrome/common/extensions/permissions/chrome_api_permissions.h" 6 7#include "extensions/common/permissions/api_permission.h" 8#include "extensions/common/permissions/api_permission_set.h" 9#include "extensions/common/permissions/media_galleries_permission.h" 10#include "extensions/common/permissions/permission_message.h" 11#include "extensions/common/permissions/permissions_info.h" 12#include "extensions/common/permissions/socket_permission.h" 13#include "extensions/common/permissions/usb_device_permission.h" 14#include "grit/extensions_strings.h" 15#include "grit/generated_resources.h" 16 17namespace extensions { 18 19namespace { 20 21const char kOldAlwaysOnTopWindowsPermission[] = "alwaysOnTopWindows"; 22const char kOldFullscreenPermission[] = "fullscreen"; 23const char kOldOverrideEscFullscreenPermission[] = "overrideEscFullscreen"; 24const char kOldUnlimitedStoragePermission[] = "unlimited_storage"; 25const char kWindowsPermission[] = "windows"; 26 27template<typename T> APIPermission* CreateAPIPermission( 28 const APIPermissionInfo* permission) { 29 return new T(permission); 30} 31 32} // namespace 33 34std::vector<APIPermissionInfo*> ChromeAPIPermissions::GetAllPermissions() 35 const { 36 struct PermissionRegistration { 37 APIPermission::ID id; 38 const char* name; 39 int flags; 40 int l10n_message_id; 41 PermissionMessage::ID message_id; 42 APIPermissionInfo::APIPermissionConstructor constructor; 43 } PermissionsToRegister[] = { 44 // Register permissions for all extension types. 45 {APIPermission::kBackground, "background"}, 46 {APIPermission::kClipboardRead, "clipboardRead", 47 APIPermissionInfo::kFlagNone, IDS_EXTENSION_PROMPT_WARNING_CLIPBOARD, 48 PermissionMessage::kClipboard}, 49 {APIPermission::kClipboardWrite, "clipboardWrite"}, 50 {APIPermission::kDeclarativeContent, "declarativeContent"}, 51 {APIPermission::kDeclarativeWebRequest, "declarativeWebRequest", 52 APIPermissionInfo::kFlagNone, 53 IDS_EXTENSION_PROMPT_WARNING_DECLARATIVE_WEB_REQUEST, 54 PermissionMessage::kDeclarativeWebRequest}, 55 {APIPermission::kDesktopCapture, "desktopCapture", 56 APIPermissionInfo::kFlagNone, 57 IDS_EXTENSION_PROMPT_WARNING_DESKTOP_CAPTURE, 58 PermissionMessage::kDesktopCapture}, 59 {APIPermission::kDns, "dns"}, 60 {APIPermission::kDownloads, "downloads", APIPermissionInfo::kFlagNone, 61 IDS_EXTENSION_PROMPT_WARNING_DOWNLOADS, PermissionMessage::kDownloads}, 62 {APIPermission::kDownloadsOpen, "downloads.open", 63 APIPermissionInfo::kFlagNone, 64 IDS_EXTENSION_PROMPT_WARNING_DOWNLOADS_OPEN, 65 PermissionMessage::kDownloadsOpen}, 66 {APIPermission::kDownloadsShelf, "downloads.shelf"}, 67 {APIPermission::kIdentity, "identity"}, 68 {APIPermission::kExperimental, "experimental", 69 APIPermissionInfo::kFlagCannotBeOptional}, 70 // NOTE(kalman): this is provided by a manifest property but needs to 71 // appear in the install permission dialogue, so we need a fake 72 // permission for it. See http://crbug.com/247857. 73 {APIPermission::kWebConnectable, "webConnectable", 74 APIPermissionInfo::kFlagCannotBeOptional | 75 APIPermissionInfo::kFlagInternal, 76 IDS_EXTENSION_PROMPT_WARNING_WEB_CONNECTABLE, 77 PermissionMessage::kWebConnectable}, 78 {APIPermission::kGeolocation, "geolocation", 79 APIPermissionInfo::kFlagCannotBeOptional, 80 IDS_EXTENSION_PROMPT_WARNING_GEOLOCATION, 81 PermissionMessage::kGeolocation}, 82 {APIPermission::kNotification, "notifications"}, 83 {APIPermission::kUnlimitedStorage, "unlimitedStorage", 84 APIPermissionInfo::kFlagCannotBeOptional}, 85 {APIPermission::kGcm, "gcm"}, 86 87 // Register extension permissions. 88 {APIPermission::kAccessibilityFeaturesModify, 89 "accessibilityFeatures.modify", APIPermissionInfo::kFlagNone, 90 IDS_EXTENSION_PROMPT_WARNING_ACCESSIBILITY_FEATURES_MODIFY, 91 PermissionMessage::kAccessibilityFeaturesModify}, 92 {APIPermission::kAccessibilityFeaturesRead, 93 "accessibilityFeatures.read", APIPermissionInfo::kFlagNone, 94 IDS_EXTENSION_PROMPT_WARNING_ACCESSIBILITY_FEATURES_READ, 95 PermissionMessage::kAccessibilityFeaturesRead}, 96 {APIPermission::kAccessibilityPrivate, "accessibilityPrivate", 97 APIPermissionInfo::kFlagCannotBeOptional}, 98 {APIPermission::kActiveTab, "activeTab"}, 99 {APIPermission::kAdView, "adview"}, 100 {APIPermission::kAlarms, "alarms"}, 101 {APIPermission::kAutomation, "automation", 102 APIPermissionInfo::kFlagCannotBeOptional, 103 IDS_EXTENSION_PROMPT_WARNING_AUTOMATION, 104 PermissionMessage::kAutomation}, 105 {APIPermission::kBookmark, "bookmarks", APIPermissionInfo::kFlagNone, 106 IDS_EXTENSION_PROMPT_WARNING_BOOKMARKS, PermissionMessage::kBookmarks}, 107 {APIPermission::kBrailleDisplayPrivate, "brailleDisplayPrivate", 108 APIPermissionInfo::kFlagCannotBeOptional}, 109 {APIPermission::kBrowsingData, "browsingData"}, 110 {APIPermission::kContentSettings, "contentSettings", 111 APIPermissionInfo::kFlagNone, 112 IDS_EXTENSION_PROMPT_WARNING_CONTENT_SETTINGS, 113 PermissionMessage::kContentSettings}, 114 {APIPermission::kContextMenus, "contextMenus"}, 115 {APIPermission::kCookie, "cookies"}, 116 {APIPermission::kFileBrowserHandler, "fileBrowserHandler", 117 APIPermissionInfo::kFlagCannotBeOptional}, 118 {APIPermission::kFontSettings, "fontSettings", 119 APIPermissionInfo::kFlagCannotBeOptional}, 120 {APIPermission::kHistory, "history", APIPermissionInfo::kFlagNone, 121 IDS_EXTENSION_PROMPT_WARNING_BROWSING_HISTORY, 122 PermissionMessage::kBrowsingHistory}, 123 {APIPermission::kIdltest, "idltest"}, 124 {APIPermission::kIdle, "idle"}, 125 {APIPermission::kInfobars, "infobars"}, 126 {APIPermission::kInput, "input", APIPermissionInfo::kFlagNone, 127 IDS_EXTENSION_PROMPT_WARNING_INPUT, PermissionMessage::kInput}, 128 {APIPermission::kLocation, "location", 129 APIPermissionInfo::kFlagCannotBeOptional, 130 IDS_EXTENSION_PROMPT_WARNING_GEOLOCATION, 131 PermissionMessage::kGeolocation}, 132 {APIPermission::kManagement, "management", APIPermissionInfo::kFlagNone, 133 IDS_EXTENSION_PROMPT_WARNING_MANAGEMENT, 134 PermissionMessage::kManagement}, 135 {APIPermission::kNativeMessaging, "nativeMessaging", 136 APIPermissionInfo::kFlagNone, 137 IDS_EXTENSION_PROMPT_WARNING_NATIVE_MESSAGING, 138 PermissionMessage::kNativeMessaging}, 139 {APIPermission::kPower, "power", }, 140 {APIPermission::kPrivacy, "privacy", APIPermissionInfo::kFlagNone, 141 IDS_EXTENSION_PROMPT_WARNING_PRIVACY, PermissionMessage::kPrivacy}, 142 {APIPermission::kProcesses, "processes", APIPermissionInfo::kFlagNone, 143 IDS_EXTENSION_PROMPT_WARNING_TABS, PermissionMessage::kTabs}, 144 {APIPermission::kSessions, "sessions"}, 145 {APIPermission::kSignedInDevices, "signedInDevices", 146 APIPermissionInfo::kFlagNone, 147 IDS_EXTENSION_PROMPT_WARNING_SIGNED_IN_DEVICES, 148 PermissionMessage::kSignedInDevices}, 149 {APIPermission::kStorage, "storage"}, 150 {APIPermission::kSyncFileSystem, "syncFileSystem", 151 APIPermissionInfo::kFlagNone, 152 IDS_EXTENSION_PROMPT_WARNING_SYNCFILESYSTEM, 153 PermissionMessage::kSyncFileSystem}, 154 {APIPermission::kTab, "tabs", APIPermissionInfo::kFlagNone, 155 IDS_EXTENSION_PROMPT_WARNING_TABS, PermissionMessage::kTabs}, 156 {APIPermission::kTopSites, "topSites", APIPermissionInfo::kFlagNone, 157 IDS_EXTENSION_PROMPT_WARNING_BROWSING_HISTORY, 158 PermissionMessage::kBrowsingHistory}, 159 {APIPermission::kTts, "tts", 0, 160 APIPermissionInfo::kFlagCannotBeOptional}, 161 {APIPermission::kTtsEngine, "ttsEngine", 162 APIPermissionInfo::kFlagCannotBeOptional, 163 IDS_EXTENSION_PROMPT_WARNING_TTS_ENGINE, 164 PermissionMessage::kTtsEngine}, 165 {APIPermission::kWallpaper, "wallpaper", 166 APIPermissionInfo::kFlagCannotBeOptional, 167 IDS_EXTENSION_PROMPT_WARNING_WALLPAPER, PermissionMessage::kWallpaper}, 168 {APIPermission::kWebNavigation, "webNavigation", 169 APIPermissionInfo::kFlagNone, IDS_EXTENSION_PROMPT_WARNING_TABS, 170 PermissionMessage::kTabs}, 171 {APIPermission::kWebRequest, "webRequest"}, 172 {APIPermission::kWebRequestBlocking, "webRequestBlocking"}, 173 {APIPermission::kWebView, "webview", 174 APIPermissionInfo::kFlagCannotBeOptional}, 175 176 // Register private permissions. 177 {APIPermission::kScreenlockPrivate, "screenlockPrivate", 178 APIPermissionInfo::kFlagCannotBeOptional, 179 IDS_EXTENSION_PROMPT_WARNING_SCREENLOCK_PRIVATE, 180 PermissionMessage::kScreenlockPrivate}, 181 {APIPermission::kActivityLogPrivate, "activityLogPrivate", 182 APIPermissionInfo::kFlagCannotBeOptional, 183 IDS_EXTENSION_PROMPT_WARNING_ACTIVITY_LOG_PRIVATE, 184 PermissionMessage::kActivityLogPrivate}, 185 {APIPermission::kAutoTestPrivate, "autotestPrivate", 186 APIPermissionInfo::kFlagCannotBeOptional}, 187 {APIPermission::kBookmarkManagerPrivate, "bookmarkManagerPrivate", 188 APIPermissionInfo::kFlagCannotBeOptional}, 189 {APIPermission::kCast, "cast", 190 APIPermissionInfo::kFlagCannotBeOptional}, 191 {APIPermission::kChromeosInfoPrivate, "chromeosInfoPrivate", 192 APIPermissionInfo::kFlagCannotBeOptional}, 193 {APIPermission::kCommandLinePrivate, "commandLinePrivate", 194 APIPermissionInfo::kFlagCannotBeOptional}, 195 {APIPermission::kDeveloperPrivate, "developerPrivate", 196 APIPermissionInfo::kFlagCannotBeOptional}, 197 {APIPermission::kDiagnostics, "diagnostics", 198 APIPermissionInfo::kFlagCannotBeOptional}, 199 {APIPermission::kDial, "dial", 200 APIPermissionInfo::kFlagCannotBeOptional}, 201 {APIPermission::kDownloadsInternal, "downloadsInternal"}, 202 {APIPermission::kFileBrowserHandlerInternal, 203 "fileBrowserHandlerInternal", 204 APIPermissionInfo::kFlagCannotBeOptional}, 205 {APIPermission::kFileBrowserPrivate, "fileBrowserPrivate", 206 APIPermissionInfo::kFlagCannotBeOptional}, 207 {APIPermission::kHotwordPrivate, "hotwordPrivate", 208 APIPermissionInfo::kFlagCannotBeOptional}, 209 {APIPermission::kIdentityPrivate, "identityPrivate", 210 APIPermissionInfo::kFlagCannotBeOptional}, 211 {APIPermission::kLogPrivate, "logPrivate"}, 212 {APIPermission::kWebcamPrivate, "webcamPrivate"}, 213 {APIPermission::kNetworkingPrivate, "networkingPrivate", 214 APIPermissionInfo::kFlagCannotBeOptional, 215 IDS_EXTENSION_PROMPT_WARNING_NETWORKING_PRIVATE, 216 PermissionMessage::kNetworkingPrivate}, 217 {APIPermission::kMediaPlayerPrivate, "mediaPlayerPrivate", 218 APIPermissionInfo::kFlagCannotBeOptional}, 219 {APIPermission::kMetricsPrivate, "metricsPrivate", 220 APIPermissionInfo::kFlagCannotBeOptional}, 221 {APIPermission::kMDns, "mdns", 222 APIPermissionInfo::kFlagCannotBeOptional}, 223 {APIPermission::kMusicManagerPrivate, "musicManagerPrivate", 224 APIPermissionInfo::kFlagCannotBeOptional, 225 IDS_EXTENSION_PROMPT_WARNING_MUSIC_MANAGER_PRIVATE, 226 PermissionMessage::kMusicManagerPrivate}, 227 {APIPermission::kPreferencesPrivate, "preferencesPrivate", 228 APIPermissionInfo::kFlagCannotBeOptional}, 229 {APIPermission::kSystemPrivate, "systemPrivate", 230 APIPermissionInfo::kFlagCannotBeOptional}, 231 {APIPermission::kCloudPrintPrivate, "cloudPrintPrivate", 232 APIPermissionInfo::kFlagCannotBeOptional}, 233 {APIPermission::kInputMethodPrivate, "inputMethodPrivate", 234 APIPermissionInfo::kFlagCannotBeOptional}, 235 {APIPermission::kEchoPrivate, "echoPrivate", 236 APIPermissionInfo::kFlagCannotBeOptional}, 237 {APIPermission::kFeedbackPrivate, "feedbackPrivate", 238 APIPermissionInfo::kFlagCannotBeOptional}, 239 {APIPermission::kImageWriterPrivate, "imageWriterPrivate", 240 APIPermissionInfo::kFlagCannotBeOptional}, 241 {APIPermission::kReadingListPrivate, "readingListPrivate", 242 APIPermissionInfo::kFlagCannotBeOptional}, 243 {APIPermission::kRtcPrivate, "rtcPrivate", 244 APIPermissionInfo::kFlagCannotBeOptional}, 245 {APIPermission::kTerminalPrivate, "terminalPrivate", 246 APIPermissionInfo::kFlagCannotBeOptional}, 247 {APIPermission::kVirtualKeyboardPrivate, "virtualKeyboardPrivate", 248 APIPermissionInfo::kFlagCannotBeOptional}, 249 {APIPermission::kWallpaperPrivate, "wallpaperPrivate", 250 APIPermissionInfo::kFlagCannotBeOptional}, 251 {APIPermission::kWebstorePrivate, "webstorePrivate", 252 APIPermissionInfo::kFlagCannotBeOptional}, 253 {APIPermission::kMediaGalleriesPrivate, "mediaGalleriesPrivate", 254 APIPermissionInfo::kFlagCannotBeOptional}, 255 {APIPermission::kStreamsPrivate, "streamsPrivate", 256 APIPermissionInfo::kFlagCannotBeOptional}, 257 {APIPermission::kEnterprisePlatformKeysPrivate, 258 "enterprise.platformKeysPrivate", 259 APIPermissionInfo::kFlagCannotBeOptional}, 260 {APIPermission::kWebrtcAudioPrivate, "webrtcAudioPrivate", 261 APIPermissionInfo::kFlagCannotBeOptional}, 262 {APIPermission::kWebrtcLoggingPrivate, "webrtcLoggingPrivate", 263 APIPermissionInfo::kFlagCannotBeOptional}, 264 {APIPermission::kPrincipalsPrivate, "principalsPrivate", 265 APIPermissionInfo::kFlagCannotBeOptional}, 266 {APIPermission::kFirstRunPrivate, "firstRunPrivate", 267 APIPermissionInfo::kFlagCannotBeOptional}, 268 {APIPermission::kBluetoothPrivate, "bluetoothPrivate", 269 APIPermissionInfo::kFlagCannotBeOptional, 270 IDS_EXTENSION_PROMPT_WARNING_BLUETOOTH_PRIVATE, 271 PermissionMessage::kBluetoothPrivate}, 272 273 // Full url access permissions. 274 {APIPermission::kDebugger, "debugger", 275 APIPermissionInfo::kFlagImpliesFullURLAccess | 276 APIPermissionInfo::kFlagCannotBeOptional, 277 IDS_EXTENSION_PROMPT_WARNING_DEBUGGER, PermissionMessage::kDebugger}, 278 {APIPermission::kDevtools, "devtools", 279 APIPermissionInfo::kFlagImpliesFullURLAccess | 280 APIPermissionInfo::kFlagCannotBeOptional | 281 APIPermissionInfo::kFlagInternal}, 282 {APIPermission::kPageCapture, "pageCapture", 283 APIPermissionInfo::kFlagImpliesFullURLAccess}, 284 {APIPermission::kTabCapture, "tabCapture", 285 APIPermissionInfo::kFlagImpliesFullURLAccess}, 286 {APIPermission::kTabCaptureForTab, "tabCaptureForTab", 287 APIPermissionInfo::kFlagInternal}, 288 {APIPermission::kPlugin, "plugin", 289 APIPermissionInfo::kFlagImpliesFullURLAccess | 290 APIPermissionInfo::kFlagImpliesFullAccess | 291 APIPermissionInfo::kFlagCannotBeOptional | 292 APIPermissionInfo::kFlagInternal, 293 IDS_EXTENSION_PROMPT_WARNING_FULL_ACCESS, 294 PermissionMessage::kFullAccess}, 295 {APIPermission::kProxy, "proxy", 296 APIPermissionInfo::kFlagImpliesFullURLAccess | 297 APIPermissionInfo::kFlagCannotBeOptional}, 298 299 // Platform-app permissions. 300 {APIPermission::kSerial, "serial", APIPermissionInfo::kFlagNone, 301 IDS_EXTENSION_PROMPT_WARNING_SERIAL, PermissionMessage::kSerial}, 302 // Because warning messages for the "socket" permission vary based on 303 // the 304 // permissions parameters, no message ID or message text is specified 305 // here. 306 // The message ID and text used will be determined at run-time in the 307 // |SocketPermission| class. 308 {APIPermission::kSocket, "socket", 309 APIPermissionInfo::kFlagCannotBeOptional, 0, PermissionMessage::kNone, 310 &CreateAPIPermission<SocketPermission>}, 311 {APIPermission::kAlwaysOnTopWindows, "app.window.alwaysOnTop"}, 312 {APIPermission::kAudioCapture, "audioCapture", 313 APIPermissionInfo::kFlagNone, 314 IDS_EXTENSION_PROMPT_WARNING_AUDIO_CAPTURE, 315 PermissionMessage::kAudioCapture}, 316 {APIPermission::kVideoCapture, "videoCapture", 317 APIPermissionInfo::kFlagNone, 318 IDS_EXTENSION_PROMPT_WARNING_VIDEO_CAPTURE, 319 PermissionMessage::kVideoCapture}, 320 // The permission string for "fileSystem" is only shown when "write" or 321 // "directory" is present. Read-only access is only granted after the 322 // user 323 // has been shown a file or directory chooser dialog and selected a 324 // file or 325 // directory . Selecting the file or directory is considered consent to 326 // read it. 327 {APIPermission::kFileSystem, "fileSystem"}, 328 {APIPermission::kFileSystemDirectory, "fileSystem.directory", 329 APIPermissionInfo::kFlagNone, 330 IDS_EXTENSION_PROMPT_WARNING_FILE_SYSTEM_DIRECTORY, 331 PermissionMessage::kFileSystemDirectory}, 332 {APIPermission::kFileSystemProvider, "fileSystemProvider"}, 333 {APIPermission::kFileSystemRetainEntries, "fileSystem.retainEntries"}, 334 {APIPermission::kFileSystemWrite, "fileSystem.write", 335 APIPermissionInfo::kFlagNone, 336 IDS_EXTENSION_PROMPT_WARNING_FILE_SYSTEM_WRITE, 337 PermissionMessage::kFileSystemWrite}, 338 {APIPermission::kFileSystemWriteDirectory, "fileSystem.writeDirectory", 339 APIPermissionInfo::kFlagNone, 340 IDS_EXTENSION_PROMPT_WARNING_FILE_SYSTEM_WRITE_DIRECTORY, 341 PermissionMessage::kFileSystemWriteDirectory}, 342 {APIPermission::kHid, "hid", APIPermissionInfo::kFlagNone, 343 IDS_EXTENSION_PROMPT_WARNING_HID, PermissionMessage::kHid}, 344 // Because warning messages for the "mediaGalleries" permission vary 345 // based 346 // on the permissions parameters, no message ID or message text is 347 // specified here. 348 // The message ID and text used will be determined at run-time in the 349 // |MediaGalleriesPermission| class. 350 {APIPermission::kMediaGalleries, "mediaGalleries", 351 APIPermissionInfo::kFlagNone, 0, PermissionMessage::kNone, 352 &CreateAPIPermission<MediaGalleriesPermission>}, 353 {APIPermission::kPushMessaging, "pushMessaging", 354 APIPermissionInfo::kFlagCannotBeOptional}, 355 {APIPermission::kUsb, "usb", APIPermissionInfo::kFlagNone, 356 IDS_EXTENSION_PROMPT_WARNING_USB, PermissionMessage::kUsb}, 357 {APIPermission::kUsbDevice, "usbDevices", APIPermissionInfo::kFlagNone, 358 0, PermissionMessage::kNone, 359 &CreateAPIPermission<UsbDevicePermission>}, 360 {APIPermission::kSystemIndicator, "systemIndicator", 361 APIPermissionInfo::kFlagNone, 362 IDS_EXTENSION_PROMPT_WARNING_SYSTEM_INDICATOR, 363 PermissionMessage::kSystemIndicator}, 364 {APIPermission::kSystemCpu, "system.cpu"}, 365 {APIPermission::kSystemMemory, "system.memory"}, 366 {APIPermission::kSystemNetwork, "system.network"}, 367 {APIPermission::kSystemDisplay, "system.display"}, 368 {APIPermission::kSystemStorage, "system.storage"}, 369 {APIPermission::kPointerLock, "pointerLock"}, 370 {APIPermission::kFullscreen, "app.window.fullscreen"}, 371 {APIPermission::kAudio, "audio"}, 372 {APIPermission::kCastStreaming, "cast.streaming"}, 373 {APIPermission::kOverrideEscFullscreen, 374 "app.window.fullscreen.overrideEsc"}, 375 {APIPermission::kWindowShape, "app.window.shape"}, 376 377 // Settings override permissions. 378 {APIPermission::kHomepage, "homepage", 379 APIPermissionInfo::kFlagCannotBeOptional | 380 APIPermissionInfo::kFlagInternal, 381 IDS_EXTENSION_PROMPT_WARNING_HOME_PAGE_SETTING_OVERRIDE, 382 PermissionMessage::kHomepage}, 383 {APIPermission::kSearchProvider, "searchProvider", 384 APIPermissionInfo::kFlagCannotBeOptional | 385 APIPermissionInfo::kFlagInternal, 386 IDS_EXTENSION_PROMPT_WARNING_SEARCH_SETTINGS_OVERRIDE, 387 PermissionMessage::kSearchProvider}, 388 {APIPermission::kStartupPages, "startupPages", 389 APIPermissionInfo::kFlagCannotBeOptional | 390 APIPermissionInfo::kFlagInternal, 391 IDS_EXTENSION_PROMPT_WARNING_START_PAGE_SETTING_OVERRIDE, 392 PermissionMessage::kStartupPages}, }; 393 394 std::vector<APIPermissionInfo*> permissions; 395 396 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(PermissionsToRegister); ++i) { 397 const PermissionRegistration& pr = PermissionsToRegister[i]; 398 permissions.push_back(new APIPermissionInfo( 399 pr.id, pr.name, pr.l10n_message_id, 400 pr.message_id ? pr.message_id : PermissionMessage::kNone, 401 pr.flags, 402 pr.constructor)); 403 } 404 return permissions; 405} 406 407std::vector<PermissionsProvider::AliasInfo> 408ChromeAPIPermissions::GetAllAliases() const { 409 // Register aliases. 410 std::vector<PermissionsProvider::AliasInfo> aliases; 411 aliases.push_back(PermissionsProvider::AliasInfo( 412 "app.window.alwaysOnTop", kOldAlwaysOnTopWindowsPermission)); 413 aliases.push_back(PermissionsProvider::AliasInfo("app.window.fullscreen", 414 kOldFullscreenPermission)); 415 aliases.push_back( 416 PermissionsProvider::AliasInfo("app.window.fullscreen.overrideEsc", 417 kOldOverrideEscFullscreenPermission)); 418 aliases.push_back(PermissionsProvider::AliasInfo( 419 "unlimitedStorage", kOldUnlimitedStoragePermission)); 420 aliases.push_back(PermissionsProvider::AliasInfo( 421 "tabs", kWindowsPermission)); 422 return aliases; 423} 424 425} // namespace extensions 426