Index: extensions/common/file_util.h |
diff --git a/extensions/common/file_util.h b/extensions/common/file_util.h |
index 770dd750b12cb21a1eda0173893f69b8776804f0..597d085bef0a7c935524041b9236ad854663554e 100644 |
--- a/extensions/common/file_util.h |
+++ b/extensions/common/file_util.h |
@@ -7,6 +7,11 @@ |
#include <map> |
#include <string> |
+#include <vector> |
+ |
+#include "base/files/file_path.h" |
+#include "base/memory/ref_counted.h" |
+#include "extensions/common/manifest.h" |
class ExtensionIconSet; |
class GURL; |
@@ -17,10 +22,78 @@ class FilePath; |
namespace extensions { |
class Extension; |
+struct InstallWarning; |
class MessageBundle; |
+// Utilities for manipulating the on-disk storage of extensions. |
namespace file_util { |
+extern const base::FilePath::CharType kTempDirectoryName[]; |
+ |
+// Copies |unpacked_source_dir| into the right location under |extensions_dir|. |
+// The destination directory is returned on success, or empty path is returned |
+// on failure. |
+base::FilePath InstallExtension(const base::FilePath& unpacked_source_dir, |
+ const std::string& id, |
+ const std::string& version, |
+ const base::FilePath& extensions_dir); |
+ |
+// Removes all versions of the extension with |id| from |extensions_dir|. |
+void UninstallExtension(const base::FilePath& extensions_dir, |
+ const std::string& id); |
+ |
+// Loads and validates an extension from the specified directory. Returns NULL |
+// on failure, with a description of the error in |error|. |
+scoped_refptr<Extension> LoadExtension(const base::FilePath& extension_root, |
+ Manifest::Location location, |
+ int flags, |
+ std::string* error); |
+ |
+// The same as LoadExtension except use the provided |extension_id|. |
+scoped_refptr<Extension> LoadExtension(const base::FilePath& extension_root, |
+ const std::string& extension_id, |
+ Manifest::Location location, |
+ int flags, |
+ std::string* error); |
+ |
+// Loads an extension manifest from the specified directory. Returns NULL |
+// on failure, with a description of the error in |error|. |
+base::DictionaryValue* LoadManifest(const base::FilePath& extension_root, |
+ std::string* error); |
+ |
+// Returns true if the given extension object is valid and consistent. |
+// May also append a series of warning messages to |warnings|, but they |
+// should not prevent the extension from running. |
+// |
+// Otherwise, returns false, and a description of the error is |
+// returned in |error|. |
+bool ValidateExtension(const Extension* extension, |
+ std::string* error, |
+ std::vector<InstallWarning>* warnings); |
+ |
+// Returns a list of files that contain private keys inside |extension_dir|. |
+std::vector<base::FilePath> FindPrivateKeyFiles( |
+ const base::FilePath& extension_dir); |
+ |
+// We need to reserve the namespace of entries that start with "_" for future |
+// use by Chrome. |
+// If any files or directories are found using "_" prefix and are not on |
+// reserved list we return false, and set error message. |
+bool CheckForIllegalFilenames(const base::FilePath& extension_path, |
+ std::string* error); |
+ |
+// Returns a path to a temporary directory for unpacking an extension that will |
+// be installed into |extensions_dir|. Creates the directory if necessary. |
+// The directory will be on the same file system as |extensions_dir| so |
+// that the extension directory can be efficiently renamed into place. Returns |
+// an empty file path on failure. |
+base::FilePath GetInstallTempDir(const base::FilePath& extensions_dir); |
+ |
+// Helper function to delete files. This is used to avoid ugly casts which |
+// would be necessary with PostMessage since base::Delete is overloaded. |
+// TODO(skerner): Make a version of Delete that is not overloaded in file_util. |
+void DeleteFile(const base::FilePath& path, bool recursive); |
+ |
// Get a relative file path from a chrome-extension:// URL. |
base::FilePath ExtensionURLToRelativeFilePath(const GURL& url); |