UNPKG

chrome-devtools-frontend

Version:
64 lines (54 loc) • 2.52 kB
// Copyright 2026 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. import type * as SDK from '../../core/sdk/sdk.js'; import * as Protocol from '../../generated/protocol.js'; import {Issue, IssueCategory, IssueKind} from './Issue.js'; import type {MarkdownIssueDescription} from './MarkdownIssueDescription.js'; export class WebInstallIssue extends Issue<Protocol.Audits.WebInstallIssueDetails> { constructor(issueDetails: Protocol.Audits.WebInstallIssueDetails, issuesModel: SDK.IssuesModel.IssuesModel|null) { super(`${Protocol.Audits.InspectorIssueCode.WebInstallIssue}::${issueDetails.reason}`, issueDetails, issuesModel); } override requests(): Protocol.Audits.AffectedRequest[] { const {manifestUrl, reason} = this.details(); if (reason === Protocol.Audits.WebInstallIssueReason.NoManifest || !manifestUrl) { return []; } return [{url: manifestUrl}]; } getCategory(): IssueCategory { return IssueCategory.OTHER; } getDescription(): MarkdownIssueDescription|null { switch (this.details().reason) { case Protocol.Audits.WebInstallIssueReason.ManifestParsingOrNetworkError: return {file: 'webInstallManifestParsingOrNetworkError.md', links: []}; case Protocol.Audits.WebInstallIssueReason.StartUrlInvalid: return {file: 'webInstallStartUrlInvalid.md', links: []}; case Protocol.Audits.WebInstallIssueReason.ManifestMissingNameOrShortName: return {file: 'webInstallManifestMissingNameOrShortName.md', links: []}; case Protocol.Audits.WebInstallIssueReason.ManifestMissingId: return {file: 'webInstallManifestMissingId.md', links: []}; case Protocol.Audits.WebInstallIssueReason.NoManifest: return {file: 'webInstallNoManifest.md', links: []}; default: console.warn('Unknown WebInstallIssueReason:', this.details().reason); return null; } } getKind(): IssueKind { return IssueKind.PAGE_ERROR; } primaryKey(): string { return JSON.stringify(this.details()); } static fromInspectorIssue(issuesModel: SDK.IssuesModel.IssuesModel|null, inspectorIssue: Protocol.Audits.InspectorIssue): WebInstallIssue[] { const details = inspectorIssue.details.webInstallIssueDetails; if (!details) { console.warn('Web install issue without details received.'); return []; } return [new WebInstallIssue(details, issuesModel)]; } }