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

Side by Side Diff: chrome/common/extensions/extension.cc

Issue 6683060: Private API for extensions like ssh-client that need access to TCP. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: m Created 9 years, 8 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/common/extensions/extension.h" 5 #include "chrome/common/extensions/extension.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/base64.h" 9 #include "base/base64.h"
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
200 const int Extension::kPageActionIconMaxSize = 19; 200 const int Extension::kPageActionIconMaxSize = 19;
201 const int Extension::kBrowserActionIconMaxSize = 19; 201 const int Extension::kBrowserActionIconMaxSize = 19;
202 const int Extension::kSidebarIconMaxSize = 16; 202 const int Extension::kSidebarIconMaxSize = 16;
203 203
204 // Explicit permissions -- permission declaration required. 204 // Explicit permissions -- permission declaration required.
205 const char Extension::kBackgroundPermission[] = "background"; 205 const char Extension::kBackgroundPermission[] = "background";
206 const char Extension::kBookmarkPermission[] = "bookmarks"; 206 const char Extension::kBookmarkPermission[] = "bookmarks";
207 const char Extension::kContextMenusPermission[] = "contextMenus"; 207 const char Extension::kContextMenusPermission[] = "contextMenus";
208 const char Extension::kContentSettingsPermission[] = "contentSettings"; 208 const char Extension::kContentSettingsPermission[] = "contentSettings";
209 const char Extension::kCookiePermission[] = "cookies"; 209 const char Extension::kCookiePermission[] = "cookies";
210 const char Extension::kChromeosInfoPrivatePermissions[] = "chromeosInfoPrivate"; 210 const char Extension::kChromeosInfoPrivatePermission[] = "chromeosInfoPrivate";
211 const char Extension::kDebuggerPermission[] = "debugger"; 211 const char Extension::kDebuggerPermission[] = "debugger";
212 const char Extension::kExperimentalPermission[] = "experimental"; 212 const char Extension::kExperimentalPermission[] = "experimental";
213 const char Extension::kFileSystemPermission[] = "fileSystem"; 213 const char Extension::kFileSystemPermission[] = "fileSystem";
214 const char Extension::kFileBrowserPrivatePermission[] = "fileBrowserPrivate"; 214 const char Extension::kFileBrowserPrivatePermission[] = "fileBrowserPrivate";
215 const char Extension::kGeolocationPermission[] = "geolocation"; 215 const char Extension::kGeolocationPermission[] = "geolocation";
216 const char Extension::kHistoryPermission[] = "history"; 216 const char Extension::kHistoryPermission[] = "history";
217 const char Extension::kIdlePermission[] = "idle"; 217 const char Extension::kIdlePermission[] = "idle";
218 const char Extension::kManagementPermission[] = "management"; 218 const char Extension::kManagementPermission[] = "management";
219 const char Extension::kNotificationPermission[] = "notifications"; 219 const char Extension::kNotificationPermission[] = "notifications";
220 const char Extension::kProxyPermission[] = "proxy"; 220 const char Extension::kProxyPermission[] = "proxy";
221 const char Extension::kTabPermission[] = "tabs"; 221 const char Extension::kTabPermission[] = "tabs";
222 const char Extension::kUnlimitedStoragePermission[] = "unlimitedStorage"; 222 const char Extension::kUnlimitedStoragePermission[] = "unlimitedStorage";
223 const char Extension::kWebstorePrivatePermission[] = "webstorePrivate"; 223 const char Extension::kWebstorePrivatePermission[] = "webstorePrivate";
224 const char Extension::kWebproxyPrivatePermission[] = "webproxyPrivate";
224 225
225 // In general, all permissions should have an install message. 226 // In general, all permissions should have an install message.
226 // See ExtensionsTest.PermissionMessages for an explanation of each 227 // See ExtensionsTest.PermissionMessages for an explanation of each
227 // exception. 228 // exception.
228 const Extension::Permission Extension::kPermissions[] = { 229 const Extension::Permission Extension::kPermissions[] = {
229 { kBackgroundPermission, 0 }, 230 { kBackgroundPermission, 0 },
230 { kBookmarkPermission, IDS_EXTENSION_PROMPT_WARNING_BOOKMARKS }, 231 { kBookmarkPermission, IDS_EXTENSION_PROMPT_WARNING_BOOKMARKS },
231 { kChromeosInfoPrivatePermissions, 0}, 232 { kChromeosInfoPrivatePermission, 0},
232 { kContentSettingsPermission, 0 }, 233 { kContentSettingsPermission, 0 },
233 { kContextMenusPermission, 0 }, 234 { kContextMenusPermission, 0 },
234 { kCookiePermission, 0 }, 235 { kCookiePermission, 0 },
235 { kDebuggerPermission, IDS_EXTENSION_PROMPT_WARNING_DEBUGGER }, 236 { kDebuggerPermission, IDS_EXTENSION_PROMPT_WARNING_DEBUGGER },
236 { kExperimentalPermission, 0 }, 237 { kExperimentalPermission, 0 },
237 { kFileSystemPermission, 0 }, 238 { kFileSystemPermission, 0 },
238 { kFileBrowserPrivatePermission, 0 }, 239 { kFileBrowserPrivatePermission, 0 },
239 { kGeolocationPermission, IDS_EXTENSION_PROMPT_WARNING_GEOLOCATION }, 240 { kGeolocationPermission, IDS_EXTENSION_PROMPT_WARNING_GEOLOCATION },
240 { kIdlePermission, 0 }, 241 { kIdlePermission, 0 },
241 { kHistoryPermission, IDS_EXTENSION_PROMPT_WARNING_BROWSING_HISTORY }, 242 { kHistoryPermission, IDS_EXTENSION_PROMPT_WARNING_BROWSING_HISTORY },
242 { kManagementPermission, IDS_EXTENSION_PROMPT_WARNING_MANAGEMENT }, 243 { kManagementPermission, IDS_EXTENSION_PROMPT_WARNING_MANAGEMENT },
243 { kNotificationPermission, 0 }, 244 { kNotificationPermission, 0 },
244 { kProxyPermission, 0 }, 245 { kProxyPermission, 0 },
245 { kTabPermission, IDS_EXTENSION_PROMPT_WARNING_TABS }, 246 { kTabPermission, IDS_EXTENSION_PROMPT_WARNING_TABS },
246 { kUnlimitedStoragePermission, 0 }, 247 { kUnlimitedStoragePermission, 0 },
247 { kWebstorePrivatePermission, 0 }, 248 { kWebstorePrivatePermission, 0 },
249 { kWebproxyPrivatePermission, 0 },
248 }; 250 };
249 const size_t Extension::kNumPermissions = 251 const size_t Extension::kNumPermissions =
250 arraysize(Extension::kPermissions); 252 arraysize(Extension::kPermissions);
251 253
252 const char* const Extension::kHostedAppPermissionNames[] = { 254 const char* const Extension::kHostedAppPermissionNames[] = {
253 Extension::kBackgroundPermission, 255 Extension::kBackgroundPermission,
254 Extension::kGeolocationPermission, 256 Extension::kGeolocationPermission,
255 Extension::kNotificationPermission, 257 Extension::kNotificationPermission,
256 Extension::kUnlimitedStoragePermission, 258 Extension::kUnlimitedStoragePermission,
257 Extension::kWebstorePrivatePermission, 259 Extension::kWebstorePrivatePermission,
(...skipping 1663 matching lines...) Expand 10 before | Expand all | Expand 10 after
1921 if (!permissions->GetString(i, &permission_str)) { 1923 if (!permissions->GetString(i, &permission_str)) {
1922 *error = ExtensionErrorUtils::FormatErrorMessage( 1924 *error = ExtensionErrorUtils::FormatErrorMessage(
1923 errors::kInvalidPermission, base::IntToString(i)); 1925 errors::kInvalidPermission, base::IntToString(i));
1924 return false; 1926 return false;
1925 } 1927 }
1926 1928
1927 // Only COMPONENT extensions can use the webstorePrivate and 1929 // Only COMPONENT extensions can use the webstorePrivate and
1928 // fileBrowserPrivate APIs. 1930 // fileBrowserPrivate APIs.
1929 // TODO(asargent) - We want a more general purpose mechanism for this, 1931 // TODO(asargent) - We want a more general purpose mechanism for this,
1930 // and better error messages. (http://crbug.com/54013) 1932 // and better error messages. (http://crbug.com/54013)
1931 if ((permission_str == kWebstorePrivatePermission || 1933 if (location_ != Extension::COMPONENT &&
1932 permission_str == kFileBrowserPrivatePermission) && 1934 (permission_str == kWebstorePrivatePermission ||
1933 location_ != Extension::COMPONENT) { 1935 permission_str == kFileBrowserPrivatePermission ||
1936 permission_str == kChromeosInfoPrivatePermission ||
1937 permission_str == kWebproxyPrivatePermission)) {
1934 continue; 1938 continue;
1935 } 1939 }
1936 1940
1937 if (permission_str == kChromeosInfoPrivatePermissions &&
1938 location_ != Extension::COMPONENT) {
1939 continue;
1940 }
1941
1942 // Remap the old unlimited storage permission name. 1941 // Remap the old unlimited storage permission name.
1943 if (permission_str == kOldUnlimitedStoragePermission) 1942 if (permission_str == kOldUnlimitedStoragePermission)
1944 permission_str = kUnlimitedStoragePermission; 1943 permission_str = kUnlimitedStoragePermission;
1945 1944
1946 if (web_extent().is_empty() || location() == Extension::COMPONENT) { 1945 if (web_extent().is_empty() || location() == Extension::COMPONENT) {
1947 // Check if it's a module permission. If so, enable that permission. 1946 // Check if it's a module permission. If so, enable that permission.
1948 if (IsAPIPermission(permission_str)) { 1947 if (IsAPIPermission(permission_str)) {
1949 // Only allow the experimental API permission if the command line 1948 // Only allow the experimental API permission if the command line
1950 // flag is present, or if the extension is a component of Chrome. 1949 // flag is present, or if the extension is a component of Chrome.
1951 if (permission_str == Extension::kExperimentalPermission && 1950 if (permission_str == Extension::kExperimentalPermission &&
(...skipping 642 matching lines...) Expand 10 before | Expand all | Expand 10 after
2594 2593
2595 UninstalledExtensionInfo::~UninstalledExtensionInfo() {} 2594 UninstalledExtensionInfo::~UninstalledExtensionInfo() {}
2596 2595
2597 2596
2598 UnloadedExtensionInfo::UnloadedExtensionInfo( 2597 UnloadedExtensionInfo::UnloadedExtensionInfo(
2599 const Extension* extension, 2598 const Extension* extension,
2600 Reason reason) 2599 Reason reason)
2601 : reason(reason), 2600 : reason(reason),
2602 already_disabled(false), 2601 already_disabled(false),
2603 extension(extension) {} 2602 extension(extension) {}
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698