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

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: c Created 9 years, 7 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 250 matching lines...) Expand 10 before | Expand all | Expand 10 after
261 const int Extension::kSidebarIconMaxSize = 16; 261 const int Extension::kSidebarIconMaxSize = 16;
262 262
263 // Explicit permissions -- permission declaration required. 263 // Explicit permissions -- permission declaration required.
264 const char Extension::kBackgroundPermission[] = "background"; 264 const char Extension::kBackgroundPermission[] = "background";
265 const char Extension::kBookmarkPermission[] = "bookmarks"; 265 const char Extension::kBookmarkPermission[] = "bookmarks";
266 const char Extension::kClipboardReadPermission[] = "clipboardRead"; 266 const char Extension::kClipboardReadPermission[] = "clipboardRead";
267 const char Extension::kClipboardWritePermission[] = "clipboardWrite"; 267 const char Extension::kClipboardWritePermission[] = "clipboardWrite";
268 const char Extension::kContextMenusPermission[] = "contextMenus"; 268 const char Extension::kContextMenusPermission[] = "contextMenus";
269 const char Extension::kContentSettingsPermission[] = "contentSettings"; 269 const char Extension::kContentSettingsPermission[] = "contentSettings";
270 const char Extension::kCookiePermission[] = "cookies"; 270 const char Extension::kCookiePermission[] = "cookies";
271 const char Extension::kChromeosInfoPrivatePermissions[] = "chromeosInfoPrivate"; 271 const char Extension::kChromeosInfoPrivatePermission[] = "chromeosInfoPrivate";
272 const char Extension::kDebuggerPermission[] = "debugger"; 272 const char Extension::kDebuggerPermission[] = "debugger";
273 const char Extension::kExperimentalPermission[] = "experimental"; 273 const char Extension::kExperimentalPermission[] = "experimental";
274 const char Extension::kFileBrowserHandlerPermission[] = "fileBrowserHandler"; 274 const char Extension::kFileBrowserHandlerPermission[] = "fileBrowserHandler";
275 const char Extension::kFileBrowserPrivatePermission[] = "fileBrowserPrivate"; 275 const char Extension::kFileBrowserPrivatePermission[] = "fileBrowserPrivate";
276 const char Extension::kGeolocationPermission[] = "geolocation"; 276 const char Extension::kGeolocationPermission[] = "geolocation";
277 const char Extension::kHistoryPermission[] = "history"; 277 const char Extension::kHistoryPermission[] = "history";
278 const char Extension::kIdlePermission[] = "idle"; 278 const char Extension::kIdlePermission[] = "idle";
279 const char Extension::kManagementPermission[] = "management"; 279 const char Extension::kManagementPermission[] = "management";
280 const char Extension::kNotificationPermission[] = "notifications"; 280 const char Extension::kNotificationPermission[] = "notifications";
281 const char Extension::kProxyPermission[] = "proxy"; 281 const char Extension::kProxyPermission[] = "proxy";
282 const char Extension::kTabPermission[] = "tabs"; 282 const char Extension::kTabPermission[] = "tabs";
283 const char Extension::kUnlimitedStoragePermission[] = "unlimitedStorage"; 283 const char Extension::kUnlimitedStoragePermission[] = "unlimitedStorage";
284 const char Extension::kWebstorePrivatePermission[] = "webstorePrivate"; 284 const char Extension::kWebstorePrivatePermission[] = "webstorePrivate";
285 const char Extension::kWebSocketProxyPrivatePermission[] =
286 "webSocketProxyPrivate";
285 287
286 // In general, all permissions should have an install message. 288 // In general, all permissions should have an install message.
287 // See ExtensionsTest.PermissionMessages for an explanation of each 289 // See ExtensionsTest.PermissionMessages for an explanation of each
288 // exception. 290 // exception.
289 const Extension::Permission Extension::kPermissions[] = { 291 const Extension::Permission Extension::kPermissions[] = {
290 { kBackgroundPermission, PermissionMessage::ID_NONE }, 292 { kBackgroundPermission, PermissionMessage::ID_NONE },
291 { kBookmarkPermission, PermissionMessage::ID_BOOKMARKS }, 293 { kBookmarkPermission, PermissionMessage::ID_BOOKMARKS },
292 { kChromeosInfoPrivatePermissions, PermissionMessage::ID_NONE }, 294 { kChromeosInfoPrivatePermission, PermissionMessage::ID_NONE },
293 { kClipboardReadPermission, PermissionMessage::ID_CLIPBOARD }, 295 { kClipboardReadPermission, PermissionMessage::ID_CLIPBOARD },
294 { kClipboardWritePermission, PermissionMessage::ID_NONE }, 296 { kClipboardWritePermission, PermissionMessage::ID_NONE },
295 { kContentSettingsPermission, PermissionMessage::ID_NONE }, 297 { kContentSettingsPermission, PermissionMessage::ID_NONE },
296 { kContextMenusPermission, PermissionMessage::ID_NONE }, 298 { kContextMenusPermission, PermissionMessage::ID_NONE },
297 { kCookiePermission, PermissionMessage::ID_NONE }, 299 { kCookiePermission, PermissionMessage::ID_NONE },
298 { kDebuggerPermission, PermissionMessage::ID_DEBUGGER }, 300 { kDebuggerPermission, PermissionMessage::ID_DEBUGGER },
299 { kExperimentalPermission, PermissionMessage::ID_NONE }, 301 { kExperimentalPermission, PermissionMessage::ID_NONE },
300 { kFileBrowserHandlerPermission, PermissionMessage::ID_NONE }, 302 { kFileBrowserHandlerPermission, PermissionMessage::ID_NONE },
301 { kFileBrowserPrivatePermission, PermissionMessage::ID_NONE }, 303 { kFileBrowserPrivatePermission, PermissionMessage::ID_NONE },
302 { kGeolocationPermission, PermissionMessage::ID_GEOLOCATION }, 304 { kGeolocationPermission, PermissionMessage::ID_GEOLOCATION },
303 { kIdlePermission, PermissionMessage::ID_NONE }, 305 { kIdlePermission, PermissionMessage::ID_NONE },
304 { kHistoryPermission, PermissionMessage::ID_BROWSING_HISTORY }, 306 { kHistoryPermission, PermissionMessage::ID_BROWSING_HISTORY },
305 { kManagementPermission, PermissionMessage::ID_MANAGEMENT }, 307 { kManagementPermission, PermissionMessage::ID_MANAGEMENT },
306 { kNotificationPermission, PermissionMessage::ID_NONE }, 308 { kNotificationPermission, PermissionMessage::ID_NONE },
307 { kProxyPermission, PermissionMessage::ID_NONE }, 309 { kProxyPermission, PermissionMessage::ID_NONE },
308 { kTabPermission, PermissionMessage::ID_TABS }, 310 { kTabPermission, PermissionMessage::ID_TABS },
309 { kUnlimitedStoragePermission, PermissionMessage::ID_NONE }, 311 { kUnlimitedStoragePermission, PermissionMessage::ID_NONE },
310 { kWebstorePrivatePermission, PermissionMessage::ID_NONE } 312 { kWebSocketProxyPrivatePermission, PermissionMessage::ID_NONE },
313 { kWebstorePrivatePermission, PermissionMessage::ID_NONE },
311 }; 314 };
312 const size_t Extension::kNumPermissions = 315 const size_t Extension::kNumPermissions = arraysize(Extension::kPermissions);
313 arraysize(Extension::kPermissions);
314 316
315 const char* const Extension::kHostedAppPermissionNames[] = { 317 const char* const Extension::kHostedAppPermissionNames[] = {
316 Extension::kBackgroundPermission, 318 Extension::kBackgroundPermission,
317 Extension::kGeolocationPermission, 319 Extension::kGeolocationPermission,
318 Extension::kNotificationPermission, 320 Extension::kNotificationPermission,
319 Extension::kUnlimitedStoragePermission, 321 Extension::kUnlimitedStoragePermission,
320 Extension::kWebstorePrivatePermission, 322 Extension::kWebstorePrivatePermission,
321 }; 323 };
322 const size_t Extension::kNumHostedAppPermissions = 324 const size_t Extension::kNumHostedAppPermissions =
323 arraysize(Extension::kHostedAppPermissionNames); 325 arraysize(Extension::kHostedAppPermissionNames);
324 326
325 const char* const Extension::kComponentPrivatePermissionNames[] = { 327 const char* const Extension::kComponentPrivatePermissionNames[] = {
326 Extension::kFileBrowserPrivatePermission, 328 Extension::kFileBrowserPrivatePermission,
327 Extension::kWebstorePrivatePermission, 329 Extension::kWebstorePrivatePermission,
328 Extension::kChromeosInfoPrivatePermissions, 330 Extension::kChromeosInfoPrivatePermission,
Dmitry Polukhin 2011/05/17 10:58:39 It shouldn't be a component extension.
Denis Lagno 2011/05/17 22:15:08 it is different api
329 }; 331 };
330 const size_t Extension::kNumComponentPrivatePermissions = 332 const size_t Extension::kNumComponentPrivatePermissions =
331 arraysize(Extension::kComponentPrivatePermissionNames); 333 arraysize(Extension::kComponentPrivatePermissionNames);
332 334
333 // We purposefully don't put this into kPermissionNames. 335 // We purposefully don't put this into kPermissionNames.
334 const char Extension::kOldUnlimitedStoragePermission[] = "unlimited_storage"; 336 const char Extension::kOldUnlimitedStoragePermission[] = "unlimited_storage";
335 337
336 const int Extension::kValidWebExtentSchemes = 338 const int Extension::kValidWebExtentSchemes =
337 URLPattern::SCHEME_HTTP | URLPattern::SCHEME_HTTPS; 339 URLPattern::SCHEME_HTTP | URLPattern::SCHEME_HTTPS;
338 340
(...skipping 2419 matching lines...) Expand 10 before | Expand all | Expand 10 after
2758 for (UserScriptList::const_iterator content_script = 2760 for (UserScriptList::const_iterator content_script =
2759 content_scripts().begin(); 2761 content_scripts().begin();
2760 content_script != content_scripts().end(); ++content_script) { 2762 content_script != content_scripts().end(); ++content_script) {
2761 UserScript::PatternList::const_iterator pattern = 2763 UserScript::PatternList::const_iterator pattern =
2762 content_script->url_patterns().begin(); 2764 content_script->url_patterns().begin();
2763 for (; pattern != content_script->url_patterns().end(); ++pattern) 2765 for (; pattern != content_script->url_patterns().end(); ++pattern)
2764 effective_host_permissions_.AddPattern(*pattern); 2766 effective_host_permissions_.AddPattern(*pattern);
2765 } 2767 }
2766 } 2768 }
2767 2769
2768 bool Extension::IsComponentOnlyPermission 2770 bool Extension::IsComponentOnlyPermission(const std::string& permission) const {
2769 (const std::string& permission) const {
2770 if (location() == Extension::COMPONENT) 2771 if (location() == Extension::COMPONENT)
2771 return true; 2772 return true;
2772 2773
2773 // Non-component extensions are not allowed to access private apis. 2774 // Non-component extensions are not allowed to access private apis.
2774 for (size_t i = 0; i < Extension::kNumComponentPrivatePermissions; ++i) { 2775 for (size_t i = 0; i < Extension::kNumComponentPrivatePermissions; ++i) {
2775 if (permission == Extension::kComponentPrivatePermissionNames[i]) 2776 if (permission == Extension::kComponentPrivatePermissionNames[i])
2776 return false; 2777 return false;
2777 } 2778 }
2778 return true; 2779 return true;
2779 } 2780 }
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
2951 2952
2952 UninstalledExtensionInfo::~UninstalledExtensionInfo() {} 2953 UninstalledExtensionInfo::~UninstalledExtensionInfo() {}
2953 2954
2954 2955
2955 UnloadedExtensionInfo::UnloadedExtensionInfo( 2956 UnloadedExtensionInfo::UnloadedExtensionInfo(
2956 const Extension* extension, 2957 const Extension* extension,
2957 Reason reason) 2958 Reason reason)
2958 : reason(reason), 2959 : reason(reason),
2959 already_disabled(false), 2960 already_disabled(false),
2960 extension(extension) {} 2961 extension(extension) {}
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698