diff --git a/metrics.h b/metrics.h
index d0d070c..a6c8cf8 100644
--- a/metrics.h
+++ b/metrics.h
@@ -140,11 +140,16 @@
   };
 
   enum TerminationActionResult {
-    kTerminationActionSuccess,
-    kTerminationActionFailure,
+    kTerminationActionResultSuccess,
+    kTerminationActionResultFailure,
     kTerminationActionResultMax
   };
 
+  enum TerminationActionReason {
+    kTerminationActionReasonSuspend,
+    kTerminationActionReasonTerminate
+  };
+
   static const char kMetricDisconnect[];
   static const int kMetricDisconnectMax;
   static const int kMetricDisconnectMin;
@@ -220,7 +225,12 @@
   static const char kMetricLinkApDisconnectType[];
 
   // Shill termination action statistics.
-  static const char kMetricTerminationActionResult[];
+  static const char kMetricTerminationActionTimeOnTerminate[];
+  static const char kMetricTerminationActionResultOnTerminate[];
+  static const char kMetricTerminationActionTimeOnSuspend[];
+  static const char kMetricTerminationActionResultOnSuspend[];
+  static const int kMetricTerminationActionTimeMillisecondsMax;
+  static const int kMetricTerminationActionTimeMillisecondsMin;
 
   Metrics();
   virtual ~Metrics();
@@ -268,6 +278,14 @@
   // Notifies this object of a power management state change.
   void NotifyPowerStateChange(PowerManager::SuspendState new_state);
 
+  // Notifies this object that termination actions started executing.
+  void NotifyTerminationActionsStarted(TerminationActionReason reason);
+
+  // Notifies this object that termination actions have been completed.
+  // |success| is true, if the termination actions completed successfully.
+  void NotifyTerminationActionsCompleted(
+      TerminationActionReason reason, bool success);
+
   // Notifies this object of a failure in LinkMonitor.
   void NotifyLinkMonitorFailure(
       Technology::Identifier technology,
@@ -354,6 +372,10 @@
   void set_time_resume_to_ready_timer(chromeos_metrics::Timer *timer) {
     time_resume_to_ready_timer_.reset(timer);  // Passes ownership
   }
+  void set_time_termination_actions_timer(
+    chromeos_metrics::Timer *timer) {
+    time_termination_actions_timer.reset(timer);  // Passes ownership
+  }
 
   // |library_| points to |metrics_library_| when shill runs normally.
   // However, in order to allow for unit testing, we point |library_| to a
@@ -366,6 +388,7 @@
   scoped_ptr<chromeos_metrics::Timer> time_online_timer_;
   scoped_ptr<chromeos_metrics::Timer> time_to_drop_timer_;
   scoped_ptr<chromeos_metrics::Timer> time_resume_to_ready_timer_;
+  scoped_ptr<chromeos_metrics::Timer> time_termination_actions_timer;
   bool collect_bootstats_;
 
   DISALLOW_COPY_AND_ASSIGN(Metrics);
