Add metrics for effectiveness of wifi network selection.

Report number of auto connectable wifi services available when
auto connect is started for wifi.
Report number of BSSes associated with a wifi service when connecting
to that service.

BUG=chromium:230884
TEST=unittest, manual
1. Connect a peppy to GoogleGuest.
2. Browse to "chrome://histograms", and verify histogram for
   Network.Shill.wifi.AvailableBSSesWhenConnect existed.
3. Verify GoogleGuest is in Preferred Network
4. Restart shill to start auto connect.
5. Browse to "chrome://histograms", and verify histogram for
   Network.Shill.wifi.AutoConnectableServices existed.

Change-Id: I5315210944e8f5a5a2253562f680de8217963024
Reviewed-on: https://chromium-review.googlesource.com/193226
Reviewed-by: Peter Qiu <zqiu@chromium.org>
Tested-by: Peter Qiu <zqiu@chromium.org>
Commit-Queue: Peter Qiu <zqiu@chromium.org>
diff --git a/metrics.h b/metrics.h
index 2b0f35f..8a9aceb 100644
--- a/metrics.h
+++ b/metrics.h
@@ -436,6 +436,19 @@
   static const int kMetricExpiredLeaseLengthSecondsMin;
   static const int kMetricExpiredLeaseLengthSecondsNumBuckets;
 
+  // Number of wifi services available when auto-connect is initiated.
+  static const char kMetricWifiAutoConnectableServices[];
+  static const int kMetricWifiAutoConnectableServicesMax;
+  static const int kMetricWifiAutoConnectableServicesMin;
+  static const int kMetricWifiAutoConnectableServicesNumBuckets;
+
+  // Number of BSSes available for a wifi service when we attempt to connect
+  // to that service.
+  static const char kMetricWifiAvailableBSSes[];
+  static const int kMetricWifiAvailableBSSesMax;
+  static const int kMetricWifiAvailableBSSesMin;
+  static const int kMetricWifiAvailableBSSesNumBuckets;
+
   explicit Metrics(EventDispatcher *dispatcher);
   virtual ~Metrics();
 
@@ -593,6 +606,14 @@
   // out-of-credits.
   void NotifyCellularOutOfCredits(Metrics::CellularOutOfCreditsReason reason);
 
+  // Notifies this object about number of wifi services available for auto
+  // connect when auto-connect is initiated.
+  virtual void NotifyWifiAutoConnectableServices(int num_services);
+
+  // Notifies this object about number of BSSes available for a wifi service
+  // when attempt to connect to that service.
+  virtual void NotifyWifiAvailableBSSes(int num_services);
+
   // Notifies this object about a corrupted profile.
   virtual void NotifyCorruptedProfile();