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