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