Index: chrome/browser/extensions/installed_loader.cc |
diff --git a/chrome/browser/extensions/installed_loader.cc b/chrome/browser/extensions/installed_loader.cc |
index feb8fe7d4880b0352bbec3d73b1912e964cfeeaa..49fc5277bf5d20e7673da83485f7a8b13de915e2 100644 |
--- a/chrome/browser/extensions/installed_loader.cc |
+++ b/chrome/browser/extensions/installed_loader.cc |
@@ -6,6 +6,7 @@ |
#include "base/files/file_path.h" |
#include "base/metrics/histogram.h" |
+#include "base/metrics/sparse_histogram.h" |
#include "base/strings/stringprintf.h" |
#include "base/strings/utf_string_conversions.h" |
#include "base/threading/thread_restrictions.h" |
@@ -134,6 +135,27 @@ void RecordCreationFlags(const Extension* extension) { |
} |
} |
+// Helper to record a single disable reason histogram value (see |
+// RecordDisableReasons below). |
+void RecordDisbleReasonHistogram(int reason) { |
+ UMA_HISTOGRAM_SPARSE_SLOWLY("Extensions.DisableReason", reason); |
+} |
+ |
+// Records the disable reasons for a single extension grouped by |
+// Extension::DisableReason. |
+void RecordDisableReasons(int reasons) { |
+ // |reasons| is a bitmask with values from Extension::DisabledReason |
+ // which are increasing powers of 2. |
+ if (reasons == Extension::DISABLE_NONE) { |
+ RecordDisbleReasonHistogram(Extension::DISABLE_NONE); |
+ return; |
+ } |
+ for (int reason = 1; reason < Extension::DISABLE_REASON_LAST; reason <<= 1) { |
+ if (reasons & reason) |
+ RecordDisbleReasonHistogram(reason); |
+ } |
+} |
+ |
} // namespace |
InstalledLoader::InstalledLoader(ExtensionService* extension_service) |
@@ -473,6 +495,7 @@ void InstalledLoader::LoadAllExtensions() { |
if (extension_prefs_->DidExtensionEscalatePermissions((*ex)->id())) { |
++disabled_for_permissions_count; |
} |
+ RecordDisableReasons(extension_prefs_->GetDisableReasons((*ex)->id())); |
if (Manifest::IsExternalLocation((*ex)->location())) { |
// See loop above for ENABLED. |
if (ManifestURL::UpdatesFromGallery(*ex)) { |
@@ -542,6 +565,8 @@ void InstalledLoader::LoadAllExtensions() { |
UMA_HISTOGRAM_COUNTS_100("Extensions.FileAccessNotAllowed", |
file_access_not_allowed_count); |
} |
+ UMA_HISTOGRAM_COUNTS_100("Extensions.CorruptExtensionTotalDisables", |
+ extension_prefs_->GetCorruptedDisableCount()); |
} |
int InstalledLoader::GetCreationFlags(const ExtensionInfo* info) { |