Componentize ReportAboutFlagsHistogram
No change to logic. This componentizes ReportAboutFlagsHistogram (which
is responsible for logging the Launch.FlagsAtStartup and
Login.FlagsAtStartup histograms). This will be used later by Android
WebView to log a similar histogram.
This does not componentize AboutFlagsHistogramTest because this still
depends on iterating over Chrome's kFeatureEntries list.
Bug: 1084178
Test: unit_tests -f 'AboutFlagsHistogramTest.*'
Change-Id: If9f0f844d1e3b8e9dd7b4b7207b6c82996d88d86
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2231446
Commit-Queue: Theresa <[email protected]>
Auto-Submit: Nate Fischer <[email protected]>
Reviewed-by: Theresa <[email protected]>
Reviewed-by: Alexei Svitkine <[email protected]>
Cr-Commit-Position: refs/heads/master@{#775708}
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
index 0341861..6220ea0 100644
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -22,10 +22,8 @@
#include "base/i18n/base_i18n_switches.h"
#include "base/memory/singleton.h"
#include "base/metrics/histogram_functions.h"
-#include "base/metrics/metrics_hashes.h"
#include "base/stl_util.h"
#include "base/strings/string_number_conversions.h"
-#include "base/strings/string_util.h"
#include "base/strings/utf_string_conversions.h"
#include "base/time/time_win_features.h"
#include "base/values.h"
@@ -87,6 +85,7 @@
#include "components/flags_ui/feature_entry.h"
#include "components/flags_ui/feature_entry_macros.h"
#include "components/flags_ui/flags_storage.h"
+#include "components/flags_ui/flags_ui_metrics.h"
#include "components/flags_ui/flags_ui_switches.h"
#include "components/games/core/games_features.h"
#include "components/invalidation/impl/invalidation_switches.h"
@@ -5772,43 +5771,6 @@
return false;
}
-// Records a set of feature switches (prefixed with "--").
-void ReportAboutFlagsHistogramSwitches(const std::string& uma_histogram_name,
- const std::set<std::string>& switches) {
- for (const std::string& flag : switches) {
- int uma_id = about_flags::testing::kBadSwitchFormatHistogramId;
- if (base::StartsWith(flag, "--", base::CompareCase::SENSITIVE)) {
- // Skip '--' before switch name.
- std::string switch_name(flag.substr(2));
-
- // Kill value, if any.
- const size_t value_pos = switch_name.find('=');
- if (value_pos != std::string::npos)
- switch_name.resize(value_pos);
-
- uma_id = GetSwitchUMAId(switch_name);
- } else {
- NOTREACHED() << "ReportAboutFlagsHistogram(): flag '" << flag
- << "' has incorrect format.";
- }
- DVLOG(1) << "ReportAboutFlagsHistogram(): histogram='" << uma_histogram_name
- << "' '" << flag << "', uma_id=" << uma_id;
- base::UmaHistogramSparse(uma_histogram_name, uma_id);
- }
-}
-
-// Records a set of FEATURE_VALUE_TYPE features (suffixed with ":enabled" or
-// "disabled", depending on their state).
-void ReportAboutFlagsHistogramFeatures(const std::string& uma_histogram_name,
- const std::set<std::string>& features) {
- for (const std::string& feature : features) {
- int uma_id = GetSwitchUMAId(feature);
- DVLOG(1) << "ReportAboutFlagsHistogram(): histogram='" << uma_histogram_name
- << "' '" << feature << "', uma_id=" << uma_id;
- base::UmaHistogramSparse(uma_histogram_name, uma_id);
- }
-}
-
} // namespace
void ConvertFlagsToSwitches(flags_ui::FlagsStorage* flags_storage,
@@ -5897,25 +5859,12 @@
std::set<std::string> features;
FlagsStateSingleton::GetFlagsState()->GetSwitchesAndFeaturesFromFlags(
flags_storage, &switches, &features);
- ReportAboutFlagsHistogram("Launch.FlagsAtStartup", switches, features);
-}
-
-base::HistogramBase::Sample GetSwitchUMAId(const std::string& switch_name) {
- return static_cast<base::HistogramBase::Sample>(
- base::HashMetricName(switch_name));
-}
-
-void ReportAboutFlagsHistogram(const std::string& uma_histogram_name,
- const std::set<std::string>& switches,
- const std::set<std::string>& features) {
- ReportAboutFlagsHistogramSwitches(uma_histogram_name, switches);
- ReportAboutFlagsHistogramFeatures(uma_histogram_name, features);
+ flags_ui::ReportAboutFlagsHistogram("Launch.FlagsAtStartup", switches,
+ features);
}
namespace testing {
-const base::HistogramBase::Sample kBadSwitchFormatHistogramId = 0;
-
std::vector<FeatureEntry>* GetEntriesForTesting() {
static base::NoDestructor<std::vector<FeatureEntry>> entries;
return entries.get();