[SAA] Remove unnecessary method and fix histogram

OBSOLETE_HISTOGRAMS=API.StorageAccess.RequestStorageAccess is obsolete since the buckets have changed (new grants and existing grants are now indistinguishable in the renderer)

Bug: 1464619
Change-Id: If5747acc48bfc8576effb44b312bce8d967cecce
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4727813
Reviewed-by: Shuran Huang <shuuran@chromium.org>
Reviewed-by: Ayu Ishii <ayui@chromium.org>
Reviewed-by: Dominic Farolino <dom@chromium.org>
Auto-Submit: Chris Fredrickson <cfredric@chromium.org>
Commit-Queue: Ayu Ishii <ayui@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1177305}
diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink/renderer/core/dom/document.cc
index 1334f4a..2ebdf863 100644
--- a/third_party/blink/renderer/core/dom/document.cc
+++ b/third_party/blink/renderer/core/dom/document.cc
@@ -394,10 +394,11 @@
   REJECTED_INSECURE_CONTEXT = 9,
   APPROVED_PRIMARY_FRAME = 10,
   REJECTED_CREDENTIALLESS_IFRAME = 11,
-  kMaxValue = REJECTED_CREDENTIALLESS_IFRAME,
+  APPROVED_NEW_OR_EXISTING_GRANT = 12,
+  kMaxValue = APPROVED_NEW_OR_EXISTING_GRANT,
 };
 void FireRequestStorageAccessHistogram(RequestStorageResult result) {
-  base::UmaHistogramEnumeration("API.StorageAccess.RequestStorageAccess",
+  base::UmaHistogramEnumeration("API.StorageAccess.RequestStorageAccess2",
                                 result);
 }
 
@@ -6515,7 +6516,7 @@
       ->RequestPermission(
           std::move(descriptor),
           LocalFrame::HasTransientUserActivation(GetFrame()),
-          WTF::BindOnce(&Document::OnRequestedStorageAccessPermissionState,
+          WTF::BindOnce(&Document::ProcessStorageAccessPermissionState,
                         WrapPersistent(this), WrapPersistent(resolver)));
 
   return promise;
@@ -6560,19 +6561,6 @@
               WrapPersistent(this), WrapPersistent(resolver)));
 }
 
-void Document::OnRequestedStorageAccessPermissionState(
-    ScriptPromiseResolver* resolver,
-    mojom::blink::PermissionStatus status) {
-  DCHECK(resolver);
-  DCHECK(GetFrame());
-  ScriptState* script_state = resolver->GetScriptState();
-  DCHECK(script_state);
-  ScriptState::Scope scope(script_state);
-
-  ProcessStorageAccessPermissionState(resolver,
-                                      /*use_existing_status=*/false, status);
-}
-
 void Document::OnRequestedTopLevelStorageAccessPermissionState(
     ScriptPromiseResolver* resolver,
     mojom::blink::PermissionStatus status) {
@@ -6589,19 +6577,16 @@
 
 void Document::ProcessStorageAccessPermissionState(
     ScriptPromiseResolver* resolver,
-    bool use_existing_status,
     mojom::blink::PermissionStatus status) {
   DCHECK(resolver);
   DCHECK(GetFrame());
+  ScriptState* script_state = resolver->GetScriptState();
+  DCHECK(script_state);
+  ScriptState::Scope scope(script_state);
 
   if (status == mojom::blink::PermissionStatus::GRANTED) {
-    if (use_existing_status) {
-      FireRequestStorageAccessHistogram(
-          RequestStorageResult::APPROVED_EXISTING_ACCESS);
-    } else {
-      FireRequestStorageAccessHistogram(
-          RequestStorageResult::APPROVED_NEW_GRANT);
-    }
+    FireRequestStorageAccessHistogram(
+        RequestStorageResult::APPROVED_NEW_OR_EXISTING_GRANT);
     dom_window_->SetHasStorageAccess();
     resolver->Resolve();
   } else {
@@ -6612,8 +6597,6 @@
         mojom::blink::ConsoleMessageSource::kSecurity,
         mojom::blink::ConsoleMessageLevel::kError,
         "requestStorageAccess: Permission denied."));
-    ScriptState* script_state = resolver->GetScriptState();
-    DCHECK(script_state);
     resolver->Reject(V8ThrowDOMException::CreateOrEmpty(
         script_state->GetIsolate(), DOMExceptionCode::kNotAllowedError,
         "requestStorageAccess not allowed"));
diff --git a/third_party/blink/renderer/core/dom/document.h b/third_party/blink/renderer/core/dom/document.h
index 88a3b5a..49023694 100644
--- a/third_party/blink/renderer/core/dom/document.h
+++ b/third_party/blink/renderer/core/dom/document.h
@@ -2191,12 +2191,6 @@
       mojom::blink::PermissionDescriptorPtr descriptor,
       mojom::blink::PermissionStatus previous_status);
 
-  // Wraps `ProcessStorageAccessPermissionState` to handle the requested
-  // permission status.
-  void OnRequestedStorageAccessPermissionState(
-      ScriptPromiseResolver* resolver,
-      mojom::blink::PermissionStatus status);
-
   // Similar to `OnRequestedStorageAccessPermissionState`, but for the top-level
   // variant. Used to react to the result of a permission request.
   void OnRequestedTopLevelStorageAccessPermissionState(
@@ -2207,7 +2201,6 @@
   // otherwise, and consumes user activation.
   void ProcessStorageAccessPermissionState(
       ScriptPromiseResolver* resolver,
-      bool use_existing_status,
       mojom::blink::PermissionStatus status);
 
   // Similar to `ProcessStorageAccessPermissionState`, but for the top-level
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml
index 3bcb5ffd..3344cba 100644
--- a/tools/metrics/histograms/enums.xml
+++ b/tools/metrics/histograms/enums.xml
@@ -92816,6 +92816,7 @@
   <int value="9" label="Rejected due to insecure context"/>
   <int value="10" label="Approved due to being called from top-level frame"/>
   <int value="11" label="Rejected due to credentialless iframe"/>
+  <int value="12" label="Approved with a new or existing grant"/>
 </enum>
 
 <enum name="ResolutionCategory">
diff --git a/tools/metrics/histograms/metadata/storage/histograms.xml b/tools/metrics/histograms/metadata/storage/histograms.xml
index c51f22a..c062ac24 100644
--- a/tools/metrics/histograms/metadata/storage/histograms.xml
+++ b/tools/metrics/histograms/metadata/storage/histograms.xml
@@ -121,16 +121,17 @@
   </summary>
 </histogram>
 
-<histogram name="API.StorageAccess.RequestStorageAccess"
+<histogram name="API.StorageAccess.RequestStorageAccess2"
     enum="RequestStorageResult" expires_after="2023-12-24">
   <owner>mkwst@chromium.org</owner>
+  <owner>cfredric@chromium.org</owner>
   <owner>brandm@microsoft.com</owner>
   <summary>
     Records requests to use document.requestStorageAccess and reasons the
     request may be approved or rejected.
 
-    Warning: this histogram was expired from 2020-11-27 to 08-12-2022; data may
-    be missing.
+    Recorded by the renderer exactly once for each invocation of
+    document.requestStorageAccess.
   </summary>
 </histogram>