Add failure reason histogram to SandboxedExtensionUnpacker
BUG=none
TEST= Manually fake failures, SandboxedExtensionUnpackerTest.* .
Review URL: http://codereview.chromium.org/6294014
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@73145 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/extensions/sandboxed_extension_unpacker.h b/chrome/browser/extensions/sandboxed_extension_unpacker.h
index 455e3f6f..ee78a8e8 100644
--- a/chrome/browser/extensions/sandboxed_extension_unpacker.h
+++ b/chrome/browser/extensions/sandboxed_extension_unpacker.h
@@ -101,6 +101,65 @@
private:
class ProcessHostClient;
+
+ // Enumerate all the ways unpacking can fail. Calls to ReportFailure()
+ // take a failure reason as an argument, and put it in histogram
+ // Extensions.SandboxUnpackFailureReason.
+ enum FailureReason {
+ // SandboxedExtensionUnpacker::CreateTempDirectory()
+ COULD_NOT_GET_TEMP_DIRECTORY,
+ COULD_NOT_CREATE_TEMP_DIRECTORY,
+
+ // SandboxedExtensionUnpacker::Start()
+ FAILED_TO_COPY_EXTENSION_FILE_TO_TEMP_DIRECTORY,
+ COULD_NOT_GET_SANDBOX_FRIENDLY_PATH,
+
+ // SandboxedExtensionUnpacker::OnUnpackExtensionSucceeded()
+ COULD_NOT_LOCALIZE_EXTENSION,
+ INVALID_MANIFEST,
+
+ //SandboxedExtensionUnpacker::OnUnpackExtensionFailed()
+ UNPACKER_CLIENT_FAILED,
+
+ // SandboxedExtensionUnpacker::OnProcessCrashed()
+ UTILITY_PROCESS_CRASHED_WHILE_TRYING_TO_INSTALL,
+
+ // SandboxedExtensionUnpacker::ValidateSignature()
+ CRX_FILE_NOT_READABLE,
+ CRX_HEADER_INVALID,
+ CRX_MAGIC_NUMBER_INVALID,
+ CRX_VERSION_NUMBER_INVALID,
+ CRX_EXCESSIVELY_LARGE_KEY_OR_SIGNATURE,
+ CRX_ZERO_KEY_LENGTH,
+ CRX_ZERO_SIGNATURE_LENGTH,
+ CRX_PUBLIC_KEY_INVALID,
+ CRX_SIGNATURE_INVALID,
+ CRX_SIGNATURE_VERIFICATION_INITIALIZATION_FAILED,
+ CRX_SIGNATURE_VERIFICATION_FAILED,
+
+ // SandboxedExtensionUnpacker::RewriteManifestFile()
+ ERROR_SERIALIZING_MANIFEST_JSON,
+ ERROR_SAVING_MANIFEST_JSON,
+
+ // SandboxedExtensionUnpacker::RewriteImageFiles()
+ COULD_NOT_READ_IMAGE_DATA_FROM_DISK,
+ DECODED_IMAGES_DO_NOT_MATCH_THE_MANIFEST,
+ INVALID_PATH_FOR_BROWSER_IMAGE,
+ ERROR_REMOVING_OLD_IMAGE_FILE,
+ INVALID_PATH_FOR_BITMAP_IMAGE,
+ ERROR_RE_ENCODING_THEME_IMAGE,
+ ERROR_SAVING_THEME_IMAGE,
+
+ // SandboxedExtensionUnpacker::RewriteCatalogFiles()
+ COULD_NOT_READ_CATALOG_DATA_FROM_DISK,
+ INVALID_CATALOG_DATA,
+ INVALID_PATH_FOR_CATALOG,
+ ERROR_SERIALIZING_CATALOG,
+ ERROR_SAVING_CATALOG,
+
+ NUM_FAILURE_REASONS
+ };
+
friend class ProcessHostClient;
friend class SandboxedExtensionUnpackerTest;
@@ -129,7 +188,7 @@
virtual void OnUnpackExtensionFailed(const std::string& error_message);
virtual void OnProcessCrashed(int exit_code);
- void ReportFailure(const std::string& message);
+ void ReportFailure(FailureReason reason, const std::string& message);
void ReportSuccess();
// Overwrites original manifest with safe result from utility process.