commit e3ea65da29211e4de9f9426bd83306d0129ead4f Author: Ole Date: Tue Oct 13 14:59:08 2020 +0200 Make gr-diff own "loading" state The loading state is only used in gr-diff, so it makes sense to be also set in gr-diff. This change slightly changes the behavior of loading to flip to false when the content is rendered, not only after syntax highlighting is done. That is not a problem though, because the two places that read it only care about content, too. Change-Id: I2b4bda1ff8f336bce4a7a763d1479b2474a2beb7 diff --git a/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host.ts b/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host.ts index 61db314..c1b17fe 100644 --- a/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host.ts +++ b/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host.ts @@ -231,9 +231,6 @@ export class GrDiffHost extends GestureEventListeners( @property({type: Boolean}) _loggedIn = false; - @property({type: Boolean}) - _loading = false; - @property({type: String}) _errorMessage: string | null = null; @@ -331,7 +328,7 @@ export class GrDiffHost extends GestureEventListeners( this.clear(); if (!this.path) throw new Error('Missing required "path" property.'); if (!this.changeNum) throw new Error('Missing required "changeNum" prop.'); - this._loading = true; + this.diff = undefined; this._errorMessage = null; const whitespaceLevel = this._getIgnoreWhitespace(); @@ -381,7 +378,6 @@ export class GrDiffHost extends GestureEventListeners( } finally { this.reporting.timeEnd(TimingLabel.TOTAL); } - this._loading = false; } private _getLayers(path: string, changeNum: NumericChangeId): DiffLayer[] { diff --git a/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host_html.ts b/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host_html.ts index c92fd5c..d1564b0 100644 --- a/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host_html.ts +++ b/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host_html.ts @@ -32,7 +32,6 @@ export const htmlTemplate = html` view-mode="[[viewMode]]" line-of-interest="[[lineOfInterest]]" logged-in="[[_loggedIn]]" - loading="[[_loading]]" error-message="[[_errorMessage]]" base-image="[[_baseImage]]" revision-image="[[_revisionImage]]" diff --git a/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host_test.js b/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host_test.js index e3bda36..cd2c860 100644 --- a/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host_test.js +++ b/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host_test.js @@ -388,6 +388,13 @@ suite('gr-diff-host tests', () => { sinon.stub(element, '_getDiff').callsFake(() => new Promise(() => {})); element.patchRange = {}; + // Needs to be set to something first for it to cancel. + element.diff = { + content: [{ + a: ['foo'], + }], + }; + element.reload(); assert.isTrue(cancelStub.called); }); @@ -824,7 +831,7 @@ suite('gr-diff-host tests', () => { test('delegates cancel()', () => { const stub = sinon.stub(element.$.diff, 'cancel'); element.patchRange = {}; - element.reload(); + element.cancel(); assert.isTrue(stub.calledOnce); assert.equal(stub.lastCall.args.length, 0); }); diff --git a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.ts b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.ts index 022ac80..7c317bb 100644 --- a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.ts +++ b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.ts @@ -191,8 +191,9 @@ export class GrDiff extends GestureEventListeners( @property({type: Object}) lineOfInterest?: LineOfInterest; - @property({type: Boolean, observer: '_loadingChanged'}) - loading = false; + /** True when diff is changed, until the content is done rendering. */ + @property({type: Boolean}) + _loading = false; @property({type: Boolean}) loggedIn = false; @@ -787,12 +788,6 @@ export class GrDiff extends GestureEventListeners( this.clearDiffContent(); } - _loadingChanged(newValue?: boolean) { - if (newValue) { - this._cleanup(); - } - } - _lineWrappingObserver() { this._prefsChanged(this.prefs); } @@ -831,8 +826,9 @@ export class GrDiff extends GestureEventListeners( } _diffChanged(newValue?: DiffInfo) { + this._loading = true; + this._cleanup(); if (newValue) { - this._cleanup(); this._diffLength = this.getDiffLength(newValue); this._debounceRenderDiffTable(); } @@ -890,6 +886,7 @@ export class GrDiff extends GestureEventListeners( } _handleRenderContent() { + this._loading = false; this._unobserveIncrementalNodes(); this._incrementalNodeObserver = (dom( this diff --git a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff_html.ts b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff_html.ts index 3c4642c..e9de9e7 100644 --- a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff_html.ts +++ b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff_html.ts @@ -446,7 +446,7 @@ export const htmlTemplate = html`