bf7c7ec2b972f9de9f9a95f4f70b6028957b3065
[platform/framework/web/crosswalk.git] / src / chrome / common / extensions / permissions / chrome_api_permissions.cc
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
16 namespace extensions {
17
18 namespace {
19
20 const char kOldAlwaysOnTopWindowsPermission[] = "alwaysOnTopWindows";
21 const char kOldFullscreenPermission[] = "fullscreen";
22 const char kOldOverrideEscFullscreenPermission[] = "overrideEscFullscreen";
23 const char kOldUnlimitedStoragePermission[] = "unlimited_storage";
24 const char kWindowsPermission[] = "windows";
25
26 template<typename T> APIPermission* CreateAPIPermission(
27     const APIPermissionInfo* permission) {
28   return new T(permission);
29 }
30
31 }  // namespace
32
33 std::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
400 std::vector<PermissionsProvider::AliasInfo>
401 ChromeAPIPermissions::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