chrome-devtools-frontend 1.0.1543472 → 1.0.1545096

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (166) hide show
  1. package/AUTHORS +1 -0
  2. package/config/typescript/tsconfig.eslint.json +1 -0
  3. package/front_end/core/common/ParsedURL.ts +1 -1
  4. package/front_end/core/common/common.ts +0 -2
  5. package/front_end/core/host/AidaClient.ts +10 -7
  6. package/front_end/core/host/DispatchHttpRequestClient.ts +18 -3
  7. package/front_end/core/protocol_client/CDPConnection.ts +3 -3
  8. package/front_end/core/protocol_client/DevToolsCDPConnection.ts +2 -1
  9. package/front_end/core/root/Runtime.ts +8 -7
  10. package/front_end/core/sdk/CPUThrottlingManager.ts +0 -4
  11. package/front_end/core/sdk/CSSMatchedStyles.ts +7 -9
  12. package/front_end/core/sdk/CSSMetadata.ts +17 -5
  13. package/front_end/core/sdk/CSSModel.ts +1 -1
  14. package/front_end/core/sdk/CSSRule.ts +18 -6
  15. package/front_end/core/sdk/ChildTargetManager.ts +2 -2
  16. package/front_end/core/sdk/NetworkManager.ts +6 -8
  17. package/front_end/core/sdk/NetworkRequest.ts +4 -0
  18. package/front_end/core/sdk/SDKModel.ts +4 -2
  19. package/front_end/core/sdk/TargetManager.ts +14 -15
  20. package/front_end/entrypoints/heap_snapshot_worker/HeapSnapshotLoader.ts +2 -0
  21. package/front_end/entrypoints/main/MainImpl.ts +0 -16
  22. package/front_end/foundation/Universe.ts +12 -1
  23. package/front_end/generated/Deprecation.ts +4 -0
  24. package/front_end/generated/InspectorBackendCommands.ts +2 -5
  25. package/front_end/generated/SupportedCSSProperties.js +0 -23
  26. package/front_end/generated/protocol-mapping.d.ts +0 -15
  27. package/front_end/generated/protocol-proxy-api.d.ts +0 -11
  28. package/front_end/generated/protocol.ts +2 -34
  29. package/front_end/models/ai_assistance/agents/AiAgent.ts +10 -8
  30. package/front_end/models/ai_assistance/agents/PatchAgent.ts +7 -1
  31. package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +0 -5
  32. package/front_end/models/ai_assistance/agents/StylingAgent.ts +4 -8
  33. package/front_end/models/ai_code_completion/AiCodeCompletion.ts +1 -1
  34. package/front_end/models/ai_code_generation/AiCodeGeneration.ts +5 -3
  35. package/front_end/models/bindings/CSSWorkspaceBinding.ts +8 -7
  36. package/front_end/models/bindings/DebuggerWorkspaceBinding.ts +9 -8
  37. package/front_end/models/bindings/ResourceMapping.ts +57 -15
  38. package/front_end/models/live-metrics/LiveMetrics.ts +12 -20
  39. package/front_end/panels/accessibility/AccessibilityNodeView.ts +6 -2
  40. package/front_end/panels/ai_assistance/AiAssistancePanel.ts +3 -2
  41. package/front_end/panels/ai_assistance/components/ChatView.ts +2 -4
  42. package/front_end/panels/ai_assistance/components/PerformanceAgentMarkdownRenderer.ts +2 -1
  43. package/front_end/panels/ai_assistance/components/UserActionRow.ts +2 -1
  44. package/front_end/panels/animation/AnimationTimeline.ts +6 -6
  45. package/front_end/panels/application/ApplicationPanelSidebar.ts +6 -7
  46. package/front_end/panels/application/{components/FrameDetailsView.ts → FrameDetailsView.ts} +134 -165
  47. package/front_end/panels/application/{components/OriginTrialTreeView.ts → OriginTrialTreeView.ts} +9 -9
  48. package/front_end/panels/application/application.ts +4 -0
  49. package/front_end/panels/application/components/ReportsGrid.ts +7 -2
  50. package/front_end/panels/application/components/SharedStorageAccessGrid.ts +5 -3
  51. package/front_end/panels/application/components/StackTrace.ts +5 -3
  52. package/front_end/panels/application/components/TrustTokensView.ts +7 -1
  53. package/front_end/panels/application/components/components.ts +2 -4
  54. package/front_end/panels/application/{components/frameDetailsReportView.css → frameDetailsReportView.css} +5 -1
  55. package/front_end/panels/application/preloading/PreloadingView.ts +10 -4
  56. package/front_end/panels/application/preloading/components/PreloadingDisabledInfobar.ts +7 -11
  57. package/front_end/panels/application/preloading/components/UsedPreloadingView.ts +15 -3
  58. package/front_end/panels/browser_debugger/DOMBreakpointsSidebarPane.ts +12 -13
  59. package/front_end/panels/common/BadgeNotification.ts +2 -1
  60. package/front_end/panels/{elements → common}/DOMLinkifier.ts +13 -8
  61. package/front_end/panels/common/GdpSignUpDialog.ts +2 -1
  62. package/front_end/panels/common/common.ts +1 -0
  63. package/front_end/panels/console/ConsoleViewMessage.ts +4 -4
  64. package/front_end/panels/css_overview/CSSOverviewCompletedView.ts +2 -1
  65. package/front_end/panels/elements/ElementStatePaneWidget.ts +2 -1
  66. package/front_end/panels/elements/ElementsTreeElement.ts +3 -1
  67. package/front_end/panels/elements/StylePropertiesSection.ts +52 -15
  68. package/front_end/panels/elements/StylePropertyTreeElement.ts +8 -3
  69. package/front_end/panels/elements/StylesSidebarPane.ts +24 -14
  70. package/front_end/panels/elements/elements-meta.ts +0 -13
  71. package/front_end/panels/elements/elements.ts +0 -3
  72. package/front_end/panels/explain/components/ConsoleInsight.ts +31 -20
  73. package/front_end/panels/issues/AffectedResourcesView.ts +2 -1
  74. package/front_end/panels/lighthouse/LighthouseProtocolService.ts +3 -6
  75. package/front_end/panels/lighthouse/LighthouseReportRenderer.ts +2 -1
  76. package/front_end/panels/network/NetworkLogView.ts +1 -1
  77. package/front_end/panels/recorder/RecorderController.ts +7 -1
  78. package/front_end/panels/settings/FrameworkIgnoreListSettingsTab.ts +2 -1
  79. package/front_end/panels/settings/SettingsScreen.ts +3 -2
  80. package/front_end/panels/sources/AiCodeCompletionPlugin.ts +42 -294
  81. package/front_end/panels/sources/DebuggerPausedMessage.ts +3 -3
  82. package/front_end/panels/sources/SourcesPanel.ts +5 -1
  83. package/front_end/panels/timeline/TimelineUIUtils.ts +3 -2
  84. package/front_end/panels/timeline/components/LiveMetricsView.ts +18 -6
  85. package/front_end/panels/timeline/components/MetricCard.ts +2 -2
  86. package/front_end/panels/timeline/components/insights/NodeLink.ts +4 -4
  87. package/front_end/panels/timeline/overlays/components/EntryLabelOverlay.ts +2 -1
  88. package/front_end/panels/timeline/timeline-meta.ts +0 -10
  89. package/front_end/panels/timeline/timeline.ts +0 -2
  90. package/front_end/panels/whats_new/ReleaseNoteView.ts +2 -1
  91. package/front_end/panels/whats_new/WhatsNewImpl.ts +3 -2
  92. package/front_end/third_party/chromium/README.chromium +1 -1
  93. package/front_end/third_party/puppeteer/README.chromium +2 -2
  94. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/HTTPRequest.d.ts +1 -0
  95. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/HTTPRequest.d.ts.map +1 -1
  96. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/HTTPRequest.js +4 -1
  97. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/HTTPRequest.js.map +1 -1
  98. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/NetworkEventManager.d.ts +1 -0
  99. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/NetworkEventManager.d.ts.map +1 -1
  100. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/NetworkEventManager.js +8 -0
  101. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/NetworkEventManager.js.map +1 -1
  102. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/NetworkManager.d.ts.map +1 -1
  103. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/NetworkManager.js +22 -0
  104. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/NetworkManager.js.map +1 -1
  105. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/injected/injected.d.ts +1 -1
  106. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.d.ts +3 -3
  107. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js +3 -3
  108. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js.map +1 -1
  109. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/Mutex.d.ts +2 -2
  110. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/version.d.ts +1 -1
  111. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/version.js +1 -1
  112. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.js +34 -6
  113. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/HTTPRequest.d.ts +1 -0
  114. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/HTTPRequest.d.ts.map +1 -1
  115. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/HTTPRequest.js +4 -1
  116. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/HTTPRequest.js.map +1 -1
  117. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/NetworkEventManager.d.ts +1 -0
  118. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/NetworkEventManager.d.ts.map +1 -1
  119. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/NetworkEventManager.js +8 -0
  120. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/NetworkEventManager.js.map +1 -1
  121. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/NetworkManager.d.ts.map +1 -1
  122. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/NetworkManager.js +22 -0
  123. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/NetworkManager.js.map +1 -1
  124. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.d.ts +3 -3
  125. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js +3 -3
  126. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js.map +1 -1
  127. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/version.d.ts +1 -1
  128. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/version.js +1 -1
  129. package/front_end/third_party/puppeteer/package/package.json +2 -2
  130. package/front_end/third_party/puppeteer/package/src/cdp/HTTPRequest.ts +5 -1
  131. package/front_end/third_party/puppeteer/package/src/cdp/NetworkEventManager.ts +16 -1
  132. package/front_end/third_party/puppeteer/package/src/cdp/NetworkManager.ts +28 -0
  133. package/front_end/third_party/puppeteer/package/src/revisions.ts +3 -3
  134. package/front_end/third_party/puppeteer/package/src/util/version.ts +1 -1
  135. package/front_end/tsconfig.json +1 -0
  136. package/front_end/ui/components/buttons/Button.docs.ts +6 -5
  137. package/front_end/ui/components/snackbars/Snackbars.docs.ts +1 -1
  138. package/front_end/ui/components/spinners/Spinners.docs.ts +1 -1
  139. package/front_end/ui/components/survey_link/SurveyLink.docs.ts +2 -1
  140. package/front_end/ui/components/switch/Switch.docs.ts +1 -1
  141. package/front_end/ui/components/text_editor/AiCodeCompletionProvider.ts +8 -5
  142. package/front_end/ui/components/tooltips/Tooltip.docs.ts +3 -3
  143. package/front_end/ui/helpers/OpenInNewTab.ts +87 -0
  144. package/front_end/ui/helpers/helpers.ts +5 -0
  145. package/front_end/ui/i18n/i18n.ts +16 -0
  146. package/front_end/ui/legacy/ContextMenu.docs.ts +12 -11
  147. package/front_end/ui/legacy/RadioButton.docs.ts +1 -1
  148. package/front_end/ui/legacy/SelectMenu.docs.ts +1 -1
  149. package/front_end/ui/legacy/Slider.docs.ts +1 -1
  150. package/front_end/ui/legacy/UIUtils.ts +1 -34
  151. package/front_end/ui/legacy/Widget.ts +56 -25
  152. package/front_end/ui/legacy/XLink.ts +4 -6
  153. package/front_end/ui/legacy/components/color_picker/ContrastDetails.ts +2 -1
  154. package/front_end/ui/legacy/components/object_ui/ObjectPopoverHelper.ts +3 -1
  155. package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +294 -336
  156. package/front_end/ui/legacy/components/utils/Linkifier.ts +2 -1
  157. package/front_end/ui/legacy/inspectorCommon.css +0 -4
  158. package/mcp/mcp.ts +1 -0
  159. package/mcp/tsconfig.json +16 -0
  160. package/package.json +2 -2
  161. package/front_end/core/common/Linkifier.ts +0 -55
  162. package/front_end/panels/timeline/CLSLinkifier.ts +0 -58
  163. package/front_end/ui/components/expandable_list/ExpandableList.docs.ts +0 -30
  164. /package/front_end/panels/application/{components/originTrialTokenRows.css → originTrialTokenRows.css} +0 -0
  165. /package/front_end/panels/application/{components/originTrialTreeView.css → originTrialTreeView.css} +0 -0
  166. /package/front_end/panels/{elements → common}/domLinkifier.css +0 -0
