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