Cancel comment updates on discard
Fixes race condition triggering re-rendering of a deleted comment by
canceling debounced updates for `comment.editing` changes.
Bug: Issue 4319
Change-Id: I2a7578443783360088d6f65decd7dcb8be5e636b
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 a2d7fd0..1b30bde 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
@@ -280,6 +280,7 @@
},
_fireDiscard: function() {
+ this.cancelDebouncer('fire-update');
this.fire('comment-discard', this._getEventPayload());
},
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-comment/gr-diff-comment_test.html b/polygerrit-ui/app/elements/diff/gr-diff-comment/gr-diff-comment_test.html
index 54dfad2..fcf8b41 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-comment/gr-diff-comment_test.html
+++ b/polygerrit-ui/app/elements/diff/gr-diff-comment/gr-diff-comment_test.html
@@ -194,15 +194,20 @@
disabled = element.$$('.save').hasAttribute('disabled');
assert.isTrue(disabled, 'save button should be disabled.');
+ var updateStub = sinon.stub();
+ element.addEventListener('comment-update', updateStub);
+
var numDiscardEvents = 0;
element.addEventListener('comment-discard', function(e) {
numDiscardEvents++;
if (numDiscardEvents == 3) {
+ assert.isFalse(updateStub.called);
done();
}
});
MockInteractions.tap(element.$$('.cancel'));
MockInteractions.tap(element.$$('.discard'));
+ element.flushDebouncer('fire-update');
MockInteractions.pressAndReleaseKeyOn(element.$.editTextarea, 27); // esc
});