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_daemon.h b/metrics/metrics_daemon.h
index 3ab857a..3aeaaaa 100644
--- a/metrics/metrics_daemon.h
+++ b/metrics/metrics_daemon.h
@@ -9,6 +9,8 @@
 #include <glib.h>
 #include <time.h>
 
+#include "metrics_library.h"
+
 #include <gtest/gtest_prod.h>  // for FRIEND_TEST
 
 class MetricsDaemon {
@@ -34,18 +36,23 @@
 
  private:
   friend class MetricsDaemonTest;
-  FRIEND_TEST(MetricsDaemonTest, LogDailyUseRecord);
+  FRIEND_TEST(MetricsDaemonTest, LogDailyUseRecordBadFileLocation);
+  FRIEND_TEST(MetricsDaemonTest, LogDailyUseRecordOnLogin);
+  FRIEND_TEST(MetricsDaemonTest, LogDailyUseRecordRoundDown);
+  FRIEND_TEST(MetricsDaemonTest, LogDailyUseRecordRoundUp);
   FRIEND_TEST(MetricsDaemonTest, LookupNetworkState);
   FRIEND_TEST(MetricsDaemonTest, LookupPowerState);
   FRIEND_TEST(MetricsDaemonTest, LookupScreenSaverState);
   FRIEND_TEST(MetricsDaemonTest, LookupSessionState);
   FRIEND_TEST(MetricsDaemonTest, MessageFilter);
-  FRIEND_TEST(MetricsDaemonTest, NetStateChanged);
+  FRIEND_TEST(MetricsDaemonTest, NetStateChangedSimpleDrop);
+  FRIEND_TEST(MetricsDaemonTest, NetStateChangedSuspend);
   FRIEND_TEST(MetricsDaemonTest, PowerStateChanged);
   FRIEND_TEST(MetricsDaemonTest, PublishMetric);
   FRIEND_TEST(MetricsDaemonTest, ScreenSaverStateChanged);
   FRIEND_TEST(MetricsDaemonTest, SessionStateChanged);
-  FRIEND_TEST(MetricsDaemonTest, SetUserActiveState);
+  FRIEND_TEST(MetricsDaemonTest, SetUserActiveStateSendOnLogin);
+  FRIEND_TEST(MetricsDaemonTest, SetUserActiveStateSendOnMonitor);
 
   // The network states (see network_states.h).
   enum NetworkState {
@@ -113,7 +120,7 @@
   static const char* kSessionStates_[kNumberSessionStates];
 
   // Initializes.
-  void Init(bool testing);
+  void Init(bool testing, MetricsLibraryInterface* metrics_lib);
 
   // Creates the event loop and enters it.
   void Loop();
@@ -190,6 +197,9 @@
   // Test mode.
   bool testing_;
 
+  // The metrics library handle.
+  MetricsLibraryInterface* metrics_lib_;
+
   const char* daily_use_record_file_;
 
   // Current network state.