Merge "Cleaning up previous content as soon as new content is available"
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 5bca7be..a3076f0 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.js
+++ b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.js
@@ -737,14 +737,18 @@
this._prefsChanged(this.prefs);
}
+ _cleanup() {
+ this.cancel();
+ this._blame = null;
+ this._safetyBypass = null;
+ this._showWarning = false;
+ this.clearDiffContent();
+ }
+
/** @param {boolean} newValue */
_loadingChanged(newValue) {
if (newValue) {
- this.cancel();
- this._blame = null;
- this._safetyBypass = null;
- this._showWarning = false;
- this.clearDiffContent();
+ this._cleanup();
}
}
@@ -785,6 +789,7 @@
_diffChanged(newValue) {
if (newValue) {
+ this._cleanup();
this._diffLength = this.getDiffLength(newValue);
this._debounceRenderDiffTable();
}
@@ -806,7 +811,6 @@
}
_renderDiffTable() {
- this._unobserveIncrementalNodes();
if (!this.prefs) {
this.dispatchEvent(
new CustomEvent('render', {bubbles: true, composed: true}));
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 18b4e09..08576a2 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
@@ -952,47 +952,68 @@
});
});
});
+ const setupSampleDiff = function(params) {
+ const {ignore_whitespace, content} = params;
+ element = fixture('basic');
+ element.prefs = {
+ ignore_whitespace: ignore_whitespace || 'IGNORE_ALL',
+ auto_hide_diff_table_header: true,
+ context: 10,
+ cursor_blink_rate: 0,
+ font_size: 12,
+ intraline_difference: true,
+ line_length: 100,
+ line_wrapping: false,
+ show_line_endings: true,
+ show_tabs: true,
+ show_whitespace_errors: true,
+ syntax_highlighting: true,
+ tab_size: 8,
+ theme: 'DEFAULT',
+ };
+ element.diff = {
+ intraline_status: 'OK',
+ change_type: 'MODIFIED',
+ diff_header: [
+ 'diff --git a/carrot.js b/carrot.js',
+ 'index 2adc47d..f9c2f2c 100644',
+ '--- a/carrot.js',
+ '+++ b/carrot.jjs',
+ 'file differ',
+ ],
+ content,
+ binary: false,
+ };
+ element._renderDiffTable();
+ flushAsynchronousOperations();
+ };
+
+ test('clear diff table content as soon as diff changes', () => {
+ const content = [{
+ a: ['all work and no play make andybons a dull boy'],
+ }, {
+ b: [
+ 'Non eram nescius, Brute, cum, quae summis ingeniis ',
+ ],
+ }];
+ function assertDiffTableWithContent() {
+ assert.isTrue(element.$.diffTable.innerText.includes(content[0].a));
+ }
+ setupSampleDiff({content});
+ assertDiffTableWithContent();
+ const diffCopy = Object.assign({}, element.diff);
+ element.diff = diffCopy;
+ // immediatelly cleaned up
+ assert.equal(element.$.diffTable.innerHTML, '');
+ element._renderDiffTable();
+ flushAsynchronousOperations();
+ // rendered again
+ assertDiffTableWithContent();
+ });
suite('whitespace changes only message', () => {
- const setupDiff = function(ignore_whitespace, diffContent) {
- element = fixture('basic');
- element.prefs = {
- ignore_whitespace,
- auto_hide_diff_table_header: true,
- context: 10,
- cursor_blink_rate: 0,
- font_size: 12,
- intraline_difference: true,
- line_length: 100,
- line_wrapping: false,
- show_line_endings: true,
- show_tabs: true,
- show_whitespace_errors: true,
- syntax_highlighting: true,
- tab_size: 8,
- theme: 'DEFAULT',
- };
-
- element.diff = {
- intraline_status: 'OK',
- change_type: 'MODIFIED',
- diff_header: [
- 'diff --git a/carrot.js b/carrot.js',
- 'index 2adc47d..f9c2f2c 100644',
- '--- a/carrot.js',
- '+++ b/carrot.jjs',
- 'file differ',
- ],
- content: diffContent,
- binary: true,
- };
-
- element._renderDiffTable();
- flushAsynchronousOperations();
- };
-
test('show the message if ignore_whitespace is criteria matches', () => {
- setupDiff('IGNORE_ALL', [{skip: 100}]);
+ setupSampleDiff({content: [{skip: 100}]});
assert.isTrue(element.showNoChangeMessage(
/* loading= */ false,
element.prefs,
@@ -1001,7 +1022,7 @@
});
test('do not show the message if still loading', () => {
- setupDiff('IGNORE_ALL', [{skip: 100}]);
+ setupSampleDiff({content: [{skip: 100}]});
assert.isFalse(element.showNoChangeMessage(
/* loading= */ true,
element.prefs,
@@ -1019,7 +1040,7 @@
'exquisitaque doctrina philosophi Graeco sermone tractavissent',
],
}];
- setupDiff('IGNORE_ALL', content);
+ setupSampleDiff({content});
assert.equal(element._diffLength, 3);
assert.isFalse(element.showNoChangeMessage(
/* loading= */ false,
@@ -1038,7 +1059,7 @@
'exquisitaque doctrina philosophi Graeco sermone tractavissent',
],
}];
- setupDiff('IGNORE_NONE', content);
+ setupSampleDiff({ignore_whitespace: 'IGNORE_NONE', content});
assert.isFalse(element.showNoChangeMessage(
/* loading= */ false,
element.prefs,