Add Installer.UpdatesAbandonedEventCount metric.

This patch adds a new metric similar to
Installer.UpdatesAbandonedCount that reports the number of abandoned
payloads every time a payload is abandoned. A payload is considered
"abandoned" when it was already attempted but not finished for any
reason, and a newer payload is avaibled. In this situation,
update_engine drops the previous payload and starts again with the
new one.

Every time a payload is abandoned, the new metric
Installer.UpdatesAbandonedEventCount is sent with the number of
consecutive different abandoned payloads since the last successful
update. A high number of entries greater than 1 in this metric will
imply that we are releasing new payloads too often, or that the users
are taking too long to download an update.

Finally, when a payload is successfully applied, the total number of
abandoned payloads since the previous successful update is sent as
the the metric Installer.UpdatesAbandonedCount.

BUG=chromium:261370
TEST=unittests

Change-Id: I47054b541c4700a86183461a5cf92830883ea4f3
Reviewed-on: https://gerrit.chromium.org/gerrit/65328
Commit-Queue: Alex Deymo <deymo@chromium.org>
Reviewed-by: Alex Deymo <deymo@chromium.org>
Tested-by: Alex Deymo <deymo@chromium.org>
diff --git a/payload_state.h b/payload_state.h
index 64d134f..6689b8d 100644
--- a/payload_state.h
+++ b/payload_state.h
@@ -318,9 +318,17 @@
   void LoadNumResponsesSeen();
 
   // Reports metric conveying how many times updates were abandoned
-  // before an update was applied.
+  // before an update was applied. This metric is reported when an update is
+  // successfully applied.
   void ReportUpdatesAbandonedCountMetric();
 
+  // Reports metric conveying how many times updates were abandoned since
+  // the last update was applied. The difference between this metric and the
+  // previous ReportUpdatesAbandonedCountMetric() one is that this metric is
+  // reported every time an update is abandoned, as oposed to the mentioned
+  // metric that is reported once the new update was applied.
+  void ReportUpdatesAbandonedEventCountMetric();
+
   // The global state of the system.
   SystemState* system_state_;