Add helper macros for calling a histogram with different names.

To be used when a metric is used in different modes such as real-time vs screenshare (will be done in https://codereview.webrtc.org/1564923008/).

BUG=webrtc:5283

Review URL: https://codereview.webrtc.org/1567013004

Cr-Commit-Position: refs/heads/master@{#11461}
diff --git a/webrtc/system_wrappers/source/metrics_unittest.cc b/webrtc/system_wrappers/source/metrics_unittest.cc
index 8319b78..7de6f5e 100644
--- a/webrtc/system_wrappers/source/metrics_unittest.cc
+++ b/webrtc/system_wrappers/source/metrics_unittest.cc
@@ -21,6 +21,9 @@
 void AddSparseSample(const std::string& name, int sample) {
   RTC_HISTOGRAM_COUNTS_SPARSE_100(name, sample);
 }
+void AddSampleWithVaryingName(int index, const std::string& name, int sample) {
+  RTC_HISTOGRAMS_COUNTS_100(index, name, sample);
+}
 #if GTEST_HAS_DEATH_TEST && !defined(WEBRTC_ANDROID)
 void AddSample(const std::string& name, int sample) {
   RTC_HISTOGRAM_COUNTS_100(name, sample);
@@ -72,6 +75,27 @@
   EXPECT_EQ(kNumSamples - 1, test::LastHistogramSample(kName));
 }
 
+TEST(MetricsTest, RtcHistogramsCounts_AddSample) {
+  test::ClearHistograms();
+  AddSampleWithVaryingName(0, "Name1", kSample);
+  AddSampleWithVaryingName(1, "Name2", kSample + 1);
+  AddSampleWithVaryingName(2, "Name3", kSample + 2);
+  EXPECT_EQ(1, test::NumHistogramSamples("Name1"));
+  EXPECT_EQ(1, test::NumHistogramSamples("Name2"));
+  EXPECT_EQ(1, test::NumHistogramSamples("Name3"));
+  EXPECT_EQ(kSample + 0, test::LastHistogramSample("Name1"));
+  EXPECT_EQ(kSample + 1, test::LastHistogramSample("Name2"));
+  EXPECT_EQ(kSample + 2, test::LastHistogramSample("Name3"));
+}
+
+#if RTC_DCHECK_IS_ON && GTEST_HAS_DEATH_TEST && !defined(WEBRTC_ANDROID)
+TEST(MetricsTest, RtcHistogramsCounts_InvalidIndex) {
+  EXPECT_DEATH(RTC_HISTOGRAMS_COUNTS_1000(-1, kName, kSample), "");
+  EXPECT_DEATH(RTC_HISTOGRAMS_COUNTS_1000(3, kName, kSample), "");
+  EXPECT_DEATH(RTC_HISTOGRAMS_COUNTS_1000(3u, kName, kSample), "");
+}
+#endif
+
 TEST(MetricsTest, RtcHistogramSparse_NonConstantNameWorks) {
   test::ClearHistograms();
   AddSparseSample("Name1", kSample);