shill: cellular: Track auto-connect metrics.

Network.Shill.Cellular.AutoConnectTries and
Network.Shill.Cellular.AutoConnectTotalTime.

BUG=chromium-os:38406
TEST=Connect modem via auto-connect and check chrome://histograms

Change-Id: I79c2db2b8f4897779275675c9c0fb6278298d462
Reviewed-on: https://gerrit.chromium.org/gerrit/42361
Commit-Queue: Thieu Le <thieule@chromium.org>
Reviewed-by: Thieu Le <thieule@chromium.org>
Tested-by: Thieu Le <thieule@chromium.org>
diff --git a/metrics.h b/metrics.h
index bd81924..57c1ce7 100644
--- a/metrics.h
+++ b/metrics.h
@@ -282,6 +282,14 @@
   static const int kMetricCellularSignalStrengthBeforeDropMax;
   static const int kMetricCellularSignalStrengthBeforeDropMin;
   static const int kMetricCellularSignalStrengthBeforeDropNumBuckets;
+  static const char kMetricCellularAutoConnectTries[];
+  static const int kMetricCellularAutoConnectTriesMax;
+  static const int kMetricCellularAutoConnectTriesMin;
+  static const int kMetricCellularAutoConnectTriesNumBuckets;
+  static const char kMetricCellularAutoConnectTotalTime[];
+  static const int kMetricCellularAutoConnectTotalTimeMax;
+  static const int kMetricCellularAutoConnectTotalTimeMin;
+  static const int kMetricCellularAutoConnectTotalTimeNumBuckets;
 
   Metrics();
   virtual ~Metrics();
@@ -390,7 +398,8 @@
   void NotifyDeviceScanFinished(int interface_index);
 
   // Notifies this object that a device has started the connect process.
-  void NotifyDeviceConnectStarted(int interface_index);
+  void NotifyDeviceConnectStarted(int interface_index,
+                                  bool is_auto_connecting);
 
   // Notifies this object that a device has completed the connect process.
   void NotifyDeviceConnectFinished(int interface_index);
@@ -447,6 +456,8 @@
     scoped_ptr<chromeos_metrics::TimerReporter> disable_timer;
     scoped_ptr<chromeos_metrics::TimerReporter> scan_timer;
     scoped_ptr<chromeos_metrics::TimerReporter> connect_timer;
+    int auto_connect_tries;
+    scoped_ptr<chromeos_metrics::TimerReporter> auto_connect_timer;
   };
   typedef std::map<const int, std::tr1::shared_ptr<DeviceMetrics> >
       DeviceMetricsLookupMap;
@@ -472,6 +483,7 @@
   void SendServiceFailure(const Service *service);
 
   DeviceMetrics *GetDeviceMetrics (int interface_index) const;
+  void AutoConnectMetricsReset(DeviceMetrics *device_metrics);
 
   // For unit test purposes.
   void set_library(MetricsLibraryInterface *library);