[signin] Add metrics to indicate the OAuth outages in Dice.
(cherry picked from commit c20c4f1610b3d3b8d0e0c01d6d84c60067a970f2)
Bug: 1115247
Change-Id: I021ed4188b4aca948b54df2af0117c6a5ce9f398
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2445490
Commit-Queue: David Roger <[email protected]>
Reviewed-by: Brian White <[email protected]>
Reviewed-by: Monica Basta <[email protected]>
Reviewed-by: David Roger <[email protected]>
Cr-Original-Commit-Position: refs/heads/master@{#814620}
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2460731
Cr-Commit-Position: refs/branch-heads/4280@{#141}
Cr-Branched-From: ea420fb963f9658c9969b6513c56b8f47efa1a2a-refs/heads/master@{#812852}
diff --git a/components/signin/core/browser/dice_header_helper.cc b/components/signin/core/browser/dice_header_helper.cc
index 1de3ed9..0b0b4a14 100644
--- a/components/signin/core/browser/dice_header_helper.cc
+++ b/components/signin/core/browser/dice_header_helper.cc
@@ -7,6 +7,7 @@
#include <vector>
#include "base/logging.h"
+#include "base/metrics/histogram_functions.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/string_util.h"
#include "base/strings/stringprintf.h"
@@ -120,12 +121,18 @@
return DiceResponseParams();
}
- if (params.signin_info && params.signin_info->authorization_code.empty() &&
- !params.signin_info->no_authorization_code) {
- DLOG(WARNING)
- << "Missing authorization code and no authorization code headers"
- << "in Dice SIGNIN header: " << header_value;
- return DiceResponseParams();
+ if (params.signin_info) {
+ if (params.signin_info->authorization_code.empty() &&
+ !params.signin_info->no_authorization_code) {
+ DLOG(WARNING)
+ << "Missing authorization code and no authorization code headers"
+ << "in Dice SIGNIN header: " << header_value;
+ return DiceResponseParams();
+ }
+ // Uma histogram that records whether the authorization code was present or
+ // not.
+ base::UmaHistogramBoolean("Signin.DiceAuthorizationCode",
+ !params.signin_info->authorization_code.empty());
}
return params;
diff --git a/components/signin/core/browser/signin_header_helper_unittest.cc b/components/signin/core/browser/signin_header_helper_unittest.cc
index 4629913..83f44c4 100644
--- a/components/signin/core/browser/signin_header_helper_unittest.cc
+++ b/components/signin/core/browser/signin_header_helper_unittest.cc
@@ -9,6 +9,7 @@
#include "base/command_line.h"
#include "base/strings/stringprintf.h"
+#include "base/test/metrics/histogram_tester.h"
#include "base/test/scoped_feature_list.h"
#include "base/test/task_environment.h"
#include "build/build_config.h"
@@ -436,6 +437,7 @@
{
// Signin response.
+ base::HistogramTester histogram_tester;
DiceResponseParams params =
BuildDiceSigninResponseParams(base::StringPrintf(
"action=SIGNIN,id=%s,email=%s,authuser=%i,authorization_code=%s",
@@ -446,6 +448,8 @@
EXPECT_EQ(kEmail, params.signin_info->account_info.email);
EXPECT_EQ(kSessionIndex, params.signin_info->account_info.session_index);
EXPECT_EQ(kAuthorizationCode, params.signin_info->authorization_code);
+ histogram_tester.ExpectUniqueSample("Signin.DiceAuthorizationCode", true,
+ 1);
}
{
@@ -503,9 +507,10 @@
{
// Signin response with no_authorization_code and missing
// authorization_code.
+ base::HistogramTester histogram_tester;
DiceResponseParams params = BuildDiceSigninResponseParams(
- base::StringPrintf("action=SIGNIN,id=%s,email=%s,authuser=%i,no_"
- "authorization_code=true",
+ base::StringPrintf("action=SIGNIN,id=%s,email=%s,authuser=%i,"
+ "no_authorization_code=true",
kGaiaID, kEmail, kSessionIndex));
EXPECT_EQ(DiceAction::SIGNIN, params.user_intention);
ASSERT_TRUE(params.signin_info);
@@ -514,14 +519,18 @@
EXPECT_EQ(kSessionIndex, params.signin_info->account_info.session_index);
EXPECT_TRUE(params.signin_info->authorization_code.empty());
EXPECT_TRUE(params.signin_info->no_authorization_code);
+ histogram_tester.ExpectUniqueSample("Signin.DiceAuthorizationCode", false,
+ 1);
}
{
// Missing authorization code and no_authorization_code.
+ base::HistogramTester histogram_tester;
DiceResponseParams params = BuildDiceSigninResponseParams(
base::StringPrintf("action=SIGNIN,id=%s,email=%s,authuser=%i", kGaiaID,
kEmail, kSessionIndex));
EXPECT_EQ(DiceAction::NONE, params.user_intention);
+ histogram_tester.ExpectTotalCount("Signin.DiceAuthorizationCode", 0);
}
{
diff --git a/tools/metrics/histograms/histograms_xml/signin/histograms.xml b/tools/metrics/histograms/histograms_xml/signin/histograms.xml
index c1c0efbc..7b20e18 100644
--- a/tools/metrics/histograms/histograms_xml/signin/histograms.xml
+++ b/tools/metrics/histograms/histograms_xml/signin/histograms.xml
@@ -245,6 +245,18 @@
<summary>The total number of accounts in the cookie jar.</summary>
</histogram>
+<histogram name="Signin.DiceAuthorizationCode" enum="BooleanPresent"
+ expires_after="never">
+<!-- expires-never: used to monitor OAuth outages in Dice. -->
+
+ <owner>[email protected]</owner>
+ <owner>[email protected]</owner>
+ <summary>
+ Recorded when a Dice signin response is received and indicates whether the
+ authorization code was present or not.
+ </summary>
+</histogram>
+
<histogram name="Signin.DiceResponseHeader" enum="SigninDiceResponseHeader"
expires_after="never">
<!-- expires-never: used to monitor the health of the Dice feature and for troubleshooting. -->