Fix API discrepancy with `submitchange` callback
Any callback registered with the `submitchange` callback should
be called with a ChangeInfo and RevisionInfo object as arguments
per the documentation:
https://gerrit-review.googlesource.com/Documentation/js-api.html#self_on
Change-Id: If70ec210b3d0bd9cfda41e3f329d87b680135134
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 d059c71..89c06c4 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
@@ -266,12 +266,24 @@
},
_canSubmitChange: function() {
- return this.$.jsAPI.canSubmitChange();
+ return this.$.jsAPI.canSubmitChange(this.change,
+ this._getRevision(this.change, this.patchNum));
+ },
+
+ _getRevision: function(change, patchNum) {
+ var num = window.parseInt(patchNum, 10);
+ for (var hash in change.revisions) {
+ var rev = change.revisions[hash];
+ if (rev._number === num) {
+ return rev;
+ }
+ }
+ return null;
},
_modifyRevertMsg: function() {
return this.$.jsAPI.modifyRevertMsg(this.change,
- this.$.confirmRevertDialog.message);
+ this.$.confirmRevertDialog.message);
},
_handleActionTap: function(e) {
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 9b566ff..bbd51e2 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
@@ -125,7 +125,26 @@
});
});
+ test('get revision object from change', function() {
+ var revObj = {_number: 2, foo: 'bar'};
+ var change = {
+ revisions: {
+ rev1: {_number: 1},
+ rev2: revObj,
+ },
+ };
+ assert.deepEqual(element._getRevision(change, '2'), revObj);
+ });
+
test('submit change', function(done) {
+ element.change = {
+ revisions: {
+ rev1: {_number: 1},
+ rev2: {_number: 2},
+ },
+ };
+ element.patchNum = '2';
+
flush(function() {
var submitButton = element.$$('gr-button[data-action-key="submit"]');
assert.ok(submitButton);
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 be33ad7..06b25de 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
@@ -81,11 +81,11 @@
this._eventCallbacks[eventName].push(callback);
},
- canSubmitChange: function() {
+ canSubmitChange: function(change, revision) {
var submitCallbacks = this._getEventCallbacks(EventType.SUBMIT_CHANGE);
var cancelSubmit = submitCallbacks.some(function(callback) {
try {
- return callback() === false;
+ return callback(change, revision) === false;
} catch (err) {
console.error(err);
}