Report timing for updating diff comment drafts

Record the time it takes to save, update and delete comments starting
with the handlers for user corresponding interactions.

Change-Id: I9f22dc2e015fa46afcd5d531a3c0d4906e0bec89
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-comment/gr-diff-comment.js b/polygerrit-ui/app/elements/diff/gr-diff-comment/gr-diff-comment.js
index 8612011..b2b6b73 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-comment/gr-diff-comment.js
+++ b/polygerrit-ui/app/elements/diff/gr-diff-comment/gr-diff-comment.js
@@ -27,6 +27,10 @@
   const SAVING_PROGRESS_MESSAGE = 'Saving draft...';
   const DiSCARDING_PROGRESS_MESSAGE = 'Discarding draft...';
 
+  const REPORT_CREATE_DRAFT = 'CreateDraftComment';
+  const REPORT_UPDATE_DRAFT = 'UpdateDraftComment';
+  const REPORT_DISCARD_DRAFT = 'DiscardDraftComment';
+
   Polymer({
     is: 'gr-diff-comment',
 
@@ -450,9 +454,12 @@
 
       // Ignore saves started while already saving.
       if (this.disabled) { return; }
-
+      const timingLabel = this.comment.id ?
+          REPORT_UPDATE_DRAFT : REPORT_CREATE_DRAFT;
+      this.$.reporting.time(timingLabel);
       this.set('comment.__editing', false);
-      this.save();
+      return this.save()
+          .then(() => { this.$.reporting.timeEnd(timingLabel); });
     },
 
     _handleCancel(e) {
@@ -485,8 +492,10 @@
 
     _handleConfirmDiscard(e) {
       e.preventDefault();
+      this.$.reporting.time(REPORT_DISCARD_DRAFT);
       this._closeConfirmDiscardOverlay();
-      this._discardDraft();
+      return this._discardDraft()
+          .then(() => { this.$.reporting.timeEnd(REPORT_DISCARD_DRAFT); });
     },
 
     _discardDraft() {