chrome-devtools-frontend 1.0.1544076 → 1.0.1547147

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 (178) hide show
  1. package/config/typescript/tsconfig.eslint.json +1 -0
  2. package/docs/styleguide/ux/styles.md +1 -1
  3. package/eslint.config.mjs +1 -1
  4. package/front_end/Images/src/arrow-down.svg +8 -1
  5. package/front_end/Images/src/arrow-up.svg +8 -1
  6. package/front_end/core/common/ParsedURL.ts +1 -1
  7. package/front_end/core/common/common.ts +0 -2
  8. package/front_end/core/host/AidaClient.ts +1 -1
  9. package/front_end/core/host/InspectorFrontendHostAPI.ts +0 -1
  10. package/front_end/core/host/UserMetrics.ts +0 -5
  11. package/front_end/core/platform/HostRuntime.ts +18 -0
  12. package/front_end/core/platform/KeyboardUtilities.ts +2 -2
  13. package/front_end/core/platform/StringUtilities.ts +1 -1
  14. package/front_end/core/platform/api/HostRuntime.ts +20 -0
  15. package/front_end/core/platform/api/api.ts +7 -0
  16. package/front_end/core/platform/browser/HostRuntime.ts +14 -0
  17. package/front_end/core/platform/browser/browser.ts +7 -0
  18. package/front_end/core/platform/node/HostRuntime.ts +13 -0
  19. package/front_end/core/platform/node/node.ts +7 -0
  20. package/front_end/core/platform/platform.ts +2 -2
  21. package/front_end/core/protocol_client/CDPConnection.ts +3 -3
  22. package/front_end/core/protocol_client/DevToolsCDPConnection.ts +2 -1
  23. package/front_end/core/sdk/CSSMetadata.ts +17 -5
  24. package/front_end/core/sdk/NetworkManager.ts +6 -8
  25. package/front_end/core/sdk/NetworkRequest.ts +4 -0
  26. package/front_end/core/sdk/SDKModel.ts +4 -2
  27. package/front_end/core/sdk/SourceMapScopesInfo.ts +141 -23
  28. package/front_end/core/sdk/Target.ts +5 -14
  29. package/front_end/core/sdk/TargetManager.ts +39 -18
  30. package/front_end/core/sdk/sdk-meta.ts +62 -0
  31. package/front_end/devtools_compatibility.js +0 -1
  32. package/front_end/entrypoints/main/MainImpl.ts +2 -2
  33. package/front_end/foundation/Universe.ts +2 -2
  34. package/front_end/generated/Deprecation.ts +11 -0
  35. package/front_end/generated/InspectorBackendCommands.ts +3 -6
  36. package/front_end/generated/SupportedCSSProperties.js +4 -25
  37. package/front_end/generated/protocol-mapping.d.ts +0 -15
  38. package/front_end/generated/protocol-proxy-api.d.ts +0 -11
  39. package/front_end/generated/protocol.ts +5 -36
  40. package/front_end/models/ai_assistance/AiConversation.ts +188 -0
  41. package/front_end/models/ai_assistance/AiHistoryStorage.ts +1 -172
  42. package/front_end/models/ai_assistance/ConversationHandler.ts +5 -5
  43. package/front_end/models/ai_assistance/agents/AiAgent.ts +1 -3
  44. package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +6 -2
  45. package/front_end/models/ai_assistance/agents/StylingAgent.snapshot.txt +1 -1
  46. package/front_end/models/ai_assistance/agents/StylingAgent.ts +3 -9
  47. package/front_end/models/ai_assistance/ai_assistance.ts +2 -0
  48. package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.snapshot.txt +313 -313
  49. package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.ts +8 -6
  50. package/front_end/models/ai_assistance/performance/AICallTree.snapshot.txt +33 -33
  51. package/front_end/models/ai_assistance/performance/AICallTree.ts +9 -3
  52. package/front_end/models/bindings/CSSWorkspaceBinding.ts +5 -3
  53. package/front_end/models/bindings/SASSSourceMapping.ts +6 -4
  54. package/front_end/models/cpu_profile/CPUProfileDataModel.ts +10 -7
  55. package/front_end/models/crux-manager/CrUXManager.ts +7 -4
  56. package/front_end/models/issues_manager/GenericIssue.ts +12 -9
  57. package/front_end/models/javascript_metadata/NativeFunctions.js +4 -0
  58. package/front_end/models/trace/handlers/SamplesHandler.ts +3 -0
  59. package/front_end/models/trace/helpers/Trace.ts +13 -0
  60. package/front_end/models/trace/types/TraceEvents.ts +2 -1
  61. package/front_end/models/trace_source_maps_resolver/SourceMapsResolver.ts +29 -0
  62. package/front_end/models/workspace/IgnoreListManager.ts +1 -2
  63. package/front_end/models/workspace/UISourceCode.ts +50 -0
  64. package/front_end/panels/ai_assistance/AiAssistancePanel.ts +11 -10
  65. package/front_end/panels/ai_assistance/ai_assistance-meta.ts +8 -0
  66. package/front_end/panels/ai_assistance/components/ChatView.ts +2 -2
  67. package/front_end/panels/ai_assistance/components/UserActionRow.ts +2 -1
  68. package/front_end/panels/animation/AnimationTimeline.ts +0 -8
  69. package/front_end/panels/application/ApplicationPanelSidebar.ts +6 -7
  70. package/front_end/panels/application/{components/FrameDetailsView.ts → FrameDetailsView.ts} +140 -171
  71. package/front_end/panels/application/{components/OriginTrialTreeView.ts → OriginTrialTreeView.ts} +9 -9
  72. package/front_end/panels/application/application.ts +4 -0
  73. package/front_end/panels/application/components/StackTrace.ts +89 -88
  74. package/front_end/panels/application/components/components.ts +2 -4
  75. package/front_end/panels/application/{components/frameDetailsReportView.css → frameDetailsReportView.css} +5 -1
  76. package/front_end/panels/common/AiCodeGenerationTeaser.ts +80 -0
  77. package/front_end/panels/common/BadgeNotification.ts +2 -1
  78. package/front_end/panels/common/DOMLinkifier.ts +7 -2
  79. package/front_end/panels/common/GdpSignUpDialog.ts +2 -1
  80. package/front_end/panels/common/common.ts +2 -1
  81. package/front_end/panels/console/ConsolePrompt.ts +3 -1
  82. package/front_end/panels/console/ConsoleViewport.ts +1 -2
  83. package/front_end/panels/elements/ElementIssueUtils.ts +2 -2
  84. package/front_end/panels/elements/ElementStatePaneWidget.ts +2 -1
  85. package/front_end/panels/elements/StylePropertiesSection.ts +1 -1
  86. package/front_end/panels/elements/StylePropertyTreeElement.ts +23 -19
  87. package/front_end/panels/elements/StylesSidebarPane.ts +1 -1
  88. package/front_end/panels/elements/cssValueTraceView.css +1 -1
  89. package/front_end/panels/elements/elements-meta.ts +1 -22
  90. package/front_end/panels/explain/components/ConsoleInsight.ts +44 -57
  91. package/front_end/panels/explain/components/consoleInsight.css +46 -1
  92. package/front_end/panels/layer_viewer/LayerTreeOutline.ts +1 -2
  93. package/front_end/panels/lighthouse/LighthouseProtocolService.ts +3 -6
  94. package/front_end/panels/mobile_throttling/NetworkThrottlingSelector.ts +19 -0
  95. package/front_end/panels/network/RequestConditionsDrawer.ts +54 -24
  96. package/front_end/panels/network/networkLogView.css +11 -0
  97. package/front_end/panels/network/networkTimingTable.css +8 -6
  98. package/front_end/panels/network/requestConditionsDrawer.css +10 -1
  99. package/front_end/panels/profiler/ProfilesPanel.ts +1 -2
  100. package/front_end/panels/settings/FrameworkIgnoreListSettingsTab.ts +2 -1
  101. package/front_end/panels/settings/KeybindsSettingsTab.ts +20 -21
  102. package/front_end/panels/settings/SettingsScreen.ts +3 -2
  103. package/front_end/panels/sources/CoveragePlugin.ts +5 -5
  104. package/front_end/panels/sources/Plugin.ts +1 -1
  105. package/front_end/panels/sources/ProfilePlugin.ts +22 -14
  106. package/front_end/panels/sources/UISourceCodeFrame.ts +2 -1
  107. package/front_end/panels/sources/sources-meta.ts +0 -62
  108. package/front_end/panels/timeline/README.md +1 -9
  109. package/front_end/panels/timeline/ThreadAppender.ts +0 -7
  110. package/front_end/panels/timeline/TimelinePanel.ts +1 -1
  111. package/front_end/panels/timeline/TimelineUIUtils.ts +2 -0
  112. package/front_end/panels/timeline/components/ExportTraceOptions.ts +15 -1
  113. package/front_end/panels/timeline/components/LiveMetricsView.ts +51 -6
  114. package/front_end/panels/timeline/components/MetricCard.ts +2 -2
  115. package/front_end/panels/timeline/components/exportTraceOptions.css +11 -2
  116. package/front_end/panels/timeline/components/insights/NodeLink.ts +2 -3
  117. package/front_end/panels/timeline/overlays/components/EntryLabelOverlay.ts +2 -1
  118. package/front_end/panels/timeline/timeline-meta.ts +0 -10
  119. package/front_end/panels/timeline/timeline.ts +0 -2
  120. package/front_end/panels/whats_new/ReleaseNoteView.ts +2 -1
  121. package/front_end/panels/whats_new/WhatsNewImpl.ts +3 -2
  122. package/front_end/third_party/chromium/README.chromium +1 -1
  123. package/front_end/tsconfig.json +1 -0
  124. package/front_end/ui/components/buttons/Button.docs.ts +6 -5
  125. package/front_end/ui/components/markdown_view/MarkdownLinksMap.ts +1 -0
  126. package/front_end/ui/components/snackbars/Snackbars.docs.ts +1 -1
  127. package/front_end/ui/components/spinners/Spinners.docs.ts +1 -1
  128. package/front_end/ui/components/survey_link/SurveyLink.docs.ts +2 -1
  129. package/front_end/ui/components/switch/Switch.docs.ts +1 -1
  130. package/front_end/ui/components/tooltips/Tooltip.docs.ts +3 -3
  131. package/front_end/ui/helpers/OpenInNewTab.ts +87 -0
  132. package/front_end/ui/helpers/helpers.ts +5 -0
  133. package/front_end/ui/legacy/ARIAUtils.ts +2 -2
  134. package/front_end/ui/legacy/ActionRegistration.ts +11 -0
  135. package/front_end/ui/legacy/ContextMenu.docs.ts +12 -11
  136. package/front_end/ui/legacy/RadioButton.docs.ts +1 -1
  137. package/front_end/ui/legacy/SelectMenu.docs.ts +1 -1
  138. package/front_end/ui/legacy/Slider.docs.ts +1 -1
  139. package/front_end/ui/legacy/SoftDropDown.ts +2 -2
  140. package/front_end/ui/legacy/TextPrompt.ts +3 -2
  141. package/front_end/ui/legacy/Treeoutline.ts +2 -1
  142. package/front_end/ui/legacy/UIUtils.ts +11 -43
  143. package/front_end/ui/legacy/Widget.ts +3 -2
  144. package/front_end/ui/legacy/XLink.ts +4 -4
  145. package/front_end/ui/legacy/components/color_picker/ContrastDetails.ts +2 -1
  146. package/front_end/ui/legacy/components/data_grid/DataGrid.ts +2 -2
  147. package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +144 -143
  148. package/front_end/ui/legacy/components/perf_ui/LineLevelProfile.ts +62 -39
  149. package/front_end/ui/legacy/components/perf_ui/OverviewGrid.ts +1 -1
  150. package/front_end/ui/legacy/components/perf_ui/TimelineGrid.ts +2 -2
  151. package/front_end/ui/legacy/components/source_frame/SourceFrame.ts +2 -7
  152. package/front_end/ui/legacy/components/utils/JSPresentationUtils.ts +1 -2
  153. package/front_end/ui/legacy/components/utils/Linkifier.ts +2 -1
  154. package/front_end/ui/legacy/inspectorCommon.css +2 -2
  155. package/front_end/ui/legacy/legacy.ts +2 -0
  156. package/front_end/ui/visual_logging/KnownContextValues.ts +1 -0
  157. package/mcp/tsconfig.json +16 -0
  158. package/package.json +2 -2
  159. package/front_end/core/common/Linkifier.ts +0 -55
  160. package/front_end/panels/explain/components/consoleInsightSourcesList.css +0 -51
  161. package/front_end/panels/timeline/CLSLinkifier.ts +0 -58
  162. package/front_end/ui/components/docs/README.md +0 -6
  163. package/front_end/ui/components/docs/building-ui-documentation/ComponentEvents.md +0 -54
  164. package/front_end/ui/components/docs/building-ui-documentation/ComponentPerformance.md +0 -136
  165. package/front_end/ui/components/docs/building-ui-documentation/CreatingComponents.md +0 -242
  166. package/front_end/ui/components/docs/building-ui-documentation/README.md +0 -23
  167. package/front_end/ui/components/docs/building-ui-documentation/StylingComponents.md +0 -66
  168. package/front_end/ui/components/docs/building-ui-documentation/TestingComponents.md +0 -111
  169. package/front_end/ui/components/docs/component_docs.ts +0 -24
  170. package/front_end/ui/components/docs/component_docs_styles.css +0 -53
  171. package/front_end/ui/components/docs/create_breadcrumbs.ts +0 -44
  172. package/front_end/ui/components/docs/slider/basic.html +0 -20
  173. package/front_end/ui/components/docs/switch/basic.html +0 -20
  174. /package/front_end/models/issues_manager/descriptions/{genericFormAriaLabelledByToNonExistingId.md → genericFormAriaLabelledByToNonExistingIdError.md} +0 -0
  175. /package/front_end/models/issues_manager/descriptions/{genericFormLabelHasNeitherForNorNestedInput.md → genericFormLabelHasNeitherForNorNestedInputError.md} +0 -0
  176. /package/front_end/panels/application/{components/originTrialTokenRows.css → originTrialTokenRows.css} +0 -0
  177. /package/front_end/panels/application/{components/originTrialTreeView.css → originTrialTreeView.css} +0 -0
  178. /package/front_end/{core/platform → ui/legacy}/DOMUtilities.ts +0 -0
