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