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