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

BUG=chromium-os:38422
TEST=Unit tests, Manually verify user action is in
/mnt/stateful_partition/encrypted/var/log/metrics/uma-events

Change-Id: I07e71f08b136581237233c9f29c8dd0c6d2db80e
Reviewed-on: https://gerrit.chromium.org/gerrit/42429
Reviewed-by: Ben Chan <benchan@chromium.org>
Commit-Queue: Thieu Le <thieule@chromium.org>
Tested-by: Thieu Le <thieule@chromium.org>
diff --git a/metrics.h b/metrics.h
index 57c1ce7..7bec934 100644
--- a/metrics.h
+++ b/metrics.h
@@ -278,6 +278,7 @@
 
   // Cellular specific statistics.
   static const char kMetricCellularDrop[];
+  static const char kMetricCellularFailureReason[];
   static const char kMetricCellularSignalStrengthBeforeDrop[];
   static const int kMetricCellularSignalStrengthBeforeDropMax;
   static const int kMetricCellularSignalStrengthBeforeDropMin;
@@ -409,6 +410,9 @@
   void NotifyCellularDeviceDrop(const std::string &network_technology,
                                 uint16 signal_strength);
 
+  // Notifies this object about a cellular device failure code.
+  void NotifyCellularDeviceFailure(const Error &error);
+
   // Sends linear histogram data to UMA.
   virtual bool SendEnumToUMA(const std::string &name, int sample, int max);