Remove TrustedWebActivityIssue
Backend is removed in crrev.com/c/4503794
Protocol type is removed in crrev.com/c/4504099
Bug: 1441963
Change-Id: I2ecdd41e16f3460915d584abb4390da3c0c7e61c
Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/4503950
Reviewed-by: Wolfgang Beyer <wolfi@chromium.org>
Commit-Queue: Ella Ge <eirage@chromium.org>
diff --git a/config/gni/devtools_grd_files.gni b/config/gni/devtools_grd_files.gni
index f7a5be3..0cee550 100644
--- a/config/gni/devtools_grd_files.gni
+++ b/config/gni/devtools_grd_files.gni
@@ -342,9 +342,6 @@
"front_end/models/issues_manager/descriptions/SameSiteWarnCrossDowngradeRead.md",
"front_end/models/issues_manager/descriptions/SameSiteWarnCrossDowngradeSet.md",
"front_end/models/issues_manager/descriptions/SameSiteWarnStrictLaxDowngradeStrict.md",
- "front_end/models/issues_manager/descriptions/TwaDigitalAssetLinksFailed.md",
- "front_end/models/issues_manager/descriptions/TwaHttpError.md",
- "front_end/models/issues_manager/descriptions/TwaPageUnavailableOffline.md",
"front_end/models/issues_manager/descriptions/arInsecureContext.md",
"front_end/models/issues_manager/descriptions/arInvalidRegisterOsSourceHeader.md",
"front_end/models/issues_manager/descriptions/arInvalidRegisterOsTriggerHeader.md",
@@ -895,7 +892,6 @@
"front_end/models/issues_manager/RelatedIssue.js",
"front_end/models/issues_manager/SharedArrayBufferIssue.js",
"front_end/models/issues_manager/SourceFrameIssuesManager.js",
- "front_end/models/issues_manager/TrustedWebActivityIssue.js",
"front_end/models/javascript_metadata/DOMPinnedProperties.js",
"front_end/models/javascript_metadata/JavaScriptMetadata.js",
"front_end/models/javascript_metadata/NativeFunctions.js",
@@ -1221,7 +1217,6 @@
"front_end/panels/issues/AffectedSharedArrayBufferIssueDetailsView.js",
"front_end/panels/issues/AffectedSourcesView.js",
"front_end/panels/issues/AffectedTrackingSitesView.js",
- "front_end/panels/issues/AffectedTrustedWebActivityIssueDetailsView.js",
"front_end/panels/issues/AttributionReportingIssueDetailsView.js",
"front_end/panels/issues/CSPViolationsListView.js",
"front_end/panels/issues/CSPViolationsView.js",
diff --git a/front_end/core/host/UserMetrics.ts b/front_end/core/host/UserMetrics.ts
index ab158c0..43e2496 100644
--- a/front_end/core/host/UserMetrics.ts
+++ b/front_end/core/host/UserMetrics.ts
@@ -889,9 +889,6 @@
'CookieIssue::WarnSameSiteUnspecifiedCrossSiteContext::SetCookie' = 35,
'SharedArrayBufferIssue::TransferIssue' = 36,
'SharedArrayBufferIssue::CreationIssue' = 37,
- 'TrustedWebActivityIssue::kHttpError' = 38,
- 'TrustedWebActivityIssue::kUnavailableOffline' = 39,
- 'TrustedWebActivityIssue::kDigitalAssetLinks' = 40,
LowTextContrastIssue = 41,
'CorsIssue::InsecurePrivateNetwork' = 42,
'CorsIssue::InvalidHeaders' = 44,
diff --git a/front_end/models/issues_manager/BUILD.gn b/front_end/models/issues_manager/BUILD.gn
index f4f6ec5..61a0e69b 100644
--- a/front_end/models/issues_manager/BUILD.gn
+++ b/front_end/models/issues_manager/BUILD.gn
@@ -33,7 +33,6 @@
"RelatedIssue.ts",
"SharedArrayBufferIssue.ts",
"SourceFrameIssuesManager.ts",
- "TrustedWebActivityIssue.ts",
]
deps = [
@@ -149,9 +148,6 @@
"SameSiteWarnCrossDowngradeSet.md",
"SameSiteWarnStrictLaxDowngradeStrict.md",
"sharedArrayBuffer.md",
- "TwaDigitalAssetLinksFailed.md",
- "TwaHttpError.md",
- "TwaPageUnavailableOffline.md",
]
devtools_pre_built("descriptions") {
diff --git a/front_end/models/issues_manager/Issue.ts b/front_end/models/issues_manager/Issue.ts
index 87582be..c6b4cca 100644
--- a/front_end/models/issues_manager/Issue.ts
+++ b/front_end/models/issues_manager/Issue.ts
@@ -48,7 +48,6 @@
Cookie = 'Cookie',
HeavyAd = 'HeavyAd',
ContentSecurityPolicy = 'ContentSecurityPolicy',
- TrustedWebActivity = 'TrustedWebActivity',
LowTextContrast = 'LowTextContrast',
Cors = 'Cors',
AttributionReporting = 'AttributionReporting',
diff --git a/front_end/models/issues_manager/IssuesManager.ts b/front_end/models/issues_manager/IssuesManager.ts
index eabb977..74f30f2 100644
--- a/front_end/models/issues_manager/IssuesManager.ts
+++ b/front_end/models/issues_manager/IssuesManager.ts
@@ -25,7 +25,6 @@
import {CookieIssue} from './CookieIssue.js';
import {SharedArrayBufferIssue} from './SharedArrayBufferIssue.js';
import {SourceFrameIssuesManager} from './SourceFrameIssuesManager.js';
-import {TrustedWebActivityIssue} from './TrustedWebActivityIssue.js';
export {Events} from './IssuesManagerEvents.js';
@@ -70,10 +69,6 @@
SharedArrayBufferIssue.fromInspectorIssue,
],
[
- Protocol.Audits.InspectorIssueCode.TrustedWebActivityIssue,
- TrustedWebActivityIssue.fromInspectorIssue,
- ],
- [
Protocol.Audits.InspectorIssueCode.LowTextContrastIssue,
LowTextContrastIssue.fromInspectorIssue,
],
diff --git a/front_end/models/issues_manager/TrustedWebActivityIssue.ts b/front_end/models/issues_manager/TrustedWebActivityIssue.ts
deleted file mode 100644
index 8f93279..0000000
--- a/front_end/models/issues_manager/TrustedWebActivityIssue.ts
+++ /dev/null
@@ -1,115 +0,0 @@
-// Copyright 2021 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import * as i18n from '../../core/i18n/i18n.js';
-import type * as SDK from '../../core/sdk/sdk.js';
-import * as Protocol from '../../generated/protocol.js';
-
-import {Issue, IssueCategory, IssueKind} from './Issue.js';
-
-import {
- resolveLazyDescription,
- type LazyMarkdownIssueDescription,
- type MarkdownIssueDescription,
-} from './MarkdownIssueDescription.js';
-
-const UIStrings = {
- /**
- *@description Label for the link for Trusted Web Activity issue
- */
- changesToQualityCriteriaForPwas: 'Changes to quality criteria for PWAs using Trusted Web Activity',
-};
-const str_ = i18n.i18n.registerUIStrings('models/issues_manager/TrustedWebActivityIssue.ts', UIStrings);
-const i18nLazyString = i18n.i18n.getLazilyComputedLocalizedString.bind(undefined, str_);
-
-export class TrustedWebActivityIssue extends Issue {
- #issueDetails: Protocol.Audits.TrustedWebActivityIssueDetails;
-
- constructor(issueDetails: Protocol.Audits.TrustedWebActivityIssueDetails) {
- const issueCode =
- [Protocol.Audits.InspectorIssueCode.TrustedWebActivityIssue, issueDetails.violationType].join('::');
- super(issueCode);
- this.#issueDetails = issueDetails;
- }
-
- details(): Protocol.Audits.TrustedWebActivityIssueDetails {
- return this.#issueDetails;
- }
-
- getDescription(): MarkdownIssueDescription|null {
- const description = issueDescriptions.get(this.#issueDetails.violationType);
- if (!description) {
- return null;
- }
- return resolveLazyDescription(description);
- }
-
- getCategory(): IssueCategory {
- return IssueCategory.TrustedWebActivity;
- }
-
- primaryKey(): string {
- return `${Protocol.Audits.InspectorIssueCode.TrustedWebActivityIssue}-${JSON.stringify(this.#issueDetails)}`;
- }
-
- getKind(): IssueKind {
- return IssueKind.PageError;
- }
-
- static fromInspectorIssue(issuesModel: SDK.IssuesModel.IssuesModel, inspectorIssue: Protocol.Audits.InspectorIssue):
- TrustedWebActivityIssue[] {
- const twaQualityEnforcementDetails = inspectorIssue.details.twaQualityEnforcementDetails;
- if (!twaQualityEnforcementDetails) {
- console.warn('TWA Quality Enforcement issue without details received.');
- return [];
- }
- return [new TrustedWebActivityIssue(twaQualityEnforcementDetails)];
- }
-}
-
-const twaDigitalAssetLinksFailed = {
- file: 'TwaDigitalAssetLinksFailed.md',
- links: [{
- link: 'https://blog.chromium.org/2020/06/changes-to-quality-criteria-for-pwas.html',
- linkTitle: i18nLazyString(UIStrings.changesToQualityCriteriaForPwas),
- }],
-};
-
-const twaHttpError = {
- file: 'TwaHttpError.md',
- links: [{
- link: 'https://blog.chromium.org/2020/06/changes-to-quality-criteria-for-pwas.html',
- linkTitle: i18nLazyString(UIStrings.changesToQualityCriteriaForPwas),
- }],
-};
-
-const twaPageUnavailableOffline = {
- file: 'TwaPageUnavailableOffline.md',
- links: [{
- link: 'https://blog.chromium.org/2020/06/changes-to-quality-criteria-for-pwas.html',
- linkTitle: i18nLazyString(UIStrings.changesToQualityCriteriaForPwas),
- }],
-};
-
-export const httpViolationCode: string = [
- Protocol.Audits.InspectorIssueCode.TrustedWebActivityIssue,
- Protocol.Audits.TwaQualityEnforcementViolationType.KHttpError,
-].join('::');
-
-export const offlineViolationCode: string = [
- Protocol.Audits.InspectorIssueCode.TrustedWebActivityIssue,
- Protocol.Audits.TwaQualityEnforcementViolationType.KUnavailableOffline,
-].join('::');
-
-export const assetlinkViolationCode: string = [
- Protocol.Audits.InspectorIssueCode.TrustedWebActivityIssue,
- Protocol.Audits.TwaQualityEnforcementViolationType.KDigitalAssetLinks,
-].join('::');
-
-const issueDescriptions: Map<Protocol.Audits.TwaQualityEnforcementViolationType, LazyMarkdownIssueDescription> =
- new Map([
- [Protocol.Audits.TwaQualityEnforcementViolationType.KHttpError, twaHttpError],
- [Protocol.Audits.TwaQualityEnforcementViolationType.KUnavailableOffline, twaPageUnavailableOffline],
- [Protocol.Audits.TwaQualityEnforcementViolationType.KDigitalAssetLinks, twaDigitalAssetLinksFailed],
- ]);
diff --git a/front_end/models/issues_manager/descriptions/TwaDigitalAssetLinksFailed.md b/front_end/models/issues_manager/descriptions/TwaDigitalAssetLinksFailed.md
deleted file mode 100644
index f7fa23e..0000000
--- a/front_end/models/issues_manager/descriptions/TwaDigitalAssetLinksFailed.md
+++ /dev/null
@@ -1,9 +0,0 @@
-# Digital asset links of the Trusted Web Activity failed verification. Your app may crash in the future.
-
-Digital Asset Links are used to verify your ownership of web origin(s) embedded in the Trusted Web Activity.
-
-The verification of Digital Asset Links has failed. This is most commonly caused by your Android app's signature not matching the content in your `.well-known/assetlinks.json` file.
-
-⚠️ In the future, your app may crash for users if your Digital Asset Links fail to verify.
-
-Please check your app’s signature and make sure it matches that in your `.well-known/assetlinks.json` file.
diff --git a/front_end/models/issues_manager/descriptions/TwaHttpError.md b/front_end/models/issues_manager/descriptions/TwaHttpError.md
deleted file mode 100644
index 3c15f41..0000000
--- a/front_end/models/issues_manager/descriptions/TwaHttpError.md
+++ /dev/null
@@ -1,9 +0,0 @@
-# Trusted Web Activity navigations must succeed or be handled by the ServiceWorker. Your app may crash in the future.
-
-Dead link (404) or 5xx status code encountered when navigating within the verified origin.
-
-In order to provide a seamless experience on par with Android apps, it is important for navigations within the verified origin in a Trusted Web Activity not result in broken links or internal errors.
-
-⚠️ In the future, your app may crash if the user navigates to a page and gets a 404 or 50x error. Ensure that all links on your origin are correct, or use a service worker to handle these errors gracefully.
-
-Please make sure your app doesn’t have 404 or 5xx errors, or use a service worker fetch event fallback response to handle the errors.
\ No newline at end of file
diff --git a/front_end/models/issues_manager/descriptions/TwaPageUnavailableOffline.md b/front_end/models/issues_manager/descriptions/TwaPageUnavailableOffline.md
deleted file mode 100644
index 169d5c7..0000000
--- a/front_end/models/issues_manager/descriptions/TwaPageUnavailableOffline.md
+++ /dev/null
@@ -1,9 +0,0 @@
-# Trusted Web Activity does not work offline. In the future, your app may crash if the user’s device goes offline.
-
-Navigation within the Trusted Web Activity leads to a page not available offline.
-
-Offline capabilities are important to create a seamless user experience on par with Android apps. Your app should provide a custom offline page.
-
-⚠️ In the future, your app may crash unless a proper offline handler is implemented using a ServiceWorker fetch handler.
-
-To resolve this issue, handle offline resource requests using a ServiceWorker.
diff --git a/front_end/models/issues_manager/issues_manager.ts b/front_end/models/issues_manager/issues_manager.ts
index cedd6fc..9b1a790 100644
--- a/front_end/models/issues_manager/issues_manager.ts
+++ b/front_end/models/issues_manager/issues_manager.ts
@@ -23,7 +23,6 @@
import * as RelatedIssue from './RelatedIssue.js';
import * as SharedArrayBufferIssue from './SharedArrayBufferIssue.js';
import * as SourceFrameIssuesManager from './SourceFrameIssuesManager.js';
-import * as TrustedWebActivityIssue from './TrustedWebActivityIssue.js';
export {
AttributionReportingIssue,
@@ -47,5 +46,4 @@
RelatedIssue,
SharedArrayBufferIssue,
SourceFrameIssuesManager,
- TrustedWebActivityIssue,
};
diff --git a/front_end/panels/issues/AffectedTrustedWebActivityIssueDetailsView.ts b/front_end/panels/issues/AffectedTrustedWebActivityIssueDetailsView.ts
deleted file mode 100644
index 5673915..0000000
--- a/front_end/panels/issues/AffectedTrustedWebActivityIssueDetailsView.ts
+++ /dev/null
@@ -1,85 +0,0 @@
-// Copyright 2021 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import * as i18n from '../../core/i18n/i18n.js';
-import type * as Platform from '../../core/platform/platform.js';
-import * as IssuesManager from '../../models/issues_manager/issues_manager.js';
-
-import {AffectedResourcesView} from './AffectedResourcesView.js';
-
-const UIStrings = {
- /**
- *@description Label for number of affected resources indication in issue view
- */
- nResources: '{n, plural, =1 {# resource} other {# resources}}',
- /**
- *@description Title for a column in a Trusted Web Activity issue view
- */
- statusCode: 'Status code',
- /**
- *@description Text in Timeline UIUtils of the Performance panel
- */
- url: 'Url',
- /**
- *@description Title for a column in a Trusted Web Activity issue view
- */
- packageName: 'Package name',
- /**
- *@description Title for a column in a Trusted Web Activity issue view
- */
- packageSignature: 'Package signature',
-};
-const str_ = i18n.i18n.registerUIStrings('panels/issues/AffectedTrustedWebActivityIssueDetailsView.ts', UIStrings);
-const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
-export class AffectedTrustedWebActivityIssueDetailsView extends AffectedResourcesView {
- protected getResourceNameWithCount(count: number): Platform.UIString.LocalizedString {
- return i18nString(UIStrings.nResources, {n: count});
- }
-
- #appendDetail(twaIssue: IssuesManager.TrustedWebActivityIssue.TrustedWebActivityIssue): void {
- const element = document.createElement('tr');
- element.classList.add('affected-resource-row');
-
- const details = twaIssue.details();
- if (this.issue.code() === IssuesManager.TrustedWebActivityIssue.httpViolationCode && details.httpStatusCode) {
- this.appendIssueDetailCell(element, details.httpStatusCode.toString());
- this.appendIssueDetailCell(element, details.url);
- } else if (this.issue.code() === IssuesManager.TrustedWebActivityIssue.offlineViolationCode) {
- this.appendIssueDetailCell(element, details.url);
- } else if (this.issue.code() === IssuesManager.TrustedWebActivityIssue.assetlinkViolationCode) {
- this.appendIssueDetailCell(element, details.packageName || '');
- this.appendIssueDetailCell(element, details.url);
- this.appendIssueDetailCell(element, details.signature || '');
- }
-
- this.affectedResources.appendChild(element);
- }
-
- #appendDetails(twaIssues: Iterable<IssuesManager.TrustedWebActivityIssue.TrustedWebActivityIssue>): void {
- const header = document.createElement('tr');
- if (this.issue.code() === IssuesManager.TrustedWebActivityIssue.httpViolationCode) {
- this.appendColumnTitle(header, i18nString(UIStrings.statusCode));
- this.appendColumnTitle(header, i18nString(UIStrings.url));
- } else if (this.issue.code() === IssuesManager.TrustedWebActivityIssue.offlineViolationCode) {
- this.appendColumnTitle(header, i18nString(UIStrings.url));
- } else if (this.issue.code() === IssuesManager.TrustedWebActivityIssue.assetlinkViolationCode) {
- this.appendColumnTitle(header, i18nString(UIStrings.packageName));
- this.appendColumnTitle(header, i18nString(UIStrings.url));
- this.appendColumnTitle(header, i18nString(UIStrings.packageSignature));
- }
- this.affectedResources.appendChild(header);
-
- let count = 0;
- for (const twaIssue of twaIssues) {
- this.#appendDetail(twaIssue);
- count++;
- }
- this.updateAffectedResourceCount(count);
- }
-
- update(): void {
- this.clear();
- this.#appendDetails(this.issue.getTrustedWebActivityIssues());
- }
-}
diff --git a/front_end/panels/issues/BUILD.gn b/front_end/panels/issues/BUILD.gn
index 6424569..4300be5 100644
--- a/front_end/panels/issues/BUILD.gn
+++ b/front_end/panels/issues/BUILD.gn
@@ -29,7 +29,6 @@
"AffectedSharedArrayBufferIssueDetailsView.ts",
"AffectedSourcesView.ts",
"AffectedTrackingSitesView.ts",
- "AffectedTrustedWebActivityIssueDetailsView.ts",
"AttributionReportingIssueDetailsView.ts",
"CSPViolationsListView.ts",
"CSPViolationsView.ts",
diff --git a/front_end/panels/issues/IssueAggregator.ts b/front_end/panels/issues/IssueAggregator.ts
index 982ab3e..e690686 100644
--- a/front_end/panels/issues/IssueAggregator.ts
+++ b/front_end/panels/issues/IssueAggregator.ts
@@ -42,7 +42,6 @@
#lowContrastIssues = new Set<IssuesManager.LowTextContrastIssue.LowTextContrastIssue>();
#mixedContentIssues = new Set<IssuesManager.MixedContentIssue.MixedContentIssue>();
#sharedArrayBufferIssues = new Set<IssuesManager.SharedArrayBufferIssue.SharedArrayBufferIssue>();
- #trustedWebActivityIssues = new Set<IssuesManager.TrustedWebActivityIssue.TrustedWebActivityIssue>();
#quirksModeIssues = new Set<IssuesManager.QuirksModeIssue.QuirksModeIssue>();
#attributionReportingIssues = new Set<IssuesManager.AttributionReportingIssue.AttributionReportingIssue>();
#genericIssues = new Set<IssuesManager.GenericIssue.GenericIssue>();
@@ -98,10 +97,6 @@
return this.#mixedContentIssues;
}
- getTrustedWebActivityIssues(): Iterable<IssuesManager.TrustedWebActivityIssue.TrustedWebActivityIssue> {
- return this.#trustedWebActivityIssues;
- }
-
getCorsIssues(): Set<IssuesManager.CorsIssue.CorsIssue> {
return this.#corsIssues;
}
@@ -210,9 +205,6 @@
const key = JSON.stringify(details, ['parentFrame', 'blockedFrame', 'requestId', 'frameId', 'reason', 'request']);
this.#blockedByResponseDetails.set(key, details);
}
- if (issue instanceof IssuesManager.TrustedWebActivityIssue.TrustedWebActivityIssue) {
- this.#trustedWebActivityIssues.add(issue);
- }
if (issue instanceof IssuesManager.ContentSecurityPolicyIssue.ContentSecurityPolicyIssue) {
this.#cspIssues.add(issue);
}
diff --git a/front_end/panels/issues/IssueView.ts b/front_end/panels/issues/IssueView.ts
index 4cc42a7..d1f99cf 100644
--- a/front_end/panels/issues/IssueView.ts
+++ b/front_end/panels/issues/IssueView.ts
@@ -28,7 +28,6 @@
import {AffectedSharedArrayBufferIssueDetailsView} from './AffectedSharedArrayBufferIssueDetailsView.js';
import {AffectedSourcesView} from './AffectedSourcesView.js';
import {AffectedTrackingSitesView} from './AffectedTrackingSitesView.js';
-import {AffectedTrustedWebActivityIssueDetailsView} from './AffectedTrustedWebActivityIssueDetailsView.js';
import {CorsIssueDetailsView} from './CorsIssueDetailsView.js';
import {GenericIssueDetailsView} from './GenericIssueDetailsView.js';
import {AttributionReportingIssueDetailsView} from './AttributionReportingIssueDetailsView.js';
@@ -256,7 +255,6 @@
new AffectedBlockedByResponseView(this, this.#issue),
new AffectedSharedArrayBufferIssueDetailsView(this, this.#issue),
new AffectedElementsWithLowContrastView(this, this.#issue),
- new AffectedTrustedWebActivityIssueDetailsView(this, this.#issue),
new CorsIssueDetailsView(this, this.#issue),
new GenericIssueDetailsView(this, this.#issue),
new AffectedDocumentsInQuirksModeView(this, this.#issue),
diff --git a/front_end/panels/issues/IssuesPane.ts b/front_end/panels/issues/IssuesPane.ts
index e9ffa6c..868cc2a 100644
--- a/front_end/panels/issues/IssuesPane.ts
+++ b/front_end/panels/issues/IssuesPane.ts
@@ -43,10 +43,6 @@
*/
contentSecurityPolicy: 'Content Security Policy',
/**
- * @description Category title for a group of trusted web activity issues
- */
- trustedWebActivity: 'Trusted Web Activity',
- /**
* @description Text for other types of items
*/
other: 'Other',
@@ -136,8 +132,6 @@
return i18nString(UIStrings.heavyAds);
case IssuesManager.Issue.IssueCategory.ContentSecurityPolicy:
return i18nString(UIStrings.contentSecurityPolicy);
- case IssuesManager.Issue.IssueCategory.TrustedWebActivity:
- return i18nString(UIStrings.trustedWebActivity);
case IssuesManager.Issue.IssueCategory.LowTextContrast:
return i18nString(UIStrings.lowTextContrast);
case IssuesManager.Issue.IssueCategory.Cors:
diff --git a/test/e2e/issues/BUILD.gn b/test/e2e/issues/BUILD.gn
index 5e5a121..77dc74b 100644
--- a/test/e2e/issues/BUILD.gn
+++ b/test/e2e/issues/BUILD.gn
@@ -31,7 +31,6 @@
"quota-issues_test.ts",
"report-only_test.ts",
"sab-issues_test.ts",
- "twa-issues_test.ts",
]
deps = [
diff --git a/test/e2e/issues/twa-issues_test.ts b/test/e2e/issues/twa-issues_test.ts
deleted file mode 100644
index a62d546..0000000
--- a/test/e2e/issues/twa-issues_test.ts
+++ /dev/null
@@ -1,106 +0,0 @@
-// Copyright 2021 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import {assertNotNullOrUndefined, getBrowserAndPages, goToResource} from '../../shared/helper.js';
-import {describe, it} from '../../shared/mocha-extensions.js';
-import {
- expandIssue,
- getIssueByTitle,
- getResourcesElement,
- navigateToIssuesTab,
- waitForTableFromResourceSectionContents,
-} from '../helpers/issues-helpers.js';
-
-describe('Trusted Web Activity issue', async () => {
- beforeEach(async () => {
- await goToResource('empty.html');
- });
-
- it('should display correct information for type kHttpError', async () => {
- await navigateToIssuesTab();
- const {frontend} = getBrowserAndPages();
- frontend.evaluate(() => {
- const issue = {
- 'code': 'TrustedWebActivityIssue',
- 'details': {
- 'twaQualityEnforcementDetails': {
- 'url': 'test1.example.com',
- 'violationType': 'kHttpError',
- 'httpStatusCode': 404,
- },
- },
- };
- // @ts-ignore
- window.addIssueForTest(issue);
- });
- await expandIssue();
- const issueElement = await getIssueByTitle(
- 'Trusted Web Activity navigations must succeed or be handled by the ServiceWorker. Your app may crash in the future.');
- assertNotNullOrUndefined(issueElement);
- const section = await getResourcesElement('1 resource', issueElement);
- const expectedTableRows = [
- ['Status code', 'Url'],
- ['404', 'test1.example.com'],
- ];
- await waitForTableFromResourceSectionContents(section.content, expectedTableRows);
- });
-
- it('should display correct information for type kUnavailableOffline', async () => {
- await navigateToIssuesTab();
- const {frontend} = getBrowserAndPages();
- frontend.evaluate(() => {
- const issue = {
- 'code': 'TrustedWebActivityIssue',
- 'details': {
- 'twaQualityEnforcementDetails': {
- 'url': 'test2.example.com',
- 'violationType': 'kUnavailableOffline',
- },
- },
- };
- // @ts-ignore
- window.addIssueForTest(issue);
- });
- await expandIssue();
- const issueElement = await getIssueByTitle(
- 'Trusted Web Activity does not work offline. In the future, your app may crash if the user’s device goes offline.');
- assertNotNullOrUndefined(issueElement);
- const section = await getResourcesElement('1 resource', issueElement);
- const expectedTableRows = [
- ['Url'],
- ['test2.example.com'],
- ];
- await waitForTableFromResourceSectionContents(section.content, expectedTableRows);
- });
-
- it('should display correct information for type kDigitalAssetLinks', async () => {
- await navigateToIssuesTab();
- const {frontend} = getBrowserAndPages();
- frontend.evaluate(() => {
- const issue = {
- 'code': 'TrustedWebActivityIssue',
- 'details': {
- 'twaQualityEnforcementDetails': {
- 'url': 'test3.example.com',
- 'violationType': 'kDigitalAssetLinks',
- 'packageName': 'test.package',
- 'signature': '1A:2B:3C',
- },
- },
- };
- // @ts-ignore
- window.addIssueForTest(issue);
- });
- await expandIssue();
- const issueElement = await getIssueByTitle(
- 'Digital asset links of the Trusted Web Activity failed verification. Your app may crash in the future.');
- assertNotNullOrUndefined(issueElement);
- const section = await getResourcesElement('1 resource', issueElement);
- const expectedTableRows = [
- ['Package name', 'Url', 'Package signature'],
- ['test.package', 'test3.example.com', '1A:2B:3C'],
- ];
- await waitForTableFromResourceSectionContents(section.content, expectedTableRows);
- });
-});
diff --git a/test/unittests/front_end/panels/issues/BUILD.gn b/test/unittests/front_end/panels/issues/BUILD.gn
index 0217481..54e2500 100644
--- a/test/unittests/front_end/panels/issues/BUILD.gn
+++ b/test/unittests/front_end/panels/issues/BUILD.gn
@@ -12,7 +12,6 @@
"IssueAggregator_test.ts",
"IssueView_test.ts",
"LowContrastIssuesAggregation_test.ts",
- "TrustedWebActivityIssuesAggregation_test.ts",
]
deps = [
diff --git a/test/unittests/front_end/panels/issues/TrustedWebActivityIssuesAggregation_test.ts b/test/unittests/front_end/panels/issues/TrustedWebActivityIssuesAggregation_test.ts
deleted file mode 100644
index 3e0ed75..0000000
--- a/test/unittests/front_end/panels/issues/TrustedWebActivityIssuesAggregation_test.ts
+++ /dev/null
@@ -1,88 +0,0 @@
-// Copyright 2021 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-const {assert} = chai;
-
-import * as Issues from '../../../../../front_end/panels/issues/issues.js';
-import * as IssuesManager from '../../../../../front_end/models/issues_manager/issues_manager.js';
-import type * as SDK from '../../../../../front_end/core/sdk/sdk.js';
-import {MockIssuesModel} from '../../models/issues_manager/MockIssuesModel.js';
-import {MockIssuesManager} from '../../models/issues_manager/MockIssuesManager.js';
-import * as Protocol from '../../../../../front_end/generated/protocol.js';
-
-describe('AggregatedIssue', async () => {
- it('aggregates two TWA issues with same violationType correctly', () => {
- const mockModel = new MockIssuesModel([]) as unknown as SDK.IssuesModel.IssuesModel;
- const mockManager = new MockIssuesManager([]) as unknown as IssuesManager.IssuesManager.IssuesManager;
- const details1 = {
- violationType: Protocol.Audits.TwaQualityEnforcementViolationType.KHttpError,
- url: 'test.url1.com',
- httpStatusCode: 500,
- };
- const issue1 = new IssuesManager.TrustedWebActivityIssue.TrustedWebActivityIssue(details1);
- const details2 = {
- violationType: Protocol.Audits.TwaQualityEnforcementViolationType.KHttpError,
- url: 'test.url2.com',
- httpStatusCode: 400,
- };
- const issue2 = new IssuesManager.TrustedWebActivityIssue.TrustedWebActivityIssue(details2);
-
- const aggregator = new Issues.IssueAggregator.IssueAggregator(mockManager);
- mockManager.dispatchEventToListeners(
- IssuesManager.IssuesManager.Events.IssueAdded, {issuesModel: mockModel, issue: issue1});
- mockManager.dispatchEventToListeners(
- IssuesManager.IssuesManager.Events.IssueAdded, {issuesModel: mockModel, issue: issue2});
-
- const issues = Array.from(aggregator.aggregatedIssues());
- assert.strictEqual(issues.length, 1);
- const violationType = [...issues[0].getTrustedWebActivityIssues()].map(r => r.details().violationType).sort();
- assert.deepStrictEqual(violationType, [
- Protocol.Audits.TwaQualityEnforcementViolationType.KHttpError,
- Protocol.Audits.TwaQualityEnforcementViolationType.KHttpError,
- ]);
- const httpStatusCode = [...issues[0].getTrustedWebActivityIssues()].map(r => r.details().httpStatusCode).sort();
- assert.deepStrictEqual(httpStatusCode, [400, 500]);
- const url = [...issues[0].getTrustedWebActivityIssues()].map(r => r.details().url).sort();
- assert.deepStrictEqual(url, ['test.url1.com', 'test.url2.com']);
- });
-
- it('TWA issues with different violationType do not aggregate', () => {
- const mockModel = new MockIssuesModel([]) as unknown as SDK.IssuesModel.IssuesModel;
- const mockManager = new MockIssuesManager([]) as unknown as IssuesManager.IssuesManager.IssuesManager;
- const details1 = {
- violationType: Protocol.Audits.TwaQualityEnforcementViolationType.KHttpError,
- url: 'test.url1.com',
- httpStatusCode: 500,
- };
- const issue1 = new IssuesManager.TrustedWebActivityIssue.TrustedWebActivityIssue(details1);
- const details2 = {
- violationType: Protocol.Audits.TwaQualityEnforcementViolationType.KUnavailableOffline,
- url: 'test.url2.com',
- };
- const issue2 = new IssuesManager.TrustedWebActivityIssue.TrustedWebActivityIssue(details2);
- const details3 = {
- violationType: Protocol.Audits.TwaQualityEnforcementViolationType.KDigitalAssetLinks,
- url: 'test.url3.com',
- };
- const issue3 = new IssuesManager.TrustedWebActivityIssue.TrustedWebActivityIssue(details3);
-
- const aggregator = new Issues.IssueAggregator.IssueAggregator(mockManager);
- mockManager.dispatchEventToListeners(
- IssuesManager.IssuesManager.Events.IssueAdded, {issuesModel: mockModel, issue: issue1});
- mockManager.dispatchEventToListeners(
- IssuesManager.IssuesManager.Events.IssueAdded, {issuesModel: mockModel, issue: issue2});
- mockManager.dispatchEventToListeners(
- IssuesManager.IssuesManager.Events.IssueAdded, {issuesModel: mockModel, issue: issue3});
-
- const issues = Array.from(aggregator.aggregatedIssues());
- assert.strictEqual(issues.length, 3);
- const violationType =
- [...issues].map(r => Array.from(r.getTrustedWebActivityIssues())[0].details().violationType).sort();
- assert.deepStrictEqual(violationType, [
- Protocol.Audits.TwaQualityEnforcementViolationType.KDigitalAssetLinks,
- Protocol.Audits.TwaQualityEnforcementViolationType.KHttpError,
- Protocol.Audits.TwaQualityEnforcementViolationType.KUnavailableOffline,
- ]);
- });
-});