1 // Copyright 2014 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.
5 #include "extensions/common/permissions/extensions_api_permissions.h"
9 #include "extensions/common/permissions/api_permission.h"
10 #include "extensions/common/permissions/permission_message.h"
11 #include "extensions/common/permissions/socket_permission.h"
12 #include "extensions/common/permissions/usb_device_permission.h"
13 #include "grit/extensions_strings.h"
15 namespace extensions
{
19 const char kOldAlwaysOnTopWindowsPermission
[] = "alwaysOnTopWindows";
20 const char kOldFullscreenPermission
[] = "fullscreen";
21 const char kOldOverrideEscFullscreenPermission
[] = "overrideEscFullscreen";
24 APIPermission
* CreateAPIPermission(const APIPermissionInfo
* permission
) {
25 return new T(permission
);
30 std::vector
<APIPermissionInfo
*> ExtensionsAPIPermissions::GetAllPermissions()
32 APIPermissionInfo::InitInfo permissions_to_register
[] = {
33 {APIPermission::kAlphaEnabled
, "app.window.alpha"},
34 {APIPermission::kAlwaysOnTopWindows
, "app.window.alwaysOnTop"},
35 {APIPermission::kAudioCapture
, "audioCapture",
36 APIPermissionInfo::kFlagNone
, IDS_EXTENSION_PROMPT_WARNING_AUDIO_CAPTURE
,
37 PermissionMessage::kAudioCapture
},
38 {APIPermission::kDeclarativeWebRequest
, "declarativeWebRequest",
39 APIPermissionInfo::kFlagNone
,
40 IDS_EXTENSION_PROMPT_WARNING_DECLARATIVE_WEB_REQUEST
,
41 PermissionMessage::kDeclarativeWebRequest
},
42 {APIPermission::kDns
, "dns"},
43 {APIPermission::kExternallyConnectableAllUrls
,
44 "externally_connectable.all_urls"},
45 {APIPermission::kFullscreen
, "app.window.fullscreen"},
46 {APIPermission::kHid
, "hid", APIPermissionInfo::kFlagNone
,
47 IDS_EXTENSION_PROMPT_WARNING_HID
, PermissionMessage::kHid
},
48 {APIPermission::kOverrideEscFullscreen
,
49 "app.window.fullscreen.overrideEsc"},
50 {APIPermission::kPower
, "power"},
51 {APIPermission::kSerial
, "serial", APIPermissionInfo::kFlagNone
,
52 IDS_EXTENSION_PROMPT_WARNING_SERIAL
, PermissionMessage::kSerial
},
53 // Because warning messages for the "socket" permission vary based
54 // on the permissions parameters, no message ID or message text is
55 // specified here. The message ID and text used will be
56 // determined at run-time in the |SocketPermission| class.
57 {APIPermission::kSocket
, "socket",
58 APIPermissionInfo::kFlagCannotBeOptional
, 0, PermissionMessage::kNone
,
59 &CreateAPIPermission
<SocketPermission
>},
60 {APIPermission::kStorage
, "storage"},
61 {APIPermission::kSystemCpu
, "system.cpu"},
62 {APIPermission::kSystemMemory
, "system.memory"},
63 {APIPermission::kSystemNetwork
, "system.network"},
64 {APIPermission::kSystemDisplay
, "system.display"},
65 {APIPermission::kSystemStorage
, "system.storage"},
66 {APIPermission::kU2fDevices
, "u2fDevices", APIPermissionInfo::kFlagNone
,
67 IDS_EXTENSION_PROMPT_WARNING_U2F_DEVICES
,
68 PermissionMessage::kU2fDevices
},
69 {APIPermission::kUsb
, "usb", APIPermissionInfo::kFlagNone
,
70 IDS_EXTENSION_PROMPT_WARNING_USB
, PermissionMessage::kUsb
},
71 {APIPermission::kUsbDevice
, "usbDevices", APIPermissionInfo::kFlagNone
, 0,
72 PermissionMessage::kNone
, &CreateAPIPermission
<UsbDevicePermission
>},
73 {APIPermission::kVideoCapture
, "videoCapture",
74 APIPermissionInfo::kFlagNone
, IDS_EXTENSION_PROMPT_WARNING_VIDEO_CAPTURE
,
75 PermissionMessage::kVideoCapture
},
76 // NOTE(kalman): This is provided by a manifest property but needs to
77 // appear in the install permission dialogue, so we need a fake
78 // permission for it. See http://crbug.com/247857.
79 {APIPermission::kWebConnectable
, "webConnectable",
80 APIPermissionInfo::kFlagCannotBeOptional
|
81 APIPermissionInfo::kFlagInternal
,
82 IDS_EXTENSION_PROMPT_WARNING_WEB_CONNECTABLE
,
83 PermissionMessage::kWebConnectable
},
84 {APIPermission::kWebRequest
, "webRequest"},
85 {APIPermission::kWebRequestBlocking
, "webRequestBlocking"},
86 {APIPermission::kWebView
, "webview",
87 APIPermissionInfo::kFlagCannotBeOptional
},
88 {APIPermission::kWindowShape
, "app.window.shape"},
89 {APIPermission::kImeWindowEnabled
, "app.window.ime"},
92 std::vector
<APIPermissionInfo
*> permissions
;
93 for (size_t i
= 0; i
< ARRAYSIZE_UNSAFE(permissions_to_register
); ++i
)
94 permissions
.push_back(new APIPermissionInfo(permissions_to_register
[i
]));
98 std::vector
<PermissionsProvider::AliasInfo
>
99 ExtensionsAPIPermissions::GetAllAliases() const {
100 std::vector
<PermissionsProvider::AliasInfo
> aliases
;
101 aliases
.push_back(PermissionsProvider::AliasInfo(
102 "app.window.alwaysOnTop", kOldAlwaysOnTopWindowsPermission
));
103 aliases
.push_back(PermissionsProvider::AliasInfo("app.window.fullscreen",
104 kOldFullscreenPermission
));
106 PermissionsProvider::AliasInfo("app.window.fullscreen.overrideEsc",
107 kOldOverrideEscFullscreenPermission
));
111 } // namespace extensions