| OLD | NEW |
| 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 Loading... |
| 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_NONE }, | 295 { kClipboardReadPermission, PermissionMessage::ID_NONE }, |
| 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 { kWebstorePrivatePermission, PermissionMessage::ID_NONE }, |
| 313 { kWebSocketProxyPrivatePermission, PermissionMessage::ID_NONE }, |
| 311 }; | 314 }; |
| 312 const size_t Extension::kNumPermissions = | 315 const size_t Extension::kNumPermissions = |
| 313 arraysize(Extension::kPermissions); | 316 arraysize(Extension::kPermissions); |
| 314 | 317 |
| 315 const char* const Extension::kHostedAppPermissionNames[] = { | 318 const char* const Extension::kHostedAppPermissionNames[] = { |
| 316 Extension::kBackgroundPermission, | 319 Extension::kBackgroundPermission, |
| 317 Extension::kGeolocationPermission, | 320 Extension::kGeolocationPermission, |
| 318 Extension::kNotificationPermission, | 321 Extension::kNotificationPermission, |
| 319 Extension::kUnlimitedStoragePermission, | 322 Extension::kUnlimitedStoragePermission, |
| 320 Extension::kWebstorePrivatePermission, | 323 Extension::kWebstorePrivatePermission, |
| 321 }; | 324 }; |
| 322 const size_t Extension::kNumHostedAppPermissions = | 325 const size_t Extension::kNumHostedAppPermissions = |
| 323 arraysize(Extension::kHostedAppPermissionNames); | 326 arraysize(Extension::kHostedAppPermissionNames); |
| 324 | 327 |
| 325 const char* const Extension::kComponentPrivatePermissionNames[] = { | 328 const char* const Extension::kComponentPrivatePermissionNames[] = { |
| 326 Extension::kFileBrowserPrivatePermission, | 329 Extension::kFileBrowserPrivatePermission, |
| 327 Extension::kWebstorePrivatePermission, | 330 Extension::kWebstorePrivatePermission, |
| 328 Extension::kChromeosInfoPrivatePermissions, | 331 Extension::kChromeosInfoPrivatePermission, |
| 332 Extension::kWebSocketProxyPrivatePermission, |
| 329 }; | 333 }; |
| 330 const size_t Extension::kNumComponentPrivatePermissions = | 334 const size_t Extension::kNumComponentPrivatePermissions = |
| 331 arraysize(Extension::kComponentPrivatePermissionNames); | 335 arraysize(Extension::kComponentPrivatePermissionNames); |
| 332 | 336 |
| 333 // We purposefully don't put this into kPermissionNames. | 337 // We purposefully don't put this into kPermissionNames. |
| 334 const char Extension::kOldUnlimitedStoragePermission[] = "unlimited_storage"; | 338 const char Extension::kOldUnlimitedStoragePermission[] = "unlimited_storage"; |
| 335 | 339 |
| 336 const int Extension::kValidWebExtentSchemes = | 340 const int Extension::kValidWebExtentSchemes = |
| 337 URLPattern::SCHEME_HTTP | URLPattern::SCHEME_HTTPS; | 341 URLPattern::SCHEME_HTTP | URLPattern::SCHEME_HTTPS; |
| 338 | 342 |
| (...skipping 2418 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2757 for (UserScriptList::const_iterator content_script = | 2761 for (UserScriptList::const_iterator content_script = |
| 2758 content_scripts().begin(); | 2762 content_scripts().begin(); |
| 2759 content_script != content_scripts().end(); ++content_script) { | 2763 content_script != content_scripts().end(); ++content_script) { |
| 2760 UserScript::PatternList::const_iterator pattern = | 2764 UserScript::PatternList::const_iterator pattern = |
| 2761 content_script->url_patterns().begin(); | 2765 content_script->url_patterns().begin(); |
| 2762 for (; pattern != content_script->url_patterns().end(); ++pattern) | 2766 for (; pattern != content_script->url_patterns().end(); ++pattern) |
| 2763 effective_host_permissions_.AddPattern(*pattern); | 2767 effective_host_permissions_.AddPattern(*pattern); |
| 2764 } | 2768 } |
| 2765 } | 2769 } |
| 2766 | 2770 |
| 2767 bool Extension::IsComponentOnlyPermission | 2771 bool Extension::IsComponentOnlyPermission(const std::string& permission) const { |
| 2768 (const std::string& permission) const { | |
| 2769 if (location() == Extension::COMPONENT) | 2772 if (location() == Extension::COMPONENT) |
| 2770 return true; | 2773 return true; |
| 2771 | 2774 |
| 2772 // Non-component extensions are not allowed to access private apis. | 2775 // Non-component extensions are not allowed to access private apis. |
| 2773 for (size_t i = 0; i < Extension::kNumComponentPrivatePermissions; ++i) { | 2776 for (size_t i = 0; i < Extension::kNumComponentPrivatePermissions; ++i) { |
| 2774 if (permission == Extension::kComponentPrivatePermissionNames[i]) | 2777 if (permission == Extension::kComponentPrivatePermissionNames[i]) |
| 2775 return false; | 2778 return false; |
| 2776 } | 2779 } |
| 2777 return true; | 2780 return true; |
| 2778 } | 2781 } |
| (...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2950 | 2953 |
| 2951 UninstalledExtensionInfo::~UninstalledExtensionInfo() {} | 2954 UninstalledExtensionInfo::~UninstalledExtensionInfo() {} |
| 2952 | 2955 |
| 2953 | 2956 |
| 2954 UnloadedExtensionInfo::UnloadedExtensionInfo( | 2957 UnloadedExtensionInfo::UnloadedExtensionInfo( |
| 2955 const Extension* extension, | 2958 const Extension* extension, |
| 2956 Reason reason) | 2959 Reason reason) |
| 2957 : reason(reason), | 2960 : reason(reason), |
| 2958 already_disabled(false), | 2961 already_disabled(false), |
| 2959 extension(extension) {} | 2962 extension(extension) {} |
| OLD | NEW |