@@ -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';
@@ -223,7 +224,7 @@ function selectedElementFilter(maybeNode: SDK.DOMModel.DOMNode|null): SDK.DOMMod
223
224
 
224
225
  async function getEmptyStateSuggestions(
225
226
  context: AiAssistanceModel.AiAgent.ConversationContext<unknown>|null,
226
- conversation?: AiAssistanceModel.AiHistoryStorage.Conversation):
227
+ conversation?: AiAssistanceModel.AiConversation.AiConversation):
227
228
  Promise<AiAssistanceModel.AiAgent.ConversationSuggestion[]> {
228
229
  if (context) {
229
230
  const specialSuggestions = await context.getSuggestions();
@@ -269,7 +270,7 @@ async function getEmptyStateSuggestions(
269
270
 
270
271
  function getMarkdownRenderer(
271
272
  context: AiAssistanceModel.AiAgent.ConversationContext<unknown>|null,
272
- conversation?: AiAssistanceModel.AiHistoryStorage.Conversation): MarkdownRendererWithCodeBlock {
273
+ conversation?: AiAssistanceModel.AiConversation.AiConversation): MarkdownRendererWithCodeBlock {
273
274
  if (context instanceof AiAssistanceModel.PerformanceAgent.PerformanceTraceContext) {
274
275
  if (!context.external) {
275
276
  const focus = context.getItem();
@@ -494,7 +495,7 @@ export class AiAssistancePanel extends UI.Panel.Panel {
494
495
  #mutex = new Common.Mutex.Mutex();
495
496
 
496
497
  #conversationAgent?: AiAssistanceModel.AiAgent.AiAgent<unknown>;
497
- #conversation?: AiAssistanceModel.AiHistoryStorage.Conversation;
498
+ #conversation?: AiAssistanceModel.AiConversation.AiConversation;
498
499
 
499
500
  #selectedFile: AiAssistanceModel.FileAgent.FileContext|null = null;
500
501
  #selectedElement: AiAssistanceModel.StylingAgent.NodeContext|null = null;
@@ -719,7 +720,7 @@ export class AiAssistancePanel extends UI.Panel.Panel {
719
720
 
720
721
  #updateConversationState(opts?: {
721
722
  agent?: AiAssistanceModel.AiAgent.AiAgent<unknown>,
722
- conversation?: AiAssistanceModel.AiHistoryStorage.Conversation,
723
+ conversation?: AiAssistanceModel.AiConversation.AiConversation,
723
724
  }): void {
724
725
  if (this.#conversationAgent !== opts?.agent) {
725
726
  // Cancel any previous conversation
@@ -732,7 +733,7 @@ export class AiAssistancePanel extends UI.Panel.Panel {
732
733
  // If we get a new agent we need to
733
734
  // create a new conversation along side it
734
735
  if (opts?.agent) {
735
- this.#conversation = new AiAssistanceModel.AiHistoryStorage.Conversation(
736
+ this.#conversation = new AiAssistanceModel.AiConversation.AiConversation(
736
737
  agentToConversationType(opts.agent),
737
738
  [],
738
739
  opts.agent.id,
@@ -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');
@@ -1211,7 +1212,7 @@ export class AiAssistancePanel extends UI.Panel.Panel {
1211
1212
  #populateHistoryMenu(contextMenu: UI.ContextMenu.ContextMenu): void {
1212
1213
  const historicalConversations = AiAssistanceModel.AiHistoryStorage.AiHistoryStorage.instance().getHistory().map(
1213
1214
  serializedConversation =>
1214
- AiAssistanceModel.AiHistoryStorage.Conversation.fromSerializedConversation(serializedConversation));
1215
+ AiAssistanceModel.AiConversation.AiConversation.fromSerializedConversation(serializedConversation));
1215
1216
  for (const conversation of historicalConversations.reverse()) {
1216
1217
  if (conversation.isEmpty) {
1217
1218
  continue;
@@ -1280,7 +1281,7 @@ export class AiAssistancePanel extends UI.Panel.Panel {
1280
1281
  Workspace.FileManager.FileManager.instance().close(filename);
1281
1282
  }
1282
1283
 
1283
- async #openHistoricConversation(conversation: AiAssistanceModel.AiHistoryStorage.Conversation): Promise<void> {
1284
+ async #openHistoricConversation(conversation: AiAssistanceModel.AiConversation.AiConversation): Promise<void> {
1284
1285
  if (this.#conversation === conversation) {
1285
1286
  return;
1286
1287
  }
@@ -1420,7 +1421,7 @@ export class AiAssistancePanel extends UI.Panel.Panel {
1420
1421
  this.#blockedByCrossOrigin = !this.#selectedContext.isOriginAllowed(this.#conversationAgent.origin);
1421
1422
  }
1422
1423
 
1423
- #getConversationContext(conversation?: AiAssistanceModel.AiHistoryStorage.Conversation):
1424
+ #getConversationContext(conversation?: AiAssistanceModel.AiConversation.AiConversation):
1424
1425
  AiAssistanceModel.AiAgent.ConversationContext<unknown>|null {
1425
1426
  if (!conversation) {
1426
1427
  return null;
@@ -1655,7 +1656,7 @@ export function getResponseMarkdown(message: ModelChatMessage): string {
1655
1656
  }
1656
1657
  if (step.contextDetails) {
1657
1658
  contentParts.push(
1658
- AiAssistanceModel.AiHistoryStorage.Conversation.generateContextDetailsMarkdown(step.contextDetails));
1659
+ AiAssistanceModel.AiConversation.AiConversation.generateContextDetailsMarkdown(step.contextDetails));
1659
1660
  }
1660
1661
  if (step.thought) {
1661
1662
  contentParts.push(step.thought);
@@ -161,6 +161,7 @@ UI.ActionRegistration.registerActionExtension({
161
161
  },
162
162
  category: UI.ActionRegistration.ActionCategory.GLOBAL,
163
163
  title: titleForAiAssistanceActions,
164
+ configurableBindings: false,
164
165
  featurePromotionId: 'ai-assistance',
165
166
  async loadActionDelegate() {
166
167
  const AiAssistance = await loadAiAssistanceModule();
@@ -176,6 +177,7 @@ UI.ActionRegistration.registerActionExtension({
176
177
  },
177
178
  category: UI.ActionRegistration.ActionCategory.GLOBAL,
178
179
  title: titleForAiAssistanceActions,
180
+ configurableBindings: false,
179
181
  async loadActionDelegate() {
180
182
  const AiAssistance = await loadAiAssistanceModule();
181
183
  return new AiAssistance.ActionDelegate();
@@ -191,6 +193,7 @@ UI.ActionRegistration.registerActionExtension({
191
193
  },
192
194
  category: UI.ActionRegistration.ActionCategory.GLOBAL,
193
195
  title: titleForAiAssistanceActions,
196
+ configurableBindings: false,
194
197
  async loadActionDelegate() {
195
198
  const AiAssistance = await loadAiAssistanceModule();
196
199
  return new AiAssistance.ActionDelegate();
@@ -206,6 +209,7 @@ UI.ActionRegistration.registerActionExtension({
206
209
  },
207
210
  category: UI.ActionRegistration.ActionCategory.GLOBAL,
208
211
  title: titleForAiAssistanceActions,
212
+ configurableBindings: false,
209
213
  async loadActionDelegate() {
210
214
  const AiAssistance = await loadAiAssistanceModule();
211
215
  return new AiAssistance.ActionDelegate();
@@ -221,6 +225,7 @@ UI.ActionRegistration.registerActionExtension({
221
225
  },
222
226
  category: UI.ActionRegistration.ActionCategory.GLOBAL,
223
227
  title: titleForAiAssistanceActions,
228
+ configurableBindings: false,
224
229
  async loadActionDelegate() {
225
230
  const AiAssistance = await loadAiAssistanceModule();
226
231
  return new AiAssistance.ActionDelegate();
@@ -236,6 +241,7 @@ UI.ActionRegistration.registerActionExtension({
236
241
  },
237
242
  category: UI.ActionRegistration.ActionCategory.GLOBAL,
238
243
  title: titleForAiAssistanceActions,
244
+ configurableBindings: false,
239
245
  async loadActionDelegate() {
240
246
  const AiAssistance = await loadAiAssistanceModule();
241
247
  return new AiAssistance.ActionDelegate();
@@ -251,6 +257,7 @@ UI.ActionRegistration.registerActionExtension({
251
257
  },
252
258
  category: UI.ActionRegistration.ActionCategory.GLOBAL,
253
259
  title: titleForAiAssistanceActions,
260
+ configurableBindings: false,
254
261
  async loadActionDelegate() {
255
262
  const AiAssistance = await loadAiAssistanceModule();
256
263
  return new AiAssistance.ActionDelegate();
@@ -265,6 +272,7 @@ UI.ActionRegistration.registerActionExtension({
265
272
  },
266
273
  category: UI.ActionRegistration.ActionCategory.GLOBAL,
267
274
  title: titleForAiAssistanceActions,
275
+ configurableBindings: false,
268
276
  async loadActionDelegate() {
269
277
  const AiAssistance = await loadAiAssistanceModule();
270
278
  return new AiAssistance.ActionDelegate();
@@ -698,7 +698,7 @@ function renderStep({step, isLoading, markdownRenderer, isLast}: {
698
698
  }): Lit.LitTemplate {
699
699
  const stepClasses = Lit.Directives.classMap({
700
700
  step: true,
701
- empty: !step.thought && !step.code && !step.contextDetails,
701
+ empty: !step.thought && !step.code && !step.contextDetails && !step.sideEffect,
702
702
  paused: Boolean(step.sideEffect),
703
703
  canceled: Boolean(step.canceled),
704
704
  });
@@ -884,7 +884,7 @@ function renderChatMessage({
884
884
  }
885
885
 
886
886
  function renderImageChatMessage(inlineData: Host.AidaClient.MediaBlob): Lit.LitTemplate {
887
- if (inlineData.data === AiAssistanceModel.AiHistoryStorage.NOT_FOUND_IMAGE_DATA) {
887
+ if (inlineData.data === AiAssistanceModel.AiConversation.NOT_FOUND_IMAGE_DATA) {
888
888
  // clang-format off
889
889
  return html`<div class="unavailable-image" title=${UIStringsNotTranslate.imageUnavailable}>
890
890
  <devtools-icon name='file-image'></devtools-icon>
@@ -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),
@@ -508,14 +508,6 @@ export class AnimationTimeline extends UI.Widget.VBox implements
508
508
  }
509
509
 
510
510
  private setPlaybackRate(playbackRate: number): void {
511
- if (playbackRate !== this.#playbackRate) {
512
- Host.userMetrics.animationPlaybackRateChanged(
513
- playbackRate === 0.1 ? Host.UserMetrics.AnimationsPlaybackRate.PERCENT_10 :
514
- playbackRate === 0.25 ? Host.UserMetrics.AnimationsPlaybackRate.PERCENT_25 :
515
- playbackRate === 1 ? Host.UserMetrics.AnimationsPlaybackRate.PERCENT_100 :
516
- Host.UserMetrics.AnimationsPlaybackRate.OTHER);
517
- }
518
-
519
511
  this.#playbackRate = playbackRate;
520
512
  for (const animationModel of SDK.TargetManager.TargetManager.instance().models(
521
513
  SDK.AnimationModel.AnimationModel, {scoped: true})) {
@@ -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);