Revert "Revert "Add token highlighting to gr-diff""
This reverts commit e39103dcfd5333251cf4d1e24dc38e8e47ee6afb.
Reason for revert: With fixed highlighting in unified diff.
Change-Id: I02739e9a19a1bfa984568188c7b9f7031e01ede2
diff --git a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff-utils.ts b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff-utils.ts
index 0ca929a..96fbd8d 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff-utils.ts
+++ b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff-utils.ts
@@ -43,6 +43,36 @@
return range.end_line - range.start_line > 10;
}
+export function getLineNumberByChild(node?: Node) {
+ return getLineNumber(getLineElByChild(node));
+}
+
+export function lineNumberToNumber(lineNumber?: LineNumber | null): number {
+ if (!lineNumber) return 0;
+ if (lineNumber === 'LOST') return 0;
+ if (lineNumber === 'FILE') return 0;
+ return lineNumber;
+}
+
+export function getLineElByChild(node?: Node): HTMLElement | null {
+ while (node) {
+ if (node instanceof Element) {
+ if (node.classList.contains('lineNum')) {
+ return node as HTMLElement;
+ }
+ if (node.classList.contains('section')) {
+ return null;
+ }
+ }
+ node = node.previousSibling ?? node.parentElement ?? undefined;
+ }
+ return null;
+}
+
+export function getSideByLineEl(lineEl: Element) {
+ return lineEl.classList.contains(Side.RIGHT) ? Side.RIGHT : Side.LEFT;
+}
+
export function getLineNumber(lineEl?: Element | null): LineNumber | null {
if (!lineEl) return null;
const lineNumberStr = lineEl.getAttribute('data-value');
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 41dd159..3b76698 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.ts
+++ b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.ts
@@ -29,6 +29,7 @@
import {LineNumber} from './gr-diff-line';
import {
getLine,
+ getLineElByChild,
getLineNumber,
getRange,
getSide,
@@ -546,7 +547,7 @@
el.classList.contains('content') ||
el.classList.contains('contentText')
) {
- const target = this.$.diffBuilder.getLineElByChild(el);
+ const target = getLineElByChild(el);
if (target) {
this._selectLine(target);
}
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 a93d5b5..059b0ee 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
@@ -605,6 +605,10 @@
border: 1px solid var(--diff-context-control-border-color);
text-align: center;
}
+
+ .token-highlight {
+ background-color: var(--token-highlighting-color, #fffd54);
+ }
</style>
<style include="gr-syntax-theme">
/* Workaround for empty style block - see https://github.com/Polymer/tools/issues/408 */
diff --git a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff_test.js b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff_test.js
index 86946a6..53a2915 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff_test.js
+++ b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff_test.js
@@ -472,10 +472,12 @@
test('_handleTap content', done => {
const content = document.createElement('div');
const lineEl = document.createElement('div');
+ lineEl.className = 'lineNum';
+ const row = document.createElement('div');
+ row.appendChild(lineEl);
+ row.appendChild(content);
const selectStub = sinon.stub(element, '_selectLine');
- sinon.stub(element.$.diffBuilder, 'getLineElByChild')
- .callsFake(() => lineEl);
content.className = 'content';
content.addEventListener('click', e => {