Add sparse histograms to the metrics library and metrics client.

Samples to these histograms are any 32-bit int value.

BUG=chromium:222189
TEST=manual

Change-Id: Ic8d5773d05d717a275c4a4b5616e0e4c307337b8
Reviewed-on: https://gerrit.chromium.org/gerrit/45897
Tested-by: Luigi Semenzato <semenzato@chromium.org>
Reviewed-by: Darin Petkov <petkov@chromium.org>
Commit-Queue: Luigi Semenzato <semenzato@chromium.org>
Reviewed-by: Luigi Semenzato <semenzato@chromium.org>
diff --git a/metrics/metrics_library.cc b/metrics/metrics_library.cc
index 1c7c28d..e5aaae6 100644
--- a/metrics/metrics_library.cc
+++ b/metrics/metrics_library.cc
@@ -290,6 +290,19 @@
   return SendMessageToChrome(message_length, message);
 }
 
+bool MetricsLibrary::SendSparseToUMA(const std::string& name, int sample) {
+  // Format the message.
+  char message[kBufferSize];
+  int32_t message_length =
+      FormatChromeMessage(kBufferSize, message, "sparsehistogram%c%s %d",
+                          '\0', name.c_str(), sample);
+  if (message_length < 0)
+    return false;
+
+  // Send the message.
+  return SendMessageToChrome(message_length, message);
+}
+
 bool MetricsLibrary::SendUserActionToUMA(const std::string& action) {
   // Format the message.
   char message[kBufferSize];