| 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 189 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 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 Loading... |
| 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 Loading... |
| 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) {} |
| OLD | NEW |