Merge "Add API event callback for 'revert'."
diff --git a/polygerrit-ui/app/elements/change/gr-change-actions/gr-change-actions.js b/polygerrit-ui/app/elements/change/gr-change-actions/gr-change-actions.js
index 65dbb3a..fc87084 100644
--- a/polygerrit-ui/app/elements/change/gr-change-actions/gr-change-actions.js
+++ b/polygerrit-ui/app/elements/change/gr-change-actions/gr-change-actions.js
@@ -59,6 +59,7 @@
*/
properties: {
+ change: Object,
actions: {
type: Object,
value: function() { return {}; },
@@ -256,6 +257,11 @@
return this.$.jsAPI.canSubmitChange();
},
+ _modifyRevertMsg: function() {
+ return this.$.jsAPI.modifyRevertMsg(this.change,
+ this.$.confirmRevertDialog.message);
+ },
+
_handleActionTap: function(e) {
e.preventDefault();
var el = Polymer.dom(e).rootTarget;
@@ -268,6 +274,7 @@
if (type === ActionType.REVISION) {
this._handleRevisionAction(key);
} else if (key === ChangeActions.REVERT) {
+ this.$.confirmRevertDialog.message = this._modifyRevertMsg();
this._showActionDialog(this.$.confirmRevertDialog);
} else if (key === ChangeActions.ABANDON) {
this._showActionDialog(this.$.confirmAbandonDialog);
diff --git a/polygerrit-ui/app/elements/change/gr-change-actions/gr-change-actions_test.html b/polygerrit-ui/app/elements/change/gr-change-actions/gr-change-actions_test.html
index 462b01b..906f596 100644
--- a/polygerrit-ui/app/elements/change/gr-change-actions/gr-change-actions_test.html
+++ b/polygerrit-ui/app/elements/change/gr-change-actions/gr-change-actions_test.html
@@ -240,6 +240,21 @@
fireActionStub.restore();
});
+ test('revert change with plugin hook', function(done) {
+ var newRevertMsg = 'Modified revert msg';
+ var modifyRevertMsgStub = sinon.stub(element, '_modifyRevertMsg',
+ function() { return newRevertMsg; });
+ flush(function() {
+ var revertButton = element.$$('gr-button[data-action-key="revert"]');
+ MockInteractions.tap(revertButton);
+
+ assert.equal(element.$.confirmRevertDialog.message, newRevertMsg);
+
+ modifyRevertMsgStub.restore();
+ done();
+ });
+ });
+
test('works', function() {
var revertButton = element.$$('gr-button[data-action-key="revert"]');
MockInteractions.tap(revertButton);
diff --git a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.html b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.html
index b90bed8..08bfe77 100644
--- a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.html
+++ b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.html
@@ -255,6 +255,7 @@
on-show-reply-dialog="_handleShowReplyDialog">
</gr-change-metadata>
<gr-change-actions id="actions"
+ change="[[_change]]"
actions="[[_change.actions]]"
change-num="[[_changeNum]]"
patch-num="[[_patchRange.patchNum]]"
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 bb37085..4dfcf48 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
@@ -20,6 +20,7 @@
SHOW_CHANGE: 'showchange',
SUBMIT_CHANGE: 'submitchange',
COMMENT: 'comment',
+ REVERT: 'revert',
};
var Element = {
@@ -148,6 +149,17 @@
});
},
+ modifyRevertMsg: function(change, msg) {
+ this._getEventCallbacks(EventType.REVERT).forEach(function(callback) {
+ try {
+ msg = callback(change, msg);
+ } catch (err) {
+ console.error(err);
+ }
+ });
+ return msg;
+ },
+
_getEventCallbacks: function(type) {
return this._eventCallbacks[type] || [];
},
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 c12d653..46a555a 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
@@ -102,6 +102,25 @@
element.handleEvent(element.EventType.COMMENT, {node: testCommentNode});
});
+ test('revert event', function(done) {
+ function appendToRevertMsg(c, msg) {
+ return msg + '\ninfo';
+ }
+ done();
+
+ assert.equal(element.modifyRevertMsg(null, 'test'), 'test');
+ assert.equal(errorStub.callCount, 0);
+
+ plugin.on(element.EventType.REVERT, throwErrFn);
+ plugin.on(element.EventType.REVERT, appendToRevertMsg);
+ assert.equal(element.modifyRevertMsg(null, 'test'), 'test\ninfo');
+ assert.isTrue(errorStub.calledOnce);
+
+ plugin.on(element.EventType.REVERT, appendToRevertMsg);
+ assert.equal(element.modifyRevertMsg(null, 'test'), 'test\ninfo\ninfo');
+ assert.isTrue(errorStub.calledTwice);
+ });
+
test('labelchange event', function(done) {
var testChange = {_number: 42};
plugin.on(element.EventType.LABEL_CHANGE, throwErrFn);