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 1157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1168 return true; | 1168 return true; |
1169 | 1169 |
1170 for (DictionaryValue::key_iterator key = manifest->begin_keys(); | 1170 for (DictionaryValue::key_iterator key = manifest->begin_keys(); |
1171 key != manifest->end_keys(); ++key) { | 1171 key != manifest->end_keys(); ++key) { |
1172 if (!IsBaseCrxKey(*key) && | 1172 if (!IsBaseCrxKey(*key) && |
1173 *key != keys::kApp && | 1173 *key != keys::kApp && |
1174 *key != keys::kPermissions && | 1174 *key != keys::kPermissions && |
1175 *key != keys::kOptionalPermissions && | 1175 *key != keys::kOptionalPermissions && |
1176 *key != keys::kOptionsPage && | 1176 *key != keys::kOptionsPage && |
1177 *key != keys::kBackground && | 1177 *key != keys::kBackground && |
1178 *key != keys::kOfflineEnabled) { | 1178 *key != keys::kOfflineEnabled && |
| 1179 *key != keys::kMinimumChromeVersion && |
| 1180 *key != keys::kRequirements) { |
1179 *error = ExtensionErrorUtils::FormatErrorMessage( | 1181 *error = ExtensionErrorUtils::FormatErrorMessage( |
1180 errors::kHostedAppsCannotIncludeExtensionFeatures, *key); | 1182 errors::kHostedAppsCannotIncludeExtensionFeatures, *key); |
1181 return false; | 1183 return false; |
1182 } | 1184 } |
1183 } | 1185 } |
1184 | 1186 |
1185 return true; | 1187 return true; |
1186 } | 1188 } |
1187 | 1189 |
1188 // static | 1190 // static |
(...skipping 1103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2292 } | 2294 } |
2293 | 2295 |
2294 // Initialize offline-enabled status. Defaults to false. | 2296 // Initialize offline-enabled status. Defaults to false. |
2295 if (source.HasKey(keys::kOfflineEnabled)) { | 2297 if (source.HasKey(keys::kOfflineEnabled)) { |
2296 if (!source.GetBoolean(keys::kOfflineEnabled, &offline_enabled_)) { | 2298 if (!source.GetBoolean(keys::kOfflineEnabled, &offline_enabled_)) { |
2297 *error = errors::kInvalidOfflineEnabled; | 2299 *error = errors::kInvalidOfflineEnabled; |
2298 return false; | 2300 return false; |
2299 } | 2301 } |
2300 } | 2302 } |
2301 | 2303 |
| 2304 // Initialize requirements (optional). Not actually persisted (they're only |
| 2305 // used by the store), but still validated. |
| 2306 if (source.HasKey(keys::kRequirements)) { |
| 2307 DictionaryValue* requirements_value = NULL; |
| 2308 if (!source.GetDictionary(keys::kRequirements, &requirements_value)) { |
| 2309 *error = errors::kInvalidRequirements; |
| 2310 return false; |
| 2311 } |
| 2312 |
| 2313 for (DictionaryValue::key_iterator it = requirements_value->begin_keys(); |
| 2314 it != requirements_value->end_keys(); ++it) { |
| 2315 DictionaryValue* requirement_value; |
| 2316 if (!requirements_value->GetDictionaryWithoutPathExpansion( |
| 2317 *it, &requirement_value)) { |
| 2318 *error = ExtensionErrorUtils::FormatErrorMessage( |
| 2319 errors::kInvalidRequirement, *it); |
| 2320 return false; |
| 2321 } |
| 2322 } |
| 2323 } |
| 2324 |
2302 if (HasMultipleUISurfaces()) { | 2325 if (HasMultipleUISurfaces()) { |
2303 *error = errors::kOneUISurfaceOnly; | 2326 *error = errors::kOneUISurfaceOnly; |
2304 return false; | 2327 return false; |
2305 } | 2328 } |
2306 | 2329 |
2307 runtime_data_.SetActivePermissions(new ExtensionPermissionSet( | 2330 runtime_data_.SetActivePermissions(new ExtensionPermissionSet( |
2308 this, api_permissions, host_permissions)); | 2331 this, api_permissions, host_permissions)); |
2309 required_permission_set_ = new ExtensionPermissionSet( | 2332 required_permission_set_ = new ExtensionPermissionSet( |
2310 this, api_permissions, host_permissions); | 2333 this, api_permissions, host_permissions); |
2311 optional_permission_set_ = new ExtensionPermissionSet( | 2334 optional_permission_set_ = new ExtensionPermissionSet( |
(...skipping 585 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2897 already_disabled(false), | 2920 already_disabled(false), |
2898 extension(extension) {} | 2921 extension(extension) {} |
2899 | 2922 |
2900 UpdatedExtensionPermissionsInfo::UpdatedExtensionPermissionsInfo( | 2923 UpdatedExtensionPermissionsInfo::UpdatedExtensionPermissionsInfo( |
2901 const Extension* extension, | 2924 const Extension* extension, |
2902 const ExtensionPermissionSet* permissions, | 2925 const ExtensionPermissionSet* permissions, |
2903 Reason reason) | 2926 Reason reason) |
2904 : reason(reason), | 2927 : reason(reason), |
2905 extension(extension), | 2928 extension(extension), |
2906 permissions(permissions) {} | 2929 permissions(permissions) {} |
OLD | NEW |