Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2)

Side by Side Diff: chrome/common/extensions/permissions/api_permission.cc

Issue 10649003: Move each permission classes to its own files in extensions/permissions (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Rebase on HEAD Created 8 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright (c) 2012 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/api_permission.h"
6
7 #include "chrome/common/extensions/permissions/permissions_info.h"
8 #include "grit/generated_resources.h"
9 #include "ui/base/l10n/l10n_util.h"
10
11 namespace {
12
13 const char kOldUnlimitedStoragePermission[] = "unlimited_storage";
14 const char kWindowsPermission[] = "windows";
15 const char kTemporaryBackgroundAlias[] = "background_alias_do_not_use";
16
17 } // namespace
18
19 namespace extensions {
20
21 //
22 // APIPermission
23 //
24
25 APIPermission::~APIPermission() {}
26
27 PermissionMessage APIPermission::GetMessage() const {
28 return PermissionMessage(
29 message_id_, l10n_util::GetStringUTF16(l10n_message_id_));
30 }
31
32 APIPermission::APIPermission(
33 ID id,
34 const char* name,
35 int l10n_message_id,
36 PermissionMessage::ID message_id,
37 int flags)
38 : id_(id),
39 name_(name),
40 flags_(flags),
41 l10n_message_id_(l10n_message_id),
42 message_id_(message_id) {}
43
44 // static
45 void APIPermission::RegisterAllPermissions(
46 PermissionsInfo* info) {
47
48 struct PermissionRegistration {
49 APIPermission::ID id;
50 const char* name;
51 int flags;
52 int l10n_message_id;
53 PermissionMessage::ID message_id;
54 } PermissionsToRegister[] = {
55 // Register permissions for all extension types.
56 { kBackground, "background" },
57 { kClipboardRead, "clipboardRead", kFlagNone,
58 IDS_EXTENSION_PROMPT_WARNING_CLIPBOARD,
59 PermissionMessage::kClipboard },
60 { kClipboardWrite, "clipboardWrite" },
61 { kDeclarative, "declarative" },
62 { kDeclarativeWebRequest, "declarativeWebRequest" },
63 { kDownloads, "downloads", kFlagNone,
64 IDS_EXTENSION_PROMPT_WARNING_DOWNLOADS,
65 PermissionMessage::kDownloads },
66 { kExperimental, "experimental", kFlagCannotBeOptional },
67 { kGeolocation, "geolocation", kFlagCannotBeOptional,
68 IDS_EXTENSION_PROMPT_WARNING_GEOLOCATION,
69 PermissionMessage::kGeolocation },
70 { kNotification, "notifications" },
71 { kUnlimitedStorage, "unlimitedStorage", kFlagCannotBeOptional },
72
73 // Register hosted and packaged app permissions.
74 { kAppNotifications, "appNotifications" },
75
76 // Register extension permissions.
77 { kActiveTab, "activeTab" },
78 { kAlarms, "alarms" },
79 { kAppWindow, "appWindow" },
80 { kBookmark, "bookmarks", kFlagNone,
81 IDS_EXTENSION_PROMPT_WARNING_BOOKMARKS,
82 PermissionMessage::kBookmarks },
83 { kBrowsingData, "browsingData" },
84 { kContentSettings, "contentSettings", kFlagNone,
85 IDS_EXTENSION_PROMPT_WARNING_CONTENT_SETTINGS,
86 PermissionMessage::kContentSettings },
87 { kContextMenus, "contextMenus" },
88 { kCookie, "cookies" },
89 { kFileBrowserHandler, "fileBrowserHandler", kFlagCannotBeOptional },
90 { kFileSystem, "fileSystem" },
91 { kHistory, "history", kFlagNone,
92 IDS_EXTENSION_PROMPT_WARNING_BROWSING_HISTORY,
93 PermissionMessage::kBrowsingHistory },
94 { kKeybinding, "keybinding" },
95 { kIdle, "idle" },
96 { kInput, "input", kFlagNone,
97 IDS_EXTENSION_PROMPT_WARNING_INPUT,
98 PermissionMessage::kInput },
99 { kManagement, "management", kFlagNone,
100 IDS_EXTENSION_PROMPT_WARNING_MANAGEMENT,
101 PermissionMessage::kManagement },
102 { kPageCapture, "pageCapture", kFlagNone,
103 IDS_EXTENSION_PROMPT_WARNING_ALL_PAGES_CONTENT,
104 PermissionMessage::kAllPageContent },
105 { kPrivacy, "privacy", kFlagNone,
106 IDS_EXTENSION_PROMPT_WARNING_PRIVACY,
107 PermissionMessage::kPrivacy },
108 { kStorage, "storage" },
109 { kTab, "tabs", kFlagNone,
110 IDS_EXTENSION_PROMPT_WARNING_TABS,
111 PermissionMessage::kTabs },
112 { kTopSites, "topSites", kFlagNone,
113 IDS_EXTENSION_PROMPT_WARNING_BROWSING_HISTORY,
114 PermissionMessage::kBrowsingHistory },
115 { kTts, "tts", 0, kFlagCannotBeOptional },
116 { kTtsEngine, "ttsEngine", kFlagCannotBeOptional,
117 IDS_EXTENSION_PROMPT_WARNING_TTS_ENGINE,
118 PermissionMessage::kTtsEngine },
119 { kUsb, "usb", kFlagNone,
120 IDS_EXTENSION_PROMPT_WARNING_USB,
121 PermissionMessage::kNone },
122 { kWebNavigation, "webNavigation", kFlagNone,
123 IDS_EXTENSION_PROMPT_WARNING_TABS, PermissionMessage::kTabs },
124 { kWebRequest, "webRequest" },
125 { kWebRequestBlocking, "webRequestBlocking" },
126
127 // Register private permissions.
128 { kChromeosInfoPrivate, "chromeosInfoPrivate", kFlagCannotBeOptional },
129 { kFileBrowserHandlerInternal, "fileBrowserHandlerInternal",
130 kFlagCannotBeOptional },
131 { kFileBrowserPrivate, "fileBrowserPrivate", kFlagCannotBeOptional },
132 { kManagedModePrivate, "managedModePrivate", kFlagCannotBeOptional },
133 { kMediaPlayerPrivate, "mediaPlayerPrivate", kFlagCannotBeOptional },
134 { kMetricsPrivate, "metricsPrivate", kFlagCannotBeOptional },
135 { kSystemPrivate, "systemPrivate", kFlagCannotBeOptional },
136 { kChromeAuthPrivate, "chromeAuthPrivate", kFlagCannotBeOptional },
137 { kInputMethodPrivate, "inputMethodPrivate", kFlagCannotBeOptional },
138 { kEchoPrivate, "echoPrivate", kFlagCannotBeOptional },
139 { kTerminalPrivate, "terminalPrivate", kFlagCannotBeOptional },
140 { kWebRequestInternal, "webRequestInternal", kFlagCannotBeOptional },
141 { kWebSocketProxyPrivate, "webSocketProxyPrivate", kFlagCannotBeOptional },
142 { kWebstorePrivate, "webstorePrivate", kFlagCannotBeOptional },
143
144 // Full url access permissions.
145 { kProxy, "proxy", kFlagImpliesFullURLAccess | kFlagCannotBeOptional },
146 { kDebugger, "debugger", kFlagImpliesFullURLAccess | kFlagCannotBeOptional,
147 IDS_EXTENSION_PROMPT_WARNING_DEBUGGER,
148 PermissionMessage::kDebugger },
149 { kDevtools, "devtools",
150 kFlagImpliesFullURLAccess | kFlagCannotBeOptional },
151 { kPlugin, "plugin",
152 kFlagImpliesFullURLAccess | kFlagImpliesFullAccess |
153 kFlagCannotBeOptional,
154 IDS_EXTENSION_PROMPT_WARNING_FULL_ACCESS,
155 PermissionMessage::kFullAccess },
156
157 // Platform-app permissions.
158 { kSocket, "socket", kFlagCannotBeOptional },
159 { kAudioCapture, "audioCapture", kFlagNone,
160 IDS_EXTENSION_PROMPT_WARNING_AUDIO_CAPTURE,
161 PermissionMessage::kAudioCapture },
162 { kVideoCapture, "videoCapture", kFlagNone,
163 IDS_EXTENSION_PROMPT_WARNING_VIDEO_CAPTURE,
164 PermissionMessage::kVideoCapture },
165 };
166
167 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(PermissionsToRegister); ++i) {
168 const PermissionRegistration& pr = PermissionsToRegister[i];
169 info->RegisterPermission(
170 pr.id, pr.name, pr.l10n_message_id,
171 pr.message_id ? pr.message_id : PermissionMessage::kNone,
172 pr.flags);
173 }
174
175 // Register aliases.
176 info->RegisterAlias("unlimitedStorage", kOldUnlimitedStoragePermission);
177 info->RegisterAlias("tabs", kWindowsPermission);
178 // TODO(mihaip): Should be removed for the M20 branch, see
179 // http://crbug.com/120447 for more details.
180 info->RegisterAlias("background", kTemporaryBackgroundAlias);
181 }
182
183 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698