shill: cellular: Add Network.Shill.Cellular.DropsPerHour.

BUG=chromium-os:38557
TEST=Unit tests, manually lose LTE signal and check chrome://histograms

Change-Id: I82aa1edabd21c5dfde4834cd36a34a12b629ba8f
Reviewed-on: https://gerrit.chromium.org/gerrit/42813
Reviewed-by: Arman Uguray <armansito@chromium.org>
Commit-Queue: Thieu Le <thieule@chromium.org>
Tested-by: Thieu Le <thieule@chromium.org>
diff --git a/shill_daemon.cc b/shill_daemon.cc
index 6df6f10..33efa52 100644
--- a/shill_daemon.cc
+++ b/shill_daemon.cc
@@ -34,6 +34,7 @@
 Daemon::Daemon(Config *config, ControlInterface *control)
     : config_(config),
       control_(control),
+      metrics_(new Metrics(&dispatcher_)),
       nss_(NSS::GetInstance()),
       proxy_factory_(ProxyFactory::GetInstance()),
       rtnl_handler_(RTNLHandler::GetInstance()),
@@ -42,13 +43,13 @@
       config80211_(Config80211::GetInstance()),
       manager_(new Manager(control_,
                            &dispatcher_,
-                           &metrics_,
+                           metrics_.get(),
                            &glib_,
                            config->GetRunDirectory(),
                            config->GetStorageDirectory(),
                            config->GetUserStorageDirectoryFormat())),
       callback80211_output_(),
-      callback80211_metrics_(&metrics_) {
+      callback80211_metrics_(metrics_.get()) {
 }
 
 Daemon::~Daemon() { }
@@ -88,7 +89,7 @@
 
 void Daemon::TerminationActionsCompleted(const Error &error) {
   SLOG(Daemon, 1) << "Finished termination actions.  Result: " << error;
-  metrics_.NotifyTerminationActionsCompleted(
+  metrics_->NotifyTerminationActionsCompleted(
       Metrics::kTerminationActionReasonTerminate, error.IsSuccess());
   dispatcher_.PostTask(MessageLoop::QuitClosure());
 }
@@ -96,6 +97,7 @@
 void Daemon::Start() {
   glib_.TypeInit();
   proxy_factory_->Init();
+  metrics_->Start();
   rtnl_handler_->Start(&dispatcher_, &sockets_);
   routing_table_->Start();
   dhcp_provider_->Init(control_, &dispatcher_, &glib_);
@@ -123,6 +125,7 @@
 
 void Daemon::Stop() {
   manager_->Stop();
+  metrics_->Stop();
 }
 
 }  // namespace shill