shill: Add metric to track corrupted profiles

New metric Network.Shill.CorruptedProfile.

BUG=chromium-os:38669
TEST=1. Unit tests
     2. Stop shill
        Corrupt /var/cache/shill/default.profile by adding junk
        Start shill
        Verify new metric appears in chrome://histograms

Change-Id: I629ed00884ecd2d2fe90744583bd72bf2e9e6af4
Reviewed-on: https://gerrit.chromium.org/gerrit/43556
Reviewed-by: Thieu Le <thieule@chromium.org>
Tested-by: Thieu Le <thieule@chromium.org>
Commit-Queue: Thieu Le <thieule@chromium.org>
diff --git a/metrics.h b/metrics.h
index 2fdec24..9d7942f 100644
--- a/metrics.h
+++ b/metrics.h
@@ -172,6 +172,11 @@
     kCellularDropTechnologyMax
   };
 
+  enum CorruptedProfile {
+    kCorruptedProfile = 1,
+    kCorruptedProfileMax
+  };
+
   static const char kMetricDisconnect[];
   static const int kMetricDisconnectMax;
   static const int kMetricDisconnectMin;
@@ -297,6 +302,9 @@
   static const int kMetricCellularAutoConnectTotalTimeMin;
   static const int kMetricCellularAutoConnectTotalTimeNumBuckets;
 
+  // Profile statistics.
+  static const char kMetricCorruptedProfile[];
+
   explicit Metrics(EventDispatcher *dispatcher);
   virtual ~Metrics();
 
@@ -425,6 +433,9 @@
   // Notifies this object about a cellular device failure code.
   void NotifyCellularDeviceFailure(const Error &error);
 
+  // Notifies this object about a corrupted profile.
+  virtual void NotifyCorruptedProfile();
+
   // Sends linear histogram data to UMA.
   virtual bool SendEnumToUMA(const std::string &name, int sample, int max);