@@ -163,7 +163,8 @@ export class LiveMetrics extends Common.ObjectWrapper.ObjectWrapper<EventTypes>
163
163
  * DOM nodes can't be sent over a runtime binding, so we have to retrieve
164
164
  * them separately.
165
165
  */
166
- async #resolveNodeRef(index: number, executionContextId: Protocol.Runtime.ExecutionContextId): Promise<NodeRef|null> {
166
+ async #resolveNodeRef(index: number, executionContextId: Protocol.Runtime.ExecutionContextId):
167
+ Promise<SDK.DOMModel.DOMNode|null> {
167
168
  if (!this.#target) {
168
169
  return null;
169
170
  }
@@ -195,8 +196,7 @@ export class LiveMetrics extends Common.ObjectWrapper.ObjectWrapper<EventTypes>
195
196
  return null;
196
197
  }
197
198
 
198
- const link = await Common.Linkifier.Linkifier.linkify(node);
199
- return {node, link};
199
+ return node;
200
200
  } catch {
201
201
  return null;
202
202
  } finally {
@@ -236,26 +236,23 @@ export class LiveMetrics extends Common.ObjectWrapper.ObjectWrapper<EventTypes>
236
236
  ...this.#layoutShifts.flatMap(shift => shift.affectedNodeRefs),
237
237
  ].filter(nodeRef => !!nodeRef);
