Gr-diff retrofit: implement re-render.
Feature: Issue 3910
Change-Id: Ia85bb2302f8435fd6066873ce87bc9c08b9c63b1
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-cursor/gr-diff-cursor.js b/polygerrit-ui/app/elements/diff/gr-diff-cursor/gr-diff-cursor.js
index 3f71892..01aaa9c 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-cursor/gr-diff-cursor.js
+++ b/polygerrit-ui/app/elements/diff/gr-diff-cursor/gr-diff-cursor.js
@@ -172,9 +172,9 @@
},
_rowHasSide: function(row) {
- var selector = '.content';
- selector += this.side === DiffSides.LEFT ? '.left' : '.right';
- return row.querySelector(selector);
+ var selector = (this.side === DiffSides.LEFT ? '.left' : '.right') +
+ ' + .content';
+ return !!row.querySelector(selector);
},
_isFirstRowOfChunk: function(row) {
diff --git a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.js b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.js
index 4cbe10f..df91a38 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.js
+++ b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.js
@@ -339,14 +339,17 @@
},
_render: function() {
- this._clearDiffContent();
- this._builder = this._getDiffBuilder(this._diff, this._comments,
- this.prefs);
- this._builder.emitDiff(this._diff.content);
+ this._builder =
+ this._getDiffBuilder(this._diff, this._comments, this.prefs);
+ this._renderDiff();
+ },
+ _renderDiff: function() {
+ this._clearDiffContent();
+ this._builder.emitDiff();
this.async(function() {
this.fire('render', null, {bubbles: false});
- }.bind(this), 1);
+ }, 1);
},
_clearDiffContent: function() {
diff --git a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff_test.html b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff_test.html
index cb091c9..d03831f 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff_test.html
+++ b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff_test.html
@@ -343,5 +343,30 @@
element.reload();
});
});
+
+ suite('renderDiff', function() {
+ setup(function(done) {
+ sinon.stub(element, 'fire');
+ element._builder = {
+ emitDiff: sinon.stub(),
+ };
+ element._renderDiff();
+ flush(function() {
+ done();
+ });
+ });
+
+ teardown(function() {
+ element.fire.restore();
+ });
+
+ test('fires render', function() {
+ assert(element.fire.calledWithExactly(
+ 'render', null, {bubbles: false}));
+ });
+ test('calls emitDiff on builder', function() {
+ assert(element._builder.emitDiff.calledOnce);
+ });
+ });
});
</script>