[go: nahoru, domu]

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,
-    ]);
-  });
-});