[Extensions] Fix corrupt extensions metric enum.

Extensions.CorruptExtensionDisabledReason enum values do not match the
code enum ContentVerifyJob::FailureReason. This makes them match.

Also convert UMA macro to function per histogram guidelines.

Bug: N/A
Change-Id: I5c600c58e189a235949f2bb7bd143104cfa03d17
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5293465
Auto-Submit: Justin Lulejian <jlulejian@chromium.org>
Reviewed-by: Devlin Cronin <rdevlin.cronin@chromium.org>
Commit-Queue: Devlin Cronin <rdevlin.cronin@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1260191}
diff --git a/chrome/browser/extensions/chrome_content_verifier_delegate.cc b/chrome/browser/extensions/chrome_content_verifier_delegate.cc
index 636ce9c4..f1a1108 100644
--- a/chrome/browser/extensions/chrome_content_verifier_delegate.cc
+++ b/chrome/browser/extensions/chrome_content_verifier_delegate.cc
@@ -13,7 +13,7 @@
 #include "base/command_line.h"
 #include "base/containers/contains.h"
 #include "base/metrics/field_trial.h"
-#include "base/metrics/histogram_macros.h"
+#include "base/metrics/histogram_functions.h"
 #include "base/strings/escape.h"
 #include "base/strings/string_piece.h"
 #include "base/strings/string_util.h"
@@ -273,8 +273,8 @@
   DCHECK(should_disable);
   service->DisableExtension(extension_id, disable_reason::DISABLE_CORRUPTED);
   ExtensionPrefs::Get(context_)->IncrementPref(kCorruptedDisableCount);
-  UMA_HISTOGRAM_ENUMERATION("Extensions.CorruptExtensionDisabledReason", reason,
-                            ContentVerifyJob::FAILURE_REASON_MAX);
+  base::UmaHistogramEnumeration("Extensions.CorruptExtensionDisabledReason",
+                                reason, ContentVerifyJob::FAILURE_REASON_MAX);
 }
 
 void ChromeContentVerifierDelegate::Shutdown() {}
diff --git a/extensions/browser/content_verify_job.h b/extensions/browser/content_verify_job.h
index 329d3650..78fea420 100644
--- a/extensions/browser/content_verify_job.h
+++ b/extensions/browser/content_verify_job.h
@@ -39,6 +39,9 @@
 // can be created and used on any thread.
 class ContentVerifyJob : public base::RefCountedThreadSafe<ContentVerifyJob> {
  public:
+  // Used in UMA metrics. Ensure this stays in sync with
+  // CorruptExtensionDisabledReason in
+  // //tools/metrics/histograms/metadata/extensions/enums.xml.
   enum FailureReason {
     // No failure.
     NONE,
diff --git a/tools/metrics/histograms/metadata/extensions/enums.xml b/tools/metrics/histograms/metadata/extensions/enums.xml
index f777bf2c..18e2cd83 100644
--- a/tools/metrics/histograms/metadata/extensions/enums.xml
+++ b/tools/metrics/histograms/metadata/extensions/enums.xml
@@ -57,8 +57,9 @@
   </summary>
   <int value="0" label="Unknown Reason"/>
   <int value="1" label="Missing All Hashes"/>
-  <int value="2" label="Missing File Hash"/>
-  <int value="3" label="Hash Mismatch"/>
+  <int value="2" label="Corrupted Hashes"/>
+  <int value="3" label="No Hashes For File"/>
+  <int value="4" label="Hash Mismatch"/>
 </enum>
 
 <enum name="DeclarativeAPIFunctionType">
diff --git a/tools/metrics/histograms/metadata/extensions/histograms.xml b/tools/metrics/histograms/metadata/extensions/histograms.xml
index 534a74a..a7a1c8c9 100644
--- a/tools/metrics/histograms/metadata/extensions/histograms.xml
+++ b/tools/metrics/histograms/metadata/extensions/histograms.xml
@@ -464,8 +464,7 @@
 
 <histogram name="Extensions.CorruptExtensionDisabledReason"
     enum="CorruptExtensionDisabledReason" expires_after="2024-11-20">
-  <owner>lazyboy@chromium.org</owner>
-  <owner>rockot@chromium.org</owner>
+  <owner>jlulejian@chromium.org</owner>
   <owner>extensions-core@chromium.org</owner>
   <summary>
     The reason why an extension was detected to be corrupted. Recorded each time