Fix gr-annotation to ignore comments
Lit2 introduces comment tokens which throw off GrAnnotation offset
computation. We get around this by pretending the length of them is 0.
Also update token-highlight-layer_test.ts to deal with the fact that
lit2 will replace a container's children rather than append.
Change-Id: I5e727c87e55566460942d1a77a09b785a28849ca
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-builder/token-highlight-layer_test.ts b/polygerrit-ui/app/elements/diff/gr-diff-builder/token-highlight-layer_test.ts
index 6f6968c..d606e01 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-builder/token-highlight-layer_test.ts
+++ b/polygerrit-ui/app/elements/diff/gr-diff-builder/token-highlight-layer_test.ts
@@ -102,7 +102,9 @@
<div id=${lineId} class="line-content">${text}</div>
</div>
`;
- render(template, container);
+ const div = document.createElement('div');
+ render(template, div);
+ container.appendChild(div);
const el = queryAndAssert(container, `#${lineId}`);
return el as HTMLElement;
}
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-highlight/gr-annotation.ts b/polygerrit-ui/app/elements/diff/gr-diff-highlight/gr-annotation.ts
index 7420dc8..5e81871 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-highlight/gr-annotation.ts
+++ b/polygerrit-ui/app/elements/diff/gr-diff-highlight/gr-annotation.ts
@@ -29,6 +29,7 @@
*
*/
getLength(node: Node) {
+ if (node instanceof Comment) return 0;
return this.getStringLength(node.textContent || '');
},
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-highlight/gr-annotation_test.js b/polygerrit-ui/app/elements/diff/gr-diff-highlight/gr-annotation_test.js
index 65f5e07..d8295a5 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-highlight/gr-annotation_test.js
+++ b/polygerrit-ui/app/elements/diff/gr-diff-highlight/gr-annotation_test.js
@@ -252,6 +252,24 @@
'0<test-wrapper>123456789<span></span>0</test-wrapper>123456789');
});
+ test('handles comment nodes', () => {
+ const container = document.createElement('div');
+ container.appendChild(document.createComment('comment1'));
+ container.appendChild(document.createTextNode('0123456789'));
+ container.appendChild(document.createComment('comment2'));
+ container.appendChild(document.createElement('span'));
+ container.appendChild(document.createTextNode('0123456789'));
+ GrAnnotation.annotateWithElement(
+ container, 1, 10, {tagName: 'test-wrapper'});
+
+ assert.equal(
+ container.innerHTML,
+ '<!--comment1-->' +
+ '0<test-wrapper>123456789' +
+ '<!--comment2-->' +
+ '<span></span>0</test-wrapper>123456789');
+ });
+
test('sets sanitized attributes', () => {
const container = document.createElement('div');
container.textContent = fullText;