Add hook for notifying when the commit message changes

Motivation for doing this is to detect in Chromium plugin when 'TBR=' is
used and warn that users still have to CR+1 a change to land via the CQ.
More details in
https://bugs.chromium.org/p/chromium/issues/detail?id=665882

Change-Id: I034dd2a14fac10c6ad0ccdbb6a4e101bf6600a58
diff --git a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.js b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.js
index 688cd0a..eadbb9d 100644
--- a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.js
+++ b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.js
@@ -146,6 +146,8 @@
     _handleCommitMessageSave: function(e) {
       var message = e.detail.content;
 
+      this.$.jsAPI.handleCommitMessage(this._change, message);
+
       this.$.commitMessageEditor.disabled = true;
       this._saveCommitMessage(message).then(function(resp) {
         this.$.commitMessageEditor.disabled = false;
diff --git a/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-js-api-interface.js b/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-js-api-interface.js
index bb407aa..20f8a2f 100644
--- a/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-js-api-interface.js
+++ b/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-js-api-interface.js
@@ -19,6 +19,7 @@
     LABEL_CHANGE: 'labelchange',
     SHOW_CHANGE: 'showchange',
     SUBMIT_CHANGE: 'submitchange',
+    COMMIT_MSG_EDIT: 'commitmsgedit',
     COMMENT: 'comment',
     REVERT: 'revert',
     POST_REVERT: 'postrevert',
@@ -130,6 +131,18 @@
       });
     },
 
+    handleCommitMessage: function(change, msg) {
+      this._getEventCallbacks(EventType.COMMIT_MSG_EDIT).forEach(
+          function(cb) {
+            try {
+              cb(change, msg);
+            } catch (err) {
+              console.error(err);
+            }
+          }
+      );
+    },
+
     _handleComment: function(detail) {
       this._getEventCallbacks(EventType.COMMENT).forEach(function(cb) {
         try {
diff --git a/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-js-api-interface_test.html b/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-js-api-interface_test.html
index 766da84..ec4d13b 100644
--- a/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-js-api-interface_test.html
+++ b/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-js-api-interface_test.html
@@ -139,6 +139,17 @@
       assert.isTrue(errorStub.calledOnce);
     });
 
+    test('commitmsgedit event', function(done) {
+      var testMsg = 'Test CL commit message';
+      plugin.on(element.EventType.COMMIT_MSG_EDIT, throwErrFn);
+      plugin.on(element.EventType.COMMIT_MSG_EDIT, function(change, msg) {
+        assert.deepEqual(msg, testMsg);
+        assert.isTrue(errorStub.calledOnce);
+        done();
+      });
+      element.handleCommitMessage(null, testMsg);
+    });
+
     test('labelchange event', function(done) {
       var testChange = {_number: 42};
       plugin.on(element.EventType.LABEL_CHANGE, throwErrFn);