Start transition the metrics library to non-static API. Use gmock in tests.

Review URL: http://codereview.chromium.org/2049007
diff --git a/metrics/metrics_library.h b/metrics/metrics_library.h
index 7383960..e5e9024 100644
--- a/metrics/metrics_library.h
+++ b/metrics/metrics_library.h
@@ -16,9 +16,21 @@
 
 // TODO(sosa@chromium.org): Add testing for send methods
 
-// Library used to send metrics both Autotest and Chrome.
-class MetricsLibrary {
+class MetricsLibraryInterface {
  public:
+  virtual void Init() = 0;
+  virtual bool SendToUMA(const std::string& name, int sample,
+                         int min, int max, int nbuckets) = 0;
+  virtual bool SendEnumToUMA(const std::string& name, int sample, int max) = 0;
+  virtual ~MetricsLibraryInterface() {}
+};
+
+// Library used to send metrics to both Autotest and Chrome/UMA.
+class MetricsLibrary : public MetricsLibraryInterface {
+ public:
+  // Initializes the library.
+  void Init();
+
   // Sends histogram data to Chrome for transport to UMA and returns
   // true on success. This method results in the equivalent of an
   // asynchronous non-blocking RPC to UMA_HISTOGRAM_CUSTOM_COUNTS
@@ -30,6 +42,10 @@
   // |nbuckets| is the number of histogram buckets.
   // [0,min) is the implicit underflow bucket.
   // [|max|,infinity) is the implicit overflow bucket.
+  bool SendToUMA(const std::string& name, int sample,
+                 int min, int max, int nbuckets);
+
+  // Deprecated.
   static bool SendToChrome(const std::string& name, int sample,
                            int min, int max, int nbuckets);
 
@@ -42,6 +58,9 @@
   // |max| is the maximum value of the histogram samples.
   // 0 is the implicit underflow bucket.
   // [|max|,infinity) is the implicit overflow bucket.
+  bool SendEnumToUMA(const std::string& name, int sample, int max);
+
+  // Deprecated.
   static bool SendEnumToChrome(const std::string& name, int sample, int max);
 
   // Sends to Autotest and returns true on success.