238
238
 
239
- const idsToRefresh = new Set(toRefresh.map(nodeRef => nodeRef.node.backendNodeId()));
239
+ const idsToRefresh = new Set(toRefresh.map(nodeRef => nodeRef.backendNodeId()));
240
240
  const nodes = await domModel.pushNodesByBackendIdsToFrontend(idsToRefresh);
241
241
  if (!nodes) {
242
242
  return;
243
243
  }
244
244
 
245
- const allPromises = toRefresh.map(async nodeRef => {
246
- const refreshedNode = nodes.get(nodeRef.node.backendNodeId());
245
+ for (let i = 0; i < toRefresh.length; i++) {
246
+ const refreshedNode = nodes.get(toRefresh[i].backendNodeId());
247
247
 
248
248
  // It is possible for the refreshed node to be undefined even though it was defined previously.
249
249
  // We should keep the affected nodes consistent from the user perspective, so we will just keep the stale node instead of removing it.
250
250
  if (!refreshedNode) {
251
- return;
251
+ continue;
252
252
  }
253
253
 
254
- nodeRef.node = refreshedNode;
255
- nodeRef.link = await Common.Linkifier.Linkifier.linkify(refreshedNode);
256
- });
257
-
258
- await Promise.all(allPromises);
254
+ toRefresh[i] = refreshedNode;
255
+ }
259
256
 
260
257
  this.#sendStatusUpdate();
261
258
  }
@@ -599,14 +596,9 @@ export interface MetricValue {
599
596
  warnings?: string[];
600
597
  }
601
598
 
602
- export interface NodeRef {
603
- node: SDK.DOMModel.DOMNode;
604
- link: Node;
605
- }
606
-
607
599
  export interface LcpValue extends MetricValue {
608
600
  phases: Spec.LcpPhases;
609
- nodeRef?: NodeRef;
601
+ nodeRef?: SDK.DOMModel.DOMNode;
610
602
  }
611
603
 
612
604
  export interface InpValue extends MetricValue {
@@ -621,7 +613,7 @@ export interface ClsValue extends MetricValue {
621
613
  export interface LayoutShift {
622
614
  score: number;
623
615
  uniqueLayoutShiftId: Spec.UniqueLayoutShiftId;
624
- affectedNodeRefs: NodeRef[];
616
+ affectedNodeRefs: SDK.DOMModel.DOMNode[];
625
617
  }
626
618
 
627
619
  export interface Interaction {
@@ -633,7 +625,7 @@ export interface Interaction {
633
625
  nextPaintTime: number;
634
626
  phases: Spec.InpPhases;
635
627
  longAnimationFrameTimings: Spec.PerformanceLongAnimationFrameTimingJSON[];
636
- nodeRef?: NodeRef;
628
+ nodeRef?: SDK.DOMModel.DOMNode;
637
629
  }
638
630
 
639
631
  export interface StatusEvent {
@@ -10,6 +10,7 @@ import * as Protocol from '../../generated/protocol.js';
10
10
  import * as uiI18n from '../../ui/i18n/i18n.js';
11
11
  import * as UI from '../../ui/legacy/legacy.js';
12
12
  import * as VisualLogging from '../../ui/visual_logging/visual_logging.js';
13
+ import * as PanelsCommon from '../common/common.js';
13
14
 
14
15
  import accessibilityNodeStyles from './accessibilityNode.css.js';
15
16
  import {AXAttributes, AXNativeSourceTypes, AXSourceTypes} from './AccessibilityStrings.js';
@@ -587,8 +588,11 @@ export class AXRelatedNodeElement {
587
588
  const valueElement = document.createElement('span');
588
589
  element.appendChild(valueElement);
589
590
  void this.deferredNode.resolvePromise().then(node => {
590
- void Common.Linkifier.Linkifier.linkify(node, {tooltip: undefined, preventKeyboardFocus: true})
591
- .then(linkfied => valueElement.appendChild(linkfied));
591
+ if (!node) {
592
+ return;
593
+ }
594
+ valueElement.appendChild(PanelsCommon.DOMLinkifier.Linkifier.instance().linkify(
595
+ node, {tooltip: undefined, preventKeyboardFocus: true}));
592
596
  });
593
597
  } else if (this.idref) {
594
598
  element.classList.add('invalid');
@@ -17,6 +17,7 @@ import * as TextUtils from '../../models/text_utils/text_utils.js';
17
17
  import * as Workspace from '../../models/workspace/workspace.js';
18
18
  import * as Buttons from '../../ui/components/buttons/buttons.js';
19
19
  import * as Snackbars from '../../ui/components/snackbars/snackbars.js';
20
+ import * as UIHelpers from '../../ui/helpers/helpers.js';
20
21
  import * as UI from '../../ui/legacy/legacy.js';
21
22
  import * as Lit from '../../ui/lit/lit.js';
22
23
  import * as VisualLogging from '../../ui/visual_logging/visual_logging.js';
@@ -474,7 +475,7 @@ function agentToConversationType(agent: AiAssistanceModel.AiAgent.AiAgent<unknow
474
475
  }
475
476
 
476
477
  if (agent instanceof AiAssistanceModel.PerformanceAgent.PerformanceAgent) {
477
- return agent.getConversationType();
478
+ return AiAssistanceModel.AiHistoryStorage.ConversationType.PERFORMANCE;
478
479
  }
479
480
 
480
481
  throw new Error('Provided agent does not have a corresponding conversation type');
@@ -957,7 +958,7 @@ export class AiAssistancePanel extends UI.Panel.Panel {
957
958
  onDeleteClick: this.#onDeleteClicked.bind(this),
958
959
  onExportConversationClick: this.#onExportConversationClick.bind(this),
959
960
  onHelpClick: () => {
960
- UI.UIUtils.openInNewTab(AI_ASSISTANCE_HELP);
961
+ UIHelpers.openInNewTab(AI_ASSISTANCE_HELP);
961
962
  },
962
963
  onSettingsClick: () => {
963
964
  void UI.ViewManager.ViewManager.instance().showView('chrome-ai');
@@ -12,7 +12,7 @@ import type * as Platform from '../../../core/platform/platform.js';
12
12
  import * as SDK from '../../../core/sdk/sdk.js';
13
13
  import * as AiAssistanceModel from '../../../models/ai_assistance/ai_assistance.js';
14
14
  import * as Workspace from '../../../models/workspace/workspace.js';
15
- import * as ElementsPanel from '../../../panels/elements/elements.js';
15
+ import * as PanelsCommon from '../../../panels/common/common.js';
16
16
  import * as PanelUtils from '../../../panels/utils/utils.js';
17
17
  import * as Marked from '../../../third_party/marked/marked.js';
18
18
  import * as Buttons from '../../../ui/components/buttons/buttons.js';
@@ -532,7 +532,6 @@ export class ChatView extends HTMLElement {
532
532
  suggestions: this.#props.emptyStateSuggestions,
533
533
  userInfo: this.#props.userInfo,
534
534
  markdownRenderer: this.#props.markdownRenderer,
535
- conversationType: this.#props.conversationType,
536
535
  changeSummary: this.#props.changeSummary,
537
536
  changeManager: this.#props.changeManager,
538
537
  onSuggestionClick: this.#handleSuggestionClick,
@@ -932,7 +931,7 @@ function renderContextTitle(
932
931
  // FIXME: move this to the model code.
933
932
  const hiddenClassList = item.classNames().filter(
934
933
  className => className.startsWith(AiAssistanceModel.Injected.AI_ASSISTANCE_CSS_CLASS_NAME));
935
- return html`<devtools-widget .widgetConfig=${UI.Widget.widgetConfig(ElementsPanel.DOMLinkifier.DOMNodeLink, {
934
+ return html`<devtools-widget .widgetConfig=${UI.Widget.widgetConfig(PanelsCommon.DOMLinkifier.DOMNodeLink, {
936
935
  node: item,
937
936
  options: {hiddenClassList, disabled}
938
937
  })}></devtools-widget>`;
@@ -1458,7 +1457,6 @@ function renderMainContents({
1458
1457
  onFeedbackSubmit: (rpcId: Host.AidaClient.RpcGlobalId, rate: Host.AidaClient.Rating, feedback?: string) => void,
1459
1458
  onCopyResponseClick: (message: ModelChatMessage) => void,
1460
1459
  onMessageContainerRef: (el: Element|undefined) => void,
1461
- conversationType: AiAssistanceModel.AiHistoryStorage.ConversationType,
1462
1460
  changeSummary?: string,
1463
1461
  }): Lit.LitTemplate {
1464
1462
  if (messages.length > 0) {
@@ -8,6 +8,7 @@ import type * as Protocol from '../../../generated/protocol.js';
8
8
  import * as Trace from '../../../models/trace/trace.js';
9
9
  import type * as Marked from '../../../third_party/marked/marked.js';
10
10
  import * as Lit from '../../../ui/lit/lit.js';
11
+ import * as PanelsCommon from '../../common/common.js';
11
12
 
12
13
  import {MarkdownRendererWithCodeBlock} from './MarkdownRendererWithCodeBlock.js';
13
14
 
@@ -84,7 +85,7 @@ export class PerformanceAgentMarkdownRenderer extends MarkdownRendererWithCodeBl
84
85
  return;
85
86
  }
86
87
 
87
- const linkedNode = await Common.Linkifier.Linkifier.linkify(node, {textContent: label});
88
+ const linkedNode = PanelsCommon.DOMLinkifier.Linkifier.instance().linkify(node, {textContent: label});
88
89
  return linkedNode;
89
90
  }
90
91
  }
@@ -8,6 +8,7 @@ import * as i18n from '../../../core/i18n/i18n.js';
8
8
  import type * as Platform from '../../../core/platform/platform.js';
9
9
  import * as Buttons from '../../../ui/components/buttons/buttons.js';
10
10
  import * as Input from '../../../ui/components/input/input.js';
11
+ import * as UIHelpers from '../../../ui/helpers/helpers.js';
11
12
  import * as UI from '../../../ui/legacy/legacy.js';
12
13
  import * as Lit from '../../../ui/lit/lit.js';
13
14
  import * as VisualLogging from '../../../ui/visual_logging/visual_logging.js';
@@ -321,7 +322,7 @@ export class UserActionRow extends UI.Widget.Widget implements UserActionRowWidg
321
322
  {
322
323
  onSuggestionClick: this.onSuggestionClick,
323
324
  onRatingClick: this.#handleRateClick.bind(this),
324
- onReportClick: () => UI.UIUtils.openInNewTab(REPORT_URL),
325
+ onReportClick: () => UIHelpers.openInNewTab(REPORT_URL),
325
326
  onCopyResponseClick: this.onCopyResponseClick,
326
327
  scrollSuggestionsScrollContainer: this.#scrollSuggestionsScrollContainer.bind(this),
327
328
  onSuggestionsScrollOrResize: this.#handleSuggestionsScrollOrResize.bind(this),
@@ -18,6 +18,7 @@ import * as Buttons from '../../ui/components/buttons/buttons.js';
18
18
  import * as UI from '../../ui/legacy/legacy.js';
19
19
  import * as Lit from '../../ui/lit/lit.js';
20
20
  import * as VisualLogging from '../../ui/visual_logging/visual_logging.js';
21
+ import * as PanelsCommon from '../common/common.js';
21
22
 
22
23
  import {AnimationGroupPreviewUI} from './AnimationGroupPreviewUI.js';
23
24
  import animationTimelineStyles from './animationTimeline.css.js';
@@ -1222,13 +1223,12 @@ export class NodeUI {
1222
1223
  }
1223
1224
  this.#node = node;
1224
1225
  this.nodeChanged();
1225
- void Common.Linkifier.Linkifier.linkify(node).then(link => {
1226
- link.addEventListener('click', () => {
1227
- Host.userMetrics.actionTaken(Host.UserMetrics.Action.AnimatedNodeDescriptionClicked);
1228
- });
1229
-
1230
- this.#description.appendChild(link);
1226
+ const link = PanelsCommon.DOMLinkifier.Linkifier.instance().linkify(node);
1227
+ link.addEventListener('click', () => {
1228
+ Host.userMetrics.actionTaken(Host.UserMetrics.Action.AnimatedNodeDescriptionClicked);
1231
1229
  });
1230
+
1231
+ this.#description.appendChild(link);
1232
1232
  if (!node.ownerDocument) {
1233
1233
  this.nodeRemoved();
1234
1234
  }
@@ -51,13 +51,13 @@ import {BackForwardCacheTreeElement} from './BackForwardCacheTreeElement.js';
51
51
  import {BackgroundServiceModel} from './BackgroundServiceModel.js';
52
52
  import {BackgroundServiceView} from './BackgroundServiceView.js';
53
53
  import {BounceTrackingMitigationsTreeElement} from './BounceTrackingMitigationsTreeElement.js';
54
- import * as ApplicationComponents from './components/components.js';
55
54
  import {type DOMStorage, DOMStorageModel, Events as DOMStorageModelEvents} from './DOMStorageModel.js';
56
55
  import {
57
56
  Events as ExtensionStorageModelEvents,
58
57
  type ExtensionStorage,
59
58
  ExtensionStorageModel,
60
59
  } from './ExtensionStorageModel.js';
60
+ import {FrameDetailsReportView} from './FrameDetailsView.js';
61
61
  import {
62
62
  type Database as IndexedDBModelDatabase,
63
63
  type DatabaseId,
@@ -2149,8 +2149,7 @@ export class FrameTreeElement extends ApplicationPanelTreeElement {
2149
2149
  private readonly treeElementForResource: Map<string, FrameResourceTreeElement>;
2150
2150
  private treeElementForWindow: Map<Protocol.Target.TargetID, FrameWindowTreeElement>;
2151
2151
  private treeElementForWorker: Map<Protocol.Target.TargetID, WorkerTreeElement>;
2152
- private view: LegacyWrapper.LegacyWrapper
2153
- .LegacyWrapper<UI.Widget.Widget, ApplicationComponents.FrameDetailsView.FrameDetailsReportView>|null;
2152
+ private view: FrameDetailsReportView|null;
2154
2153
 
2155
2154
  constructor(section: ResourcesSection, frame: SDK.ResourceTreeModel.ResourceTreeFrame) {
2156
2155
  super(section.panel, '', false, 'frame');
@@ -2195,8 +2194,8 @@ export class FrameTreeElement extends ApplicationPanelTreeElement {
2195
2194
  this.treeElementForWorker.clear();
2196
2195
 
2197
2196
  if (this.selected) {
2198
- this.view = LegacyWrapper.LegacyWrapper.legacyWrapper(
2199
- UI.Widget.Widget, new ApplicationComponents.FrameDetailsView.FrameDetailsReportView(this.frame));
2197
+ this.view = new FrameDetailsReportView();
2198
+ this.view.frame = this.frame;
2200
2199
  this.showView(this.view);
2201
2200
  } else {
2202
2201
  this.view = null;
@@ -2233,8 +2232,8 @@ export class FrameTreeElement extends ApplicationPanelTreeElement {
2233
2232
  override onselect(selectedByUser?: boolean): boolean {
2234
2233
  super.onselect(selectedByUser);
2235
2234
  if (!this.view) {
2236
- this.view = LegacyWrapper.LegacyWrapper.legacyWrapper(
2237
- UI.Widget.Widget, new ApplicationComponents.FrameDetailsView.FrameDetailsReportView(this.frame));
2235
+ this.view = new FrameDetailsReportView();
2236
+ this.view.frame = this.frame;
2238
2237
  }
2239
2238
  Host.userMetrics.panelShown('frame-details');
2240
2239
  this.showView(this.view);