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 <stddef.h> | 7 #include <stddef.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include <map> | 10 #include <map> |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
49 namespace file_util { | 49 namespace file_util { |
50 namespace { | 50 namespace { |
51 | 51 |
52 enum SafeInstallationFlag { | 52 enum SafeInstallationFlag { |
53 DEFAULT, // Default case, controlled by a field trial. | 53 DEFAULT, // Default case, controlled by a field trial. |
54 DISABLED, // Safe installation is disabled. | 54 DISABLED, // Safe installation is disabled. |
55 ENABLED, // Safe installation is enabled. | 55 ENABLED, // Safe installation is enabled. |
56 }; | 56 }; |
57 SafeInstallationFlag g_use_safe_installation = DEFAULT; | 57 SafeInstallationFlag g_use_safe_installation = DEFAULT; |
58 | 58 |
| 59 // Returns true if the given file path exists and is not zero-length. |
| 60 bool ValidateFilePath(const base::FilePath& path) { |
| 61 int64_t size = 0; |
| 62 return base::PathExists(path) && base::GetFileSize(path, &size) && size != 0; |
| 63 } |
| 64 |
59 // Returns true if the extension installation should flush all files and the | 65 // Returns true if the extension installation should flush all files and the |
60 // directory. | 66 // directory. |
61 bool UseSafeInstallation() { | 67 bool UseSafeInstallation() { |
62 if (g_use_safe_installation == DEFAULT) { | 68 if (g_use_safe_installation == DEFAULT) { |
63 const char kFieldTrialName[] = "ExtensionUseSafeInstallation"; | 69 const char kFieldTrialName[] = "ExtensionUseSafeInstallation"; |
64 const char kEnable[] = "Enable"; | 70 const char kEnable[] = "Enable"; |
65 return base::FieldTrialList::FindFullName(kFieldTrialName) == kEnable; | 71 return base::FieldTrialList::FindFullName(kFieldTrialName) == kEnable; |
66 } | 72 } |
67 | 73 |
68 return g_use_safe_installation == ENABLED; | 74 return g_use_safe_installation == ENABLED; |
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
256 } | 262 } |
257 | 263 |
258 if (!root->IsType(base::Value::TYPE_DICTIONARY)) { | 264 if (!root->IsType(base::Value::TYPE_DICTIONARY)) { |
259 *error = l10n_util::GetStringUTF8(IDS_EXTENSION_MANIFEST_INVALID); | 265 *error = l10n_util::GetStringUTF8(IDS_EXTENSION_MANIFEST_INVALID); |
260 return NULL; | 266 return NULL; |
261 } | 267 } |
262 | 268 |
263 return base::DictionaryValue::From(std::move(root)); | 269 return base::DictionaryValue::From(std::move(root)); |
264 } | 270 } |
265 | 271 |
266 bool ValidateFilePath(const base::FilePath& path) { | |
267 int64_t size = 0; | |
268 return base::PathExists(path) && base::GetFileSize(path, &size) && size != 0; | |
269 } | |
270 | |
271 bool ValidateExtension(const Extension* extension, | 272 bool ValidateExtension(const Extension* extension, |
272 std::string* error, | 273 std::string* error, |
273 std::vector<InstallWarning>* warnings) { | 274 std::vector<InstallWarning>* warnings) { |
274 // Ask registered manifest handlers to validate their paths. | 275 // Ask registered manifest handlers to validate their paths. |
275 if (!ManifestHandler::ValidateExtension(extension, error, warnings)) | 276 if (!ManifestHandler::ValidateExtension(extension, error, warnings)) |
276 return false; | 277 return false; |
277 | 278 |
278 // Check children of extension root to see if any of them start with _ and is | 279 // Check children of extension root to see if any of them start with _ and is |
279 // not on the reserved list. We only warn, and do not block the loading of the | 280 // not on the reserved list. We only warn, and do not block the loading of the |
280 // extension. | 281 // extension. |
(...skipping 334 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
615 base::FilePath GetVerifiedContentsPath(const base::FilePath& extension_path) { | 616 base::FilePath GetVerifiedContentsPath(const base::FilePath& extension_path) { |
616 return extension_path.Append(kMetadataFolder) | 617 return extension_path.Append(kMetadataFolder) |
617 .Append(kVerifiedContentsFilename); | 618 .Append(kVerifiedContentsFilename); |
618 } | 619 } |
619 base::FilePath GetComputedHashesPath(const base::FilePath& extension_path) { | 620 base::FilePath GetComputedHashesPath(const base::FilePath& extension_path) { |
620 return extension_path.Append(kMetadataFolder).Append(kComputedHashesFilename); | 621 return extension_path.Append(kMetadataFolder).Append(kComputedHashesFilename); |
621 } | 622 } |
622 | 623 |
623 } // namespace file_util | 624 } // namespace file_util |
624 } // namespace extensions | 625 } // namespace extensions |
OLD | NEW |