Move flag check out of token layer
The goal is to make the reusable component gr-diff independent of Gerrit
flags - instead, check those in the parent components and provide the
token highlight layer conditionally.
Change-Id: I40e2e94f001d0d690623b4812e64b59d4436b5b7
diff --git a/polygerrit-ui/app/elements/diff/gr-apply-fix-dialog/gr-apply-fix-dialog.ts b/polygerrit-ui/app/elements/diff/gr-apply-fix-dialog/gr-apply-fix-dialog.ts
index 0bf9f1c..5cd7bfc 100644
--- a/polygerrit-ui/app/elements/diff/gr-apply-fix-dialog/gr-apply-fix-dialog.ts
+++ b/polygerrit-ui/app/elements/diff/gr-apply-fix-dialog/gr-apply-fix-dialog.ts
@@ -40,6 +40,8 @@
import {fireCloseFixPreview, fireEvent} from '../../../utils/event-util';
import {ParsedChangeInfo} from '../../../types/types';
import {GrButton} from '../../shared/gr-button/gr-button';
+import {TokenHighlightLayer} from '../gr-diff-builder/token-highlight-layer';
+import {KnownExperimentId} from '../../../services/flags/flags';
export interface GrApplyFixDialog {
$: {
@@ -97,6 +99,12 @@
})
_disableApplyFixButton?: boolean;
+ layers = appContext.flagsService.isEnabled(
+ KnownExperimentId.TOKEN_HIGHLIGHTING
+ )
+ ? [new TokenHighlightLayer()]
+ : [];
+
private refitOverlay?: () => void;
private readonly restApiService = appContext.restApiService;
diff --git a/polygerrit-ui/app/elements/diff/gr-apply-fix-dialog/gr-apply-fix-dialog_html.ts b/polygerrit-ui/app/elements/diff/gr-apply-fix-dialog/gr-apply-fix-dialog_html.ts
index 52fa9841..2fb1fa0 100644
--- a/polygerrit-ui/app/elements/diff/gr-apply-fix-dialog/gr-apply-fix-dialog_html.ts
+++ b/polygerrit-ui/app/elements/diff/gr-apply-fix-dialog/gr-apply-fix-dialog_html.ts
@@ -65,6 +65,7 @@
change-num="[[changeNum]]"
path="[[item.filepath]]"
diff="[[item.preview]]"
+ layers="[[layers]]"
></gr-diff>
</div>
</template>
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder-element.ts b/polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder-element.ts
index 96206f2..d65deb6 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder-element.ts
+++ b/polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder-element.ts
@@ -48,7 +48,6 @@
import {PolymerSpliceChange} from '@polymer/polymer/interfaces';
import {getLineNumber, getSideByLineEl} from '../gr-diff/gr-diff-utils';
import {fireAlert, fireEvent} from '../../../utils/event-util';
-import {TokenHighlightLayer} from './token-highlight-layer';
const TRAILING_WHITESPACE_PATTERN = /\s+$/;
@@ -250,7 +249,6 @@
this.$.rangeLayer,
this.$.coverageLayerLeft,
this.$.coverageLayerRight,
- new TokenHighlightLayer(),
];
if (this.layers) {
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-builder/token-highlight-layer.ts b/polygerrit-ui/app/elements/diff/gr-diff-builder/token-highlight-layer.ts
index d0b3d3c..1d9a44b 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-builder/token-highlight-layer.ts
+++ b/polygerrit-ui/app/elements/diff/gr-diff-builder/token-highlight-layer.ts
@@ -22,8 +22,6 @@
getLineNumberByChild,
lineNumberToNumber,
} from '../gr-diff/gr-diff-utils';
-import {appContext} from '../../../services/app-context';
-import {KnownExperimentId} from '../../../services/flags/flags';
const tokenMatcher = new RegExp(/[a-zA-Z0-9_-]+/g);
@@ -96,17 +94,12 @@
private updateTokenTask?: DelayedTask;
- private readonly enabled = appContext.flagsService.isEnabled(
- KnownExperimentId.TOKEN_HIGHLIGHTING
- );
-
annotate(
el: HTMLElement,
_: HTMLElement,
line: GrDiffLine,
side: Side
): void {
- if (!this.enabled) return;
const text = el.textContent;
if (!text) return;
// Binary files encoded as text for example can have super long lines
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 1f4b778..6f34067 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
@@ -80,6 +80,7 @@
import {getPluginLoader} from '../../shared/gr-js-api-interface/gr-plugin-loader';
import {assertIsDefined} from '../../../utils/common-util';
import {DiffContextExpandedEventDetail} from '../gr-diff-builder/gr-diff-builder';
+import {TokenHighlightLayer} from '../gr-diff-builder/token-highlight-layer';
import {Timing} from '../../../constants/reporting';
const MSG_EMPTY_BLAME = 'No blame information for this diff.';
@@ -400,8 +401,16 @@
}
private _getLayers(path: string): DiffLayer[] {
+ const layers = [];
+ if (
+ appContext.flagsService.isEnabled(KnownExperimentId.TOKEN_HIGHLIGHTING)
+ ) {
+ layers.push(new TokenHighlightLayer());
+ }
+ layers.push(this.syntaxLayer);
// Get layers from plugins (if any).
- return [this.syntaxLayer, ...this.jsAPI.getDiffLayers(path)];
+ layers.push(...this.jsAPI.getDiffLayers(path));
+ return layers;
}
clear() {
diff --git a/polygerrit-ui/app/elements/shared/gr-comment-thread/gr-comment-thread.ts b/polygerrit-ui/app/elements/shared/gr-comment-thread/gr-comment-thread.ts
index 5b70cb4..86c1b8c 100644
--- a/polygerrit-ui/app/elements/shared/gr-comment-thread/gr-comment-thread.ts
+++ b/polygerrit-ui/app/elements/shared/gr-comment-thread/gr-comment-thread.ts
@@ -60,6 +60,7 @@
import {waitForEventOnce} from '../../../utils/event-util';
import {GrSyntaxLayer} from '../../diff/gr-syntax-layer/gr-syntax-layer';
import {StorageLocation} from '../../../services/storage/gr-storage';
+import {TokenHighlightLayer} from '../../diff/gr-diff-builder/token-highlight-layer';
const UNRESOLVED_EXPAND_COUNT = 5;
const NEWLINE_PATTERN = /\n/g;
@@ -344,7 +345,14 @@
_getLayers(diff?: DiffInfo) {
if (!diff) return [];
- return [this.syntaxLayer];
+ const layers = [];
+ if (
+ appContext.flagsService.isEnabled(KnownExperimentId.TOKEN_HIGHLIGHTING)
+ ) {
+ layers.push(new TokenHighlightLayer());
+ }
+ layers.push(this.syntaxLayer);
+ return layers;
}
_getUrlForViewDiff(comments: UIComment[]) {