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 |