Fix QuicheClientSparseHistogram API.

Also add a unit test to ensure the default implementation will build as least.

PiperOrigin-RevId: 797924395
diff --git a/build/source_list.bzl b/build/source_list.bzl
index 7511956..4db4368 100644
--- a/build/source_list.bzl
+++ b/build/source_list.bzl
@@ -1110,6 +1110,7 @@
     "common/lifetime_tracking_test.cc",
     "common/masque/connect_ip_datagram_payload_test.cc",
     "common/masque/connect_udp_datagram_payload_test.cc",
+    "common/platform/api/quiche_client_stats_test.cc",
     "common/platform/api/quiche_file_utils_test.cc",
     "common/platform/api/quiche_hostname_utils_test.cc",
     "common/platform/api/quiche_lower_case_string_test.cc",
diff --git a/build/source_list.gni b/build/source_list.gni
index eb1d406..2e1cf09 100644
--- a/build/source_list.gni
+++ b/build/source_list.gni
@@ -1111,6 +1111,7 @@
     "src/quiche/common/lifetime_tracking_test.cc",
     "src/quiche/common/masque/connect_ip_datagram_payload_test.cc",
     "src/quiche/common/masque/connect_udp_datagram_payload_test.cc",
+    "src/quiche/common/platform/api/quiche_client_stats_test.cc",
     "src/quiche/common/platform/api/quiche_file_utils_test.cc",
     "src/quiche/common/platform/api/quiche_hostname_utils_test.cc",
     "src/quiche/common/platform/api/quiche_lower_case_string_test.cc",
diff --git a/build/source_list.json b/build/source_list.json
index b25abff..7e24315 100644
--- a/build/source_list.json
+++ b/build/source_list.json
@@ -1110,6 +1110,7 @@
     "quiche/common/lifetime_tracking_test.cc",
     "quiche/common/masque/connect_ip_datagram_payload_test.cc",
     "quiche/common/masque/connect_udp_datagram_payload_test.cc",
+    "quiche/common/platform/api/quiche_client_stats_test.cc",
     "quiche/common/platform/api/quiche_file_utils_test.cc",
     "quiche/common/platform/api/quiche_hostname_utils_test.cc",
     "quiche/common/platform/api/quiche_lower_case_string_test.cc",
diff --git a/quiche/common/platform/api/quiche_client_stats.h b/quiche/common/platform/api/quiche_client_stats.h
index c11ccc4..ecec952 100644
--- a/quiche/common/platform/api/quiche_client_stats.h
+++ b/quiche/common/platform/api/quiche_client_stats.h
@@ -5,6 +5,7 @@
 #ifndef QUICHE_COMMON_PLATFORM_API_QUICHE_CLIENT_STATS_H_
 #define QUICHE_COMMON_PLATFORM_API_QUICHE_CLIENT_STATS_H_
 
+#include "absl/strings/string_view.h"
 #include "quiche_platform_impl/quiche_client_stats_impl.h"
 
 namespace quiche {
@@ -77,8 +78,7 @@
   QUICHE_CLIENT_HISTOGRAM_COUNTS_IMPL(name, sample, min, max, bucket_count,  \
                                       docstring)
 
-template <typename String>
-inline void QuicheClientSparseHistogram(const String& name, int sample) {
+inline void QuicheClientSparseHistogram(absl::string_view name, int sample) {
   QuicheClientSparseHistogramImpl(name, sample);
 }
 
diff --git a/quiche/common/platform/api/quiche_client_stats_test.cc b/quiche/common/platform/api/quiche_client_stats_test.cc
new file mode 100644
index 0000000..e9b960c
--- /dev/null
+++ b/quiche/common/platform/api/quiche_client_stats_test.cc
@@ -0,0 +1,29 @@
+#include "quiche/common/platform/api/quiche_client_stats.h"
+
+#include "quiche/quic/core/quic_time.h"
+#include "quiche/common/platform/api/quiche_test.h"
+
+namespace quiche::test {
+
+enum class TestEnum { ZERO = 0, ONE, TWO, COUNT };
+
+TEST(QuichePlatformTest, QuicheClientStats) {
+  // Just make sure they compile.
+  QUICHE_CLIENT_HISTOGRAM_ENUM("my.enum.histogram", TestEnum::ONE,
+                               TestEnum::COUNT, "doc");
+  QUICHE_CLIENT_HISTOGRAM_BOOL("my.bool.histogram", false, "doc");
+  QUICHE_CLIENT_HISTOGRAM_TIMES(
+      "my.timing.histogram", quic::QuicTime::Delta::FromSeconds(5),
+      quic::QuicTime::Delta::FromSeconds(1),
+      quic::QuicTime::Delta::FromSeconds(3600), 100, "doc");
+  QUICHE_CLIENT_HISTOGRAM_COUNTS("my.count.histogram", 123, 0, 1000, 100,
+                                 "doc");
+  std::string histogram_name = "my.sparse.histogram";
+  int value = 345;
+  QuicheClientSparseHistogramImpl(histogram_name, value);
+  // Make sure compiler doesn't report unused-parameter error.
+  bool should_be_used = false;
+  QUICHE_CLIENT_HISTOGRAM_BOOL_IMPL("my.bool.histogram", should_be_used, "doc");
+}
+
+}  // namespace quiche::test
diff --git a/quiche/common/platform/default/quiche_platform_impl/quiche_client_stats_impl.h b/quiche/common/platform/default/quiche_platform_impl/quiche_client_stats_impl.h
index 0f9f8e2..484bdf7 100644
--- a/quiche/common/platform/default/quiche_platform_impl/quiche_client_stats_impl.h
+++ b/quiche/common/platform/default/quiche_platform_impl/quiche_client_stats_impl.h
@@ -10,6 +10,7 @@
 
 #include <type_traits>
 
+#include "absl/strings/string_view.h"
 #include "quiche/common/platform/api/quiche_export.h"
 
 namespace quiche {
@@ -50,8 +51,8 @@
   consteval QuicheRequireStringConstant(const char (& /*name*/)[N]) {}
 };
 
-inline void QuicheClientSparseHistogramImpl(
-    QuicheRequireStringConstant /*name*/, int /*sample*/) {
+inline void QuicheClientSparseHistogramImpl(absl::string_view /*name*/,
+                                            int /*sample*/) {
   // No-op.
 }
 
diff --git a/quiche/quic/platform/api/quic_client_stats.h b/quiche/quic/platform/api/quic_client_stats.h
index da41ce4..ce6f8b1 100644
--- a/quiche/quic/platform/api/quic_client_stats.h
+++ b/quiche/quic/platform/api/quic_client_stats.h
@@ -5,6 +5,7 @@
 #ifndef QUICHE_QUIC_PLATFORM_API_QUIC_CLIENT_STATS_H_
 #define QUICHE_QUIC_PLATFORM_API_QUIC_CLIENT_STATS_H_
 
+#include "absl/strings/string_view.h"
 #include "quiche/common/platform/api/quiche_client_stats.h"
 
 namespace quic {
@@ -76,8 +77,7 @@
   QUICHE_CLIENT_HISTOGRAM_COUNTS(name, sample, min, max, bucket_count,     \
                                  docstring)
 
-template <typename String>
-inline void QuicClientSparseHistogram(const String& name, int sample) {
+inline void QuicClientSparseHistogram(absl::string_view name, int sample) {
   quiche::QuicheClientSparseHistogram(name, sample);
 }