Skip to content

Commit ad5b9a9

Browse files
Lightning00BladeDevtools-frontend LUCI CQ
authored andcommitted
Fix Markdown eslint rule violation
Tested that this produces the same result when rendered on the page. Needed a little bit more fixes as types changed. Bug: 457654458 Change-Id: I2201ab3ca99f185e47e297e028006608ca66b2ac Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/7124647 Commit-Queue: Ergün Erdoğmuş <[email protected]> Auto-Submit: Nikolay Vitkov <[email protected]> Reviewed-by: Ergün Erdoğmuş <[email protected]>
1 parent 0b2d1c4 commit ad5b9a9

File tree

4 files changed

+34
-29
lines changed

4 files changed

+34
-29
lines changed

front_end/panels/ai_assistance/components/MarkdownRendererWithCodeBlock.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import type * as Lit from '../../../ui/lit/lit.js';
1919
* ```
2020
**/
2121
export class MarkdownRendererWithCodeBlock extends MarkdownView.MarkdownView.MarkdownInsightRenderer {
22-
override templateForToken(token: Marked.Marked.MarkedToken): Lit.TemplateResult|null {
22+
override templateForToken(token: Marked.Marked.MarkedToken): Lit.LitTemplate|null {
2323
if (token.type === 'code') {
2424
const lines = (token.text).split('\n');
2525
if (lines[0]?.trim() === 'css') {

front_end/panels/ai_assistance/components/PerformanceAgentMarkdownRenderer.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ export class PerformanceAgentMarkdownRenderer extends MarkdownRendererWithCodeBl
2121
super();
2222
}
2323

24-
override templateForToken(token: Marked.Marked.MarkedToken): Lit.TemplateResult|null {
24+
override templateForToken(token: Marked.Marked.MarkedToken): Lit.LitTemplate|null {
2525
if (token.type === 'link' && token.href.startsWith('#')) {
2626
if (token.href.startsWith('#node-')) {
2727
const nodeId = Number(token.href.replace('#node-', '')) as Protocol.DOM.BackendNodeId;

front_end/ui/components/markdown_view/MarkdownView.test.ts

Lines changed: 26 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ function getFakeToken(token: TestToken): Marked.Marked.Token {
3131
return token as unknown as Marked.Marked.Token;
3232
}
3333

34-
function renderTemplateResult(templateResult: Lit.TemplateResult): HTMLElement {
34+
function renderTemplateResult(templateResult: Lit.LitTemplate): HTMLElement {
3535
const container = document.createElement('container');
3636
Lit.render(templateResult, container);
3737
return container;
@@ -77,6 +77,10 @@ describeWithEnvironment('MarkdownView', () => {
7777
describe('MarkdownLitRenderer renderToken', () => {
7878
const renderer = new MarkdownView.MarkdownView.MarkdownLitRenderer();
7979

80+
function getRenderedResultString(token: Marked.Marked.Token) {
81+
return (renderer.renderToken(token) as Lit.TemplateResult).strings.join('');
82+
}
83+
8084
it('wraps paragraph tokens in <p> tags', () => {
8185
const container = renderTemplateResult(renderer.renderToken(getFakeToken({type: 'paragraph', tokens: []})));
8286

@@ -134,7 +138,7 @@ describeWithEnvironment('MarkdownView', () => {
134138
it('renders link with valid key', () => {
135139
MarkdownView.MarkdownLinksMap.markdownLinks.set('exampleLink', 'https://web.dev/');
136140
const renderResult =
137-
renderer.renderToken(getFakeToken({type: 'link', text: 'learn more', href: 'exampleLink'})).strings.join('');
141+
getRenderedResultString(getFakeToken({type: 'link', text: 'learn more', href: 'exampleLink'}));
138142

139143
assert.isTrue(renderResult.includes('<devtools-markdown-link'));
140144
});
@@ -149,7 +153,7 @@ describeWithEnvironment('MarkdownView', () => {
149153
isIcon: true,
150154
});
151155
const renderResult =
152-
renderer.renderToken(getFakeToken({type: 'image', text: 'phone', href: 'testExampleImage'})).strings.join('');
156+
getRenderedResultString(getFakeToken({type: 'image', text: 'phone', href: 'testExampleImage'}));
153157
assert.isTrue(renderResult.includes('<devtools-markdown-image'));
154158
});
155159

@@ -158,27 +162,25 @@ describeWithEnvironment('MarkdownView', () => {
158162
src: 'Images/phone-logo.png',
159163
isIcon: false,
160164
});
161-
const renderResult =
162-
renderer.renderToken(getFakeToken({type: 'image', text: 'phone', href: 'exampleImage'})).strings.join('');
165+
const renderResult = getRenderedResultString(getFakeToken({type: 'image', text: 'phone', href: 'exampleImage'}));
163166
assert.isTrue(renderResult.includes('<devtools-markdown-image'));
164167
});
165168

166169
it('throws an error if invalid image key is provided', () => {
167170
assert.throws(() => MarkdownView.MarkdownImagesMap.getMarkdownImage('testErrorImageLink'));
168171
});
169172
it('renders a heading correctly', () => {
170-
const renderResult =
171-
renderer.renderToken(getFakeToken({type: 'heading', text: 'a heading text', depth: 3})).strings.join('');
173+
const renderResult = getRenderedResultString(getFakeToken({type: 'heading', text: 'a heading text', depth: 3}));
172174

173175
assert.isTrue(renderResult.includes('<h3'));
174176
});
175177
it('renders strong correctly', () => {
176-
const renderResult = renderer.renderToken(getFakeToken({type: 'strong', text: 'a strong text'})).strings.join('');
178+
const renderResult = getRenderedResultString(getFakeToken({type: 'strong', text: 'a strong text'}));
177179

178180
assert.isTrue(renderResult.includes('<strong'));
179181
});
180182
it('renders em correctly', () => {
181-
const renderResult = renderer.renderToken(getFakeToken({type: 'em', text: 'em text'})).strings.join('');
183+
const renderResult = getRenderedResultString(getFakeToken({type: 'em', text: 'em text'}));
182184

183185
assert.isTrue(renderResult.includes('<em'));
184186
});
@@ -194,46 +196,50 @@ describeWithEnvironment('MarkdownView', () => {
194196

195197
describe('MarkdownInsightRenderer renderToken', () => {
196198
const renderer = new MarkdownView.MarkdownView.MarkdownInsightRenderer();
199+
200+
function getRenderedLitTemplate(token: Marked.Marked.Token) {
201+
return renderer.renderToken(token) as Lit.TemplateResult;
202+
}
197203
it('renders link as texts', () => {
198-
const result =
199-
renderer.renderToken({type: 'link', text: 'learn more', href: 'https://example.test'} as Marked.Marked.Token);
204+
const result = getRenderedLitTemplate(
205+
{type: 'link', text: 'learn more', href: 'https://example.test'} as Marked.Marked.Token);
200206
assert.strictEqual(result.values[0], 'learn more');
201207
});
202208
it('renders link urls as texts', () => {
203-
const result = renderer.renderToken({type: 'link', href: 'https://example.test'} as Marked.Marked.Token);
209+
const result = getRenderedLitTemplate({type: 'link', href: 'https://example.test'} as Marked.Marked.Token);
204210
assert.strictEqual(result.values[0], 'https://example.test');
205211
});
206212
it('does not render URLs with "javascript:"', () => {
207-
const result = renderer.renderToken(
213+
const result = getRenderedLitTemplate(
208214
{type: 'link', text: 'learn more', href: 'javascript:alert("test")'} as Marked.Marked.Token);
209215
assert.isUndefined(result.values[0]);
210216
});
211217
it('does not render chrome:// URLs', () => {
212218
const result =
213-
renderer.renderToken({type: 'link', text: 'learn more', href: 'chrome://settings'} as Marked.Marked.Token);
219+
getRenderedLitTemplate({type: 'link', text: 'learn more', href: 'chrome://settings'} as Marked.Marked.Token);
214220
assert.isUndefined(result.values[0]);
215221
});
216222
it('does not render invalid URLs', () => {
217-
const result = renderer.renderToken({type: 'link', text: 'learn more', href: '123'} as Marked.Marked.Token);
223+
const result = getRenderedLitTemplate({type: 'link', text: 'learn more', href: '123'} as Marked.Marked.Token);
218224
assert.isUndefined(result.values[0]);
219225
});
220226
it('renders images as text', () => {
221-
const result = renderer.renderToken(
227+
const result = getRenderedLitTemplate(
222228
{type: 'image', text: 'learn more', href: 'https://example.test'} as Marked.Marked.Token);
223229
assert.strictEqual(result.values[0], 'learn more');
224230
});
225231
it('renders image urls as text', () => {
226-
const result = renderer.renderToken({type: 'image', href: 'https://example.test'} as Marked.Marked.Token);
232+
const result = getRenderedLitTemplate({type: 'image', href: 'https://example.test'} as Marked.Marked.Token);
227233
assert.strictEqual(result.values[0], 'https://example.test');
228234
});
229235
it('renders headings as headings with the `insight` class', () => {
230-
const renderResult = renderer.renderToken(getFakeToken({type: 'heading', text: 'a heading text', depth: 3}));
236+
const renderResult = getRenderedLitTemplate(getFakeToken({type: 'heading', text: 'a heading text', depth: 3}));
231237
const container = renderTemplateResult(renderResult);
232238
assert.isTrue(
233239
container.querySelector('h3')?.classList.contains('insight'), 'Expected `insight`-class to be applied');
234240
});
235241
it('renders unsupported tokens', () => {
236-
const result = renderer.renderToken({type: 'html', raw: '<!DOCTYPE html>'} as Marked.Marked.Token);
242+
const result = getRenderedLitTemplate({type: 'html', raw: '<!DOCTYPE html>'} as Marked.Marked.Token);
237243
assert(result.values.join('').includes('<!DOCTYPE html>'));
238244
});
239245
it('detects language but default to provided', () => {
@@ -344,7 +350,7 @@ console.log('test')
344350
it('renders using a custom renderer', () => {
345351
const codeBlock =
346352
renderString('`console.log()`', 'code', new class extends MarkdownView.MarkdownView.MarkdownLitRenderer {
347-
override templateForToken(token: Marked.Marked.Token): Lit.TemplateResult|null {
353+
override templateForToken(token: Marked.Marked.Token): Lit.LitTemplate|null {
348354
if (token.type === 'codespan') {
349355
return html`<code>overriden</code>`;
350356
}

front_end/ui/components/markdown_view/MarkdownView.ts

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ export class MarkdownLitRenderer {
159159
return Lit.Directives.classMap(classInfo);
160160
}
161161

162-
renderChildTokens(token: Marked.Marked.Token): Lit.TemplateResult[] {
162+
renderChildTokens(token: Marked.Marked.Token): Lit.LitTemplate[] {
163163
if ('tokens' in token && token.tokens) {
164164
return token.tokens.map(token => this.renderToken(token));
165165
}
@@ -222,7 +222,7 @@ export class MarkdownLitRenderer {
222222
// clang-format on
223223
}
224224

225-
templateForToken(token: Marked.Marked.MarkedToken): Lit.TemplateResult|null {
225+
templateForToken(token: Marked.Marked.MarkedToken): Lit.LitTemplate|null {
226226
switch (token.type) {
227227
case 'paragraph':
228228
return html`<p class=${this.customClassMapForToken('paragraph')}>${this.renderChildTokens(token)}</p>`;
@@ -239,8 +239,7 @@ export class MarkdownLitRenderer {
239239
case 'code':
240240
return this.renderCodeBlock(token);
241241
case 'space':
242-
// eslint-disable-next-line lit/prefer-nothing
243-
return html``;
242+
return Lit.nothing;
244243
case 'link':
245244
return html`<devtools-markdown-link
246245
class=${this.customClassMapForToken('link')}
@@ -266,7 +265,7 @@ export class MarkdownLitRenderer {
266265
}
267266
}
268267

269-
renderToken(token: Marked.Marked.Token): Lit.TemplateResult {
268+
renderToken(token: Marked.Marked.Token): Lit.LitTemplate {
270269
const template = this.templateForToken(token as Marked.Marked.MarkedToken);
271270
if (template === null) {
272271
throw new Error(`Markdown token type '${token.type}' not supported.`);
@@ -287,7 +286,7 @@ export class MarkdownInsightRenderer extends MarkdownLitRenderer {
287286
this.addCustomClasses({heading: 'insight'});
288287
}
289288

290-
override renderToken(token: Marked.Marked.Token): Lit.TemplateResult {
289+
override renderToken(token: Marked.Marked.Token): Lit.LitTemplate {
291290
const template = this.templateForToken(token as Marked.Marked.MarkedToken);
292291
if (template === null) {
293292
return html`${token.raw}`;
@@ -322,7 +321,7 @@ export class MarkdownInsightRenderer extends MarkdownLitRenderer {
322321
return '';
323322
}
324323

325-
override templateForToken(token: Marked.Marked.Token): Lit.TemplateResult|null {
324+
override templateForToken(token: Marked.Marked.Token): Lit.LitTemplate|null {
326325
switch (token.type) {
327326
case 'heading':
328327
return this.renderHeading(token as Marked.Marked.Tokens.Heading);

0 commit comments

Comments
 (0)