| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "extensions/common/file_util.h" | 5 #include "extensions/common/file_util.h" |
| 6 | 6 |
| 7 #include <map> | 7 #include <map> |
| 8 #include <set> | 8 #include <set> |
| 9 #include <string> | 9 #include <string> |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 187 int flags, | 187 int flags, |
| 188 std::string* error) { | 188 std::string* error) { |
| 189 return LoadExtension(extension_path, std::string(), location, flags, error); | 189 return LoadExtension(extension_path, std::string(), location, flags, error); |
| 190 } | 190 } |
| 191 | 191 |
| 192 scoped_refptr<Extension> LoadExtension(const base::FilePath& extension_path, | 192 scoped_refptr<Extension> LoadExtension(const base::FilePath& extension_path, |
| 193 const std::string& extension_id, | 193 const std::string& extension_id, |
| 194 Manifest::Location location, | 194 Manifest::Location location, |
| 195 int flags, | 195 int flags, |
| 196 std::string* error) { | 196 std::string* error) { |
| 197 scoped_ptr<base::DictionaryValue> manifest( | 197 scoped_ptr<base::DictionaryValue> manifest = |
| 198 LoadManifest(extension_path, error)); | 198 LoadManifest(extension_path, error); |
| 199 if (!manifest.get()) | 199 if (!manifest.get()) |
| 200 return NULL; | 200 return NULL; |
| 201 if (!extension_l10n_util::LocalizeExtension( | 201 if (!extension_l10n_util::LocalizeExtension( |
| 202 extension_path, manifest.get(), error)) { | 202 extension_path, manifest.get(), error)) { |
| 203 return NULL; | 203 return NULL; |
| 204 } | 204 } |
| 205 | 205 |
| 206 scoped_refptr<Extension> extension(Extension::Create( | 206 scoped_refptr<Extension> extension(Extension::Create( |
| 207 extension_path, location, *manifest, flags, extension_id, error)); | 207 extension_path, location, *manifest, flags, extension_id, error)); |
| 208 if (!extension.get()) | 208 if (!extension.get()) |
| 209 return NULL; | 209 return NULL; |
| 210 | 210 |
| 211 std::vector<InstallWarning> warnings; | 211 std::vector<InstallWarning> warnings; |
| 212 if (!ValidateExtension(extension.get(), error, &warnings)) | 212 if (!ValidateExtension(extension.get(), error, &warnings)) |
| 213 return NULL; | 213 return NULL; |
| 214 extension->AddInstallWarnings(warnings); | 214 extension->AddInstallWarnings(warnings); |
| 215 | 215 |
| 216 return extension; | 216 return extension; |
| 217 } | 217 } |
| 218 | 218 |
| 219 base::DictionaryValue* LoadManifest(const base::FilePath& extension_path, | 219 scoped_ptr<base::DictionaryValue> LoadManifest( |
| 220 std::string* error) { | 220 const base::FilePath& extension_path, |
| 221 std::string* error) { |
| 221 return LoadManifest(extension_path, kManifestFilename, error); | 222 return LoadManifest(extension_path, kManifestFilename, error); |
| 222 } | 223 } |
| 223 | 224 |
| 224 base::DictionaryValue* LoadManifest( | 225 scoped_ptr<base::DictionaryValue> LoadManifest( |
| 225 const base::FilePath& extension_path, | 226 const base::FilePath& extension_path, |
| 226 const base::FilePath::CharType* manifest_filename, | 227 const base::FilePath::CharType* manifest_filename, |
| 227 std::string* error) { | 228 std::string* error) { |
| 228 base::FilePath manifest_path = extension_path.Append(manifest_filename); | 229 base::FilePath manifest_path = extension_path.Append(manifest_filename); |
| 229 if (!base::PathExists(manifest_path)) { | 230 if (!base::PathExists(manifest_path)) { |
| 230 *error = l10n_util::GetStringUTF8(IDS_EXTENSION_MANIFEST_UNREADABLE); | 231 *error = l10n_util::GetStringUTF8(IDS_EXTENSION_MANIFEST_UNREADABLE); |
| 231 return NULL; | 232 return NULL; |
| 232 } | 233 } |
| 233 | 234 |
| 234 JSONFileValueDeserializer deserializer(manifest_path); | 235 JSONFileValueDeserializer deserializer(manifest_path); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 245 "%s %s", manifest_errors::kManifestParseError, error->c_str()); | 246 "%s %s", manifest_errors::kManifestParseError, error->c_str()); |
| 246 } | 247 } |
| 247 return NULL; | 248 return NULL; |
| 248 } | 249 } |
| 249 | 250 |
| 250 if (!root->IsType(base::Value::TYPE_DICTIONARY)) { | 251 if (!root->IsType(base::Value::TYPE_DICTIONARY)) { |
| 251 *error = l10n_util::GetStringUTF8(IDS_EXTENSION_MANIFEST_INVALID); | 252 *error = l10n_util::GetStringUTF8(IDS_EXTENSION_MANIFEST_INVALID); |
| 252 return NULL; | 253 return NULL; |
| 253 } | 254 } |
| 254 | 255 |
| 255 return static_cast<base::DictionaryValue*>(root.release()); | 256 return base::DictionaryValue::From(root.Pass()); |
| 256 } | 257 } |
| 257 | 258 |
| 258 bool ValidateExtension(const Extension* extension, | 259 bool ValidateExtension(const Extension* extension, |
| 259 std::string* error, | 260 std::string* error, |
| 260 std::vector<InstallWarning>* warnings) { | 261 std::vector<InstallWarning>* warnings) { |
| 261 // Ask registered manifest handlers to validate their paths. | 262 // Ask registered manifest handlers to validate their paths. |
| 262 if (!ManifestHandler::ValidateExtension(extension, error, warnings)) | 263 if (!ManifestHandler::ValidateExtension(extension, error, warnings)) |
| 263 return false; | 264 return false; |
| 264 | 265 |
| 265 // Check children of extension root to see if any of them start with _ and is | 266 // Check children of extension root to see if any of them start with _ and is |
| (...skipping 336 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 602 base::FilePath GetVerifiedContentsPath(const base::FilePath& extension_path) { | 603 base::FilePath GetVerifiedContentsPath(const base::FilePath& extension_path) { |
| 603 return extension_path.Append(kMetadataFolder) | 604 return extension_path.Append(kMetadataFolder) |
| 604 .Append(kVerifiedContentsFilename); | 605 .Append(kVerifiedContentsFilename); |
| 605 } | 606 } |
| 606 base::FilePath GetComputedHashesPath(const base::FilePath& extension_path) { | 607 base::FilePath GetComputedHashesPath(const base::FilePath& extension_path) { |
| 607 return extension_path.Append(kMetadataFolder).Append(kComputedHashesFilename); | 608 return extension_path.Append(kMetadataFolder).Append(kComputedHashesFilename); |
| 608 } | 609 } |
| 609 | 610 |
| 610 } // namespace file_util | 611 } // namespace file_util |
| 611 } // namespace extensions | 612 } // namespace extensions |
| OLD | NEW |