chrome-devtools-frontend 1.0.1571573 → 1.0.1573331

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 (158) hide show
  1. package/front_end/Images/geminiInDevTools.png +0 -0
  2. package/front_end/Images/geminiInDevTools_2x.png +0 -0
  3. package/front_end/Images/src/database-off.svg +1 -0
  4. package/front_end/Images/src/lock-person.svg +1 -1
  5. package/front_end/core/common/Debouncer.ts +10 -1
  6. package/front_end/core/common/SettingRegistration.ts +1 -1
  7. package/front_end/core/host/AidaClient.ts +8 -0
  8. package/front_end/core/host/InspectorFrontendHostAPI.ts +0 -6
  9. package/front_end/core/host/UserMetrics.ts +0 -30
  10. package/front_end/core/root/ExperimentNames.ts +30 -0
  11. package/front_end/core/root/Runtime.ts +12 -27
  12. package/front_end/core/root/root.ts +2 -0
  13. package/front_end/core/sdk/CSSModel.ts +36 -13
  14. package/front_end/core/sdk/CSSProperty.ts +1 -1
  15. package/front_end/core/sdk/CSSPropertyParserMatchers.ts +9 -0
  16. package/front_end/core/sdk/CookieModel.ts +2 -1
  17. package/front_end/core/sdk/DOMModel.ts +1 -1
  18. package/front_end/core/sdk/DebuggerModel.ts +1 -1
  19. package/front_end/core/sdk/IsolateManager.ts +0 -7
  20. package/front_end/core/sdk/OverlayModel.ts +1 -1
  21. package/front_end/core/sdk/SourceMap.ts +1 -1
  22. package/front_end/devtools_compatibility.js +0 -6
  23. package/front_end/entrypoints/main/MainImpl.ts +34 -25
  24. package/front_end/entrypoints/main/main-meta.ts +1 -1
  25. package/front_end/generated/SupportedCSSProperties.js +4 -8
  26. package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +0 -180
  27. package/front_end/models/ai_assistance/agents/StylingAgent.snapshot.txt +7 -7
  28. package/front_end/models/ai_assistance/agents/StylingAgent.ts +4 -4
  29. package/front_end/models/ai_assistance/ai_assistance.ts +0 -2
  30. package/front_end/models/breakpoints/BreakpointManager.ts +3 -3
  31. package/front_end/models/issues_manager/ContrastCheckTrigger.ts +2 -2
  32. package/front_end/models/source_map_scopes/NamesResolver.ts +1 -1
  33. package/front_end/models/trace/EventsSerializer.ts +5 -1
  34. package/front_end/models/trace/types/TraceEvents.ts +4 -0
  35. package/front_end/panels/accessibility/AXBreadcrumbsPane.ts +1 -1
  36. package/front_end/panels/accessibility/AccessibilitySidebarView.ts +1 -1
  37. package/front_end/panels/ai_assistance/AiAssistancePanel.ts +8 -63
  38. package/front_end/panels/ai_assistance/PatchWidget.ts +3 -4
  39. package/front_end/panels/ai_assistance/SelectWorkspaceDialog.ts +1 -1
  40. package/front_end/panels/ai_assistance/aiAssistancePanel.css +0 -16
  41. package/front_end/panels/ai_assistance/ai_assistance.ts +0 -1
  42. package/front_end/panels/ai_assistance/components/ChatView.ts +123 -108
  43. package/front_end/panels/ai_assistance/components/PerformanceAgentMarkdownRenderer.ts +1 -145
  44. package/front_end/panels/application/AppManifestView.ts +5 -5
  45. package/front_end/panels/application/DeviceBoundSessionsModel.ts +55 -4
  46. package/front_end/panels/application/DeviceBoundSessionsTreeElement.ts +46 -1
  47. package/front_end/panels/application/FrameDetailsView.ts +10 -10
  48. package/front_end/panels/application/components/BackForwardCacheView.ts +6 -8
  49. package/front_end/panels/application/components/BounceTrackingMitigationsView.ts +4 -3
  50. package/front_end/panels/application/components/ProtocolHandlersView.ts +5 -6
  51. package/front_end/panels/application/components/ReportsGrid.ts +8 -9
  52. package/front_end/panels/application/components/SharedStorageAccessGrid.ts +5 -4
  53. package/front_end/panels/application/components/TrustTokensView.ts +4 -6
  54. package/front_end/panels/application/preloading/PreloadingView.ts +9 -8
  55. package/front_end/panels/application/preloading/components/PreloadingDetailsReportView.ts +237 -230
  56. package/front_end/panels/application/preloading/components/PreloadingGrid.ts +3 -2
  57. package/front_end/panels/application/preloading/components/UsedPreloadingView.ts +6 -10
  58. package/front_end/panels/application/resourcesSidebar.css +8 -0
  59. package/front_end/panels/autofill/AutofillView.ts +4 -3
  60. package/front_end/panels/common/AiCodeCompletionSummaryToolbar.ts +1 -1
  61. package/front_end/panels/common/AiCodeCompletionTeaser.ts +1 -1
  62. package/front_end/panels/common/AiCodeGenerationTeaser.ts +35 -4
  63. package/front_end/panels/common/AiCodeGenerationUpgradeDialog.ts +2 -2
  64. package/front_end/panels/common/BadgeNotification.ts +18 -14
  65. package/front_end/panels/common/GdpSignUpDialog.ts +5 -6
  66. package/front_end/panels/common/GeminiRebrandPromoDialog.ts +192 -0
  67. package/front_end/panels/common/aiCodeGenerationTeaser.css +16 -1
  68. package/front_end/panels/common/common.ts +1 -0
  69. package/front_end/panels/common/geminiRebrandPromoDialog.css +47 -0
  70. package/front_end/panels/console/ConsoleInsightTeaser.ts +3 -3
  71. package/front_end/panels/console/ErrorStackParser.ts +11 -16
  72. package/front_end/panels/css_overview/CSSOverviewCompletedView.ts +2 -2
  73. package/front_end/panels/css_overview/CSSOverviewModel.ts +1 -1
  74. package/front_end/panels/elements/ComputedStyleModel.ts +7 -54
  75. package/front_end/panels/elements/ElementsPanel.ts +33 -6
  76. package/front_end/panels/elements/ElementsTreeOutline.ts +1 -1
  77. package/front_end/panels/elements/StylePropertiesSection.ts +16 -8
  78. package/front_end/panels/elements/StylePropertyTreeElement.ts +67 -32
  79. package/front_end/panels/elements/StylesSidebarPane.ts +28 -11
  80. package/front_end/panels/elements/components/CSSHintDetailsView.ts +3 -2
  81. package/front_end/panels/elements/components/CSSPropertyDocsView.ts +3 -2
  82. package/front_end/panels/elements/elements-meta.ts +1 -1
  83. package/front_end/panels/explain/components/ConsoleInsight.ts +7 -7
  84. package/front_end/panels/issues/IssueView.ts +6 -6
  85. package/front_end/panels/network/RequestConditionsDrawer.ts +8 -7
  86. package/front_end/panels/network/RequestCookiesView.ts +3 -4
  87. package/front_end/panels/network/RequestTimingView.ts +3 -8
  88. package/front_end/panels/network/components/HeaderSectionRow.ts +3 -2
  89. package/front_end/panels/network/components/RequestHeaderSection.ts +3 -1
  90. package/front_end/panels/network/components/RequestHeadersView.ts +2 -2
  91. package/front_end/panels/profiler/HeapProfileView.ts +3 -3
  92. package/front_end/panels/profiler/HeapSnapshotView.ts +1 -1
  93. package/front_end/panels/profiler/IsolateSelector.ts +1 -2
  94. package/front_end/panels/profiler/profiler-meta.ts +3 -3
  95. package/front_end/panels/protocol_monitor/protocol_monitor-meta.ts +1 -1
  96. package/front_end/panels/recorder/RecorderController.ts +4 -9
  97. package/front_end/panels/recorder/components/CreateRecordingView.ts +6 -6
  98. package/front_end/panels/recorder/components/RecordingView.ts +0 -38
  99. package/front_end/panels/recorder/components/ReplaySection.ts +0 -14
  100. package/front_end/panels/recorder/components/StepEditor.ts +2 -40
  101. package/front_end/panels/recorder/recorderController.css +3 -3
  102. package/front_end/panels/security/CookieReportView.ts +17 -17
  103. package/front_end/panels/security/cookieControlsView.css +1 -1
  104. package/front_end/panels/security/cookieReportView.css +1 -1
  105. package/front_end/panels/settings/AISettingsTab.ts +8 -10
  106. package/front_end/panels/settings/components/SyncSection.ts +1 -1
  107. package/front_end/panels/settings/emulation/components/UserAgentClientHintsForm.ts +4 -12
  108. package/front_end/panels/settings/settings-meta.ts +1 -1
  109. package/front_end/panels/sources/BreakpointEditDialog.ts +4 -3
  110. package/front_end/panels/sources/FilteredUISourceCodeListProvider.ts +1 -1
  111. package/front_end/panels/sources/NavigatorView.ts +4 -4
  112. package/front_end/panels/sources/SourcesPanel.ts +5 -4
  113. package/front_end/panels/sources/components/HeadersView.ts +2 -2
  114. package/front_end/panels/timeline/CompatibilityTracksAppender.ts +3 -2
  115. package/front_end/panels/timeline/ThreadAppender.ts +2 -1
  116. package/front_end/panels/timeline/TimelineController.ts +3 -3
  117. package/front_end/panels/timeline/TimelinePanel.ts +6 -4
  118. package/front_end/panels/timeline/TimelineUIUtils.ts +2 -2
  119. package/front_end/panels/timeline/components/ExportTraceOptions.ts +4 -4
  120. package/front_end/panels/timeline/components/FieldSettingsDialog.ts +13 -6
  121. package/front_end/panels/timeline/components/LiveMetricsView.ts +13 -9
  122. package/front_end/panels/timeline/components/exportTraceOptions.css +1 -1
  123. package/front_end/panels/timeline/components/fieldSettingsDialog.css +1 -1
  124. package/front_end/panels/timeline/components/insights/BaseInsightComponent.ts +2 -19
  125. package/front_end/panels/timeline/components/insights/InsightRenderer.ts +3 -4
  126. package/front_end/panels/timeline/components/insights/baseInsightComponent.css +0 -5
  127. package/front_end/panels/timeline/components/liveMetricsView.css +1 -1
  128. package/front_end/panels/whats_new/ReleaseNoteView.ts +1 -1
  129. package/front_end/third_party/chromium/README.chromium +1 -1
  130. package/front_end/ui/components/buttons/button.css +4 -0
  131. package/front_end/ui/components/markdown_view/CodeBlock.ts +1 -1
  132. package/front_end/ui/components/panel_feedback/PanelFeedback.ts +1 -1
  133. package/front_end/ui/components/panel_feedback/PreviewToggle.ts +5 -5
  134. package/front_end/ui/components/panel_feedback/previewToggle.css +2 -2
  135. package/front_end/ui/components/text_editor/AiCodeGenerationParser.ts +27 -8
  136. package/front_end/ui/components/text_editor/AiCodeGenerationProvider.ts +36 -6
  137. package/front_end/ui/components/text_editor/AutocompleteHistory.ts +33 -1
  138. package/front_end/ui/legacy/ActionRegistration.ts +1 -1
  139. package/front_end/ui/legacy/ContextMenu.ts +2 -2
  140. package/front_end/ui/legacy/EmptyWidget.ts +3 -3
  141. package/front_end/ui/legacy/LinkContextMenuProvider.ts +42 -0
  142. package/front_end/ui/legacy/ViewRegistration.ts +1 -1
  143. package/front_end/ui/legacy/XLink.ts +0 -27
  144. package/front_end/ui/legacy/components/color_picker/ContrastDetails.ts +1 -1
  145. package/front_end/ui/legacy/components/color_picker/ContrastOverlay.ts +4 -4
  146. package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +2 -2
  147. package/front_end/ui/legacy/components/perf_ui/perf_ui-meta.ts +1 -1
  148. package/front_end/ui/legacy/inspectorCommon.css +2 -1
  149. package/front_end/ui/legacy/legacy.ts +3 -1
  150. package/front_end/ui/visual_logging/KnownContextValues.ts +2 -0
  151. package/front_end/ui/visual_logging/LoggingDriver.ts +3 -0
  152. package/package.json +1 -1
  153. package/front_end/models/ai_assistance/ArtifactsManager.ts +0 -67
  154. package/front_end/panels/ai_assistance/components/ArtifactsViewer.ts +0 -183
  155. package/front_end/panels/ai_assistance/components/CollapsibleAssistanceContentWidget.ts +0 -89
  156. package/front_end/panels/ai_assistance/components/PerformanceAgentFlameChart.ts +0 -133
  157. package/front_end/panels/ai_assistance/components/artifactsViewer.css +0 -15
  158. package/front_end/panels/ai_assistance/components/collapsibleAssistanceContentWidget.css +0 -32
@@ -576,14 +576,17 @@ export class StylesSidebarPane extends Common.ObjectWrapper.eventMixin<EventType
576
576
  const nodeId = this.node()?.id;
577
577
  const parentNodeId = this.matchedStyles?.getParentLayoutNodeId();
578
578
 
579
- const [computedStyles, parentsComputedStyles] =
580
- await Promise.all([this.fetchComputedStylesFor(nodeId), this.fetchComputedStylesFor(parentNodeId)]);
579
+ const [computedStyles, parentsComputedStyles, computedStyleExtraFields] = await Promise.all([
580
+ this.fetchComputedStylesFor(nodeId), this.fetchComputedStylesFor(parentNodeId),
581
+ this.fetchComputedStyleExtraFieldsFor(nodeId)
582
+ ]);
581
583
 
582
584
  if (signal.aborted) {
583
585
  return;
584
586
  }
585
587
 
586
- await this.innerRebuildUpdate(signal, this.matchedStyles, computedStyles, parentsComputedStyles);
588
+ await this.innerRebuildUpdate(
589
+ signal, this.matchedStyles, computedStyles, parentsComputedStyles, computedStyleExtraFields);
587
590
 
588
591
  if (signal.aborted) {
589
592
  return;
@@ -633,6 +636,15 @@ export class StylesSidebarPane extends Common.ObjectWrapper.eventMixin<EventType
633
636
  return await node.domModel().cssModel().getComputedStyle(nodeId);
634
637
  }
635
638
 
639
+ private async fetchComputedStyleExtraFieldsFor(nodeId: Protocol.DOM.NodeId|undefined):
640
+ Promise<Protocol.CSS.ComputedStyleExtraFields|null> {
641
+ const node = this.node();
642
+ if (node === null || nodeId === undefined) {
643
+ return null;
644
+ }
645
+ return await node.domModel().cssModel().getComputedStyleExtraFields(nodeId);
646
+ }
647
+
636
648
  override onResize(): void {
637
649
  void this.resizeThrottler.schedule(this.#resize.bind(this));
638
650
  }
@@ -914,7 +926,8 @@ export class StylesSidebarPane extends Common.ObjectWrapper.eventMixin<EventType
914
926
 
915
927
  private async innerRebuildUpdate(
916
928
  signal: AbortSignal, matchedStyles: SDK.CSSMatchedStyles.CSSMatchedStyles|null,
917
- computedStyles: Map<string, string>|null, parentsComputedStyles: Map<string, string>|null): Promise<void> {
929
+ computedStyles: Map<string, string>|null, parentsComputedStyles: Map<string, string>|null,
930
+ computedStyleExtraFields: Protocol.CSS.ComputedStyleExtraFields|null): Promise<void> {
918
931
  // ElementsSidebarPane's throttler schedules this method. Usually,
919
932
  // rebuild is suppressed while editing (see onCSSModelChanged()), but we need a
920
933
  // 'force' flag since the currently running throttler process cannot be canceled.
@@ -940,7 +953,8 @@ export class StylesSidebarPane extends Common.ObjectWrapper.eventMixin<EventType
940
953
  }
941
954
 
942
955
  const blocks = await this.rebuildSectionsForMatchedStyleRules(
943
- (matchedStyles as SDK.CSSMatchedStyles.CSSMatchedStyles), computedStyles, parentsComputedStyles);
956
+ (matchedStyles as SDK.CSSMatchedStyles.CSSMatchedStyles), computedStyles, parentsComputedStyles,
957
+ computedStyleExtraFields);
944
958
 
945
959
  if (signal.aborted) {
946
960
  return;
@@ -1023,13 +1037,16 @@ export class StylesSidebarPane extends Common.ObjectWrapper.eventMixin<EventType
1023
1037
 
1024
1038
  rebuildSectionsForMatchedStyleRulesForTest(
1025
1039
  matchedStyles: SDK.CSSMatchedStyles.CSSMatchedStyles, computedStyles: Map<string, string>|null,
1026
- parentsComputedStyles: Map<string, string>|null): Promise<SectionBlock[]> {
1027
- return this.rebuildSectionsForMatchedStyleRules(matchedStyles, computedStyles, parentsComputedStyles);
1040
+ parentsComputedStyles: Map<string, string>|null,
1041
+ computedStyleExtraFields: Protocol.CSS.ComputedStyleExtraFields|null): Promise<SectionBlock[]> {
1042
+ return this.rebuildSectionsForMatchedStyleRules(
1043
+ matchedStyles, computedStyles, parentsComputedStyles, computedStyleExtraFields);
1028
1044
  }
1029
1045
 
1030
1046
  private async rebuildSectionsForMatchedStyleRules(
1031
1047
  matchedStyles: SDK.CSSMatchedStyles.CSSMatchedStyles, computedStyles: Map<string, string>|null,
1032
- parentsComputedStyles: Map<string, string>|null): Promise<SectionBlock[]> {
1048
+ parentsComputedStyles: Map<string, string>|null,
1049
+ computedStyleExtraFields: Protocol.CSS.ComputedStyleExtraFields|null): Promise<SectionBlock[]> {
1033
1050
  if (this.idleCallbackManager) {
1034
1051
  this.idleCallbackManager.discard();
1035
1052
  }
@@ -1077,8 +1094,8 @@ export class StylesSidebarPane extends Common.ObjectWrapper.eventMixin<EventType
1077
1094
  style.type === SDK.CSSStyleDeclaration.Type.Animation;
1078
1095
  if (lastBlock && (!isTransitionOrAnimationStyle || style.allProperties().length > 0)) {
1079
1096
  this.idleCallbackManager.schedule(() => {
1080
- const section =
1081
- new StylePropertiesSection(this, matchedStyles, style, sectionIdx, computedStyles, parentsComputedStyles);
1097
+ const section = new StylePropertiesSection(
1098
+ this, matchedStyles, style, sectionIdx, computedStyles, parentsComputedStyles, computedStyleExtraFields);
1082
1099
  sectionIdx++;
1083
1100
  lastBlock.sections.push(section);
1084
1101
  });
@@ -1151,7 +1168,7 @@ export class StylesSidebarPane extends Common.ObjectWrapper.eventMixin<EventType
1151
1168
  const lastBlock = blocks[blocks.length - 1];
1152
1169
  this.idleCallbackManager.schedule(() => {
1153
1170
  const section = new HighlightPseudoStylePropertiesSection(
1154
- this, matchedStyles, style, sectionIdx, computedStyles, parentsComputedStyles);
1171
+ this, matchedStyles, style, sectionIdx, computedStyles, parentsComputedStyles, computedStyleExtraFields);
1155
1172
  sectionIdx++;
1156
1173
  lastBlock.sections.push(section);
1157
1174
  });
@@ -3,6 +3,7 @@
3
3
  // found in the LICENSE file.
4
4
  /* eslint-disable @devtools/no-lit-render-outside-of-view */
5
5
 
6
+ import '../../../ui/kit/kit.js';
6
7
  import '../../../ui/legacy/legacy.js';
7
8
 
8
9
  import * as i18n from '../../../core/i18n/i18n.js';
@@ -51,9 +52,9 @@ export class CSSHintDetailsView extends HTMLElement {
51
52
  ` : ''}
52
53
  ${link ? html`
53
54
  <div class="footer">
54
- <x-link id="learn-more" href=${link} class="clickable underlined unbreakable-text">
55
+ <devtools-link id="learn-more" href=${link} class="clickable underlined unbreakable-text">
55
56
  ${i18nString(UIStrings.learnMore)}
56
- </x-link>
57
+ </devtools-link>
57
58
  </div>
58
59
  `: ''}
59
60
  </div>
@@ -3,6 +3,7 @@
3
3
  // found in the LICENSE file.
4
4
  /* eslint-disable @devtools/no-lit-render-outside-of-view */
5
5
 
6
+ import '../../../ui/kit/kit.js';
6
7
  import '../../../ui/legacy/legacy.js';
7
8
 
8
9
  import * as Common from '../../../core/common/common.js';
@@ -250,13 +251,13 @@ export class CSSPropertyDocsView extends HTMLElement {
250
251
  ` : nothing}
251
252
  ${link ? html`
252
253
  <div class="docs-popup-section footer">
253
- <x-link
254
+ <devtools-link
254
255
  id="learn-more"
255
256
  href=${link}
256
257
  class="clickable underlined unbreakable-text"
257
258
  >
258
259
  ${i18nString(UIStrings.learnMore)}
259
- </x-link>
260
+ </devtools-link>
260
261
  <devtools-checkbox
261
262
  @change=${this.#dontShowChanged}
262
263
  jslog=${VisualLogging.toggle('css-property-doc').track({ change: true })}>
@@ -238,7 +238,7 @@ UI.ViewManager.registerViewExtension({
238
238
  });
239
239
 
240
240
  UI.ViewManager.registerViewExtension({
241
- experiment: Root.Runtime.ExperimentName.CAPTURE_NODE_CREATION_STACKS,
241
+ experiment: Root.ExperimentNames.ExperimentName.CAPTURE_NODE_CREATION_STACKS,
242
242
  location: UI.ViewManager.ViewLocationValues.ELEMENTS_SIDEBAR,
243
243
  id: 'elements.dom-creation',
244
244
  commandPrompt: i18nLazyString(UIStrings.showStackTrace),
@@ -300,7 +300,7 @@ function renderSearchButton(onSearch: ViewInput['callbacks']['onSearch']): Lit.T
300
300
 
301
301
  function renderLearnMoreAboutInsights(): Lit.TemplateResult {
302
302
  // clang-format off
303
- return html`<devtools-link href=${LEARN_MORE_URL} class="link" .jslogContext=${'learn-more'}>
303
+ return html`<devtools-link href=${LEARN_MORE_URL} class="link" jslogcontext="learn-more">
304
304
  ${i18nString(UIStrings.learnMore)}
305
305
  </devtools-link>`;
306
306
  // clang-format on
@@ -321,7 +321,7 @@ function maybeRenderSources(
321
321
  <devtools-link
322
322
  href=${url}
323
323
  class=${Directives.classMap({link: true, highlighted: index === highlightedCitationIndex})}
324
- .jslogContext=${'references.console-insights'}
324
+ jslogcontext="references.console-insights"
325
325
  ${Directives.ref(e => { output.citationLinks[index] = e as HTMLElement; })}
326
326
  @animationend=${onCitationAnimationEnd}
327
327
  >
@@ -347,7 +347,7 @@ function maybeRenderRelatedContent(relatedUrls: string[], directCitationUrls: st
347
347
  <devtools-link
348
348
  href=${relatedUrl}
349
349
  class="link"
350
- .jslogContext=${'references.console-insights'}
350
+ jslogcontext="references.console-insights"
351
351
  >
352
352
  ${relatedUrl}
353
353
  </devtools-link>
@@ -454,12 +454,12 @@ function renderConsentReminder(noLogging: boolean): Lit.TemplateResult {
454
454
  <div>Use of this feature is subject to the <devtools-link
455
455
  href=${TERMS_OF_SERVICE_URL}
456
456
  class="link"
457
- .jslogContext=${'terms-of-service.console-insights'}>
457
+ jslogcontext="terms-of-service.console-insights">
458
458
  Google Terms of Service
459
459
  </devtools-link> and <devtools-link
460
460
  href=${PRIVACY_POLICY_URL}
461
461
  class="link"
462
- .jslogContext=${'privacy-policy.console-insights'}>
462
+ jslogcontext="privacy-policy.console-insights">
463
463
  Google Privacy Policy
464
464
  </devtools-link>
465
465
  </div>
@@ -471,7 +471,7 @@ function renderConsentReminder(noLogging: boolean): Lit.TemplateResult {
471
471
  <devtools-link
472
472
  href=${CODE_SNIPPET_WARNING_URL}
473
473
  class="link"
474
- .jslogContext=${'code-snippets-explainer.console-insights'}
474
+ jslogcontext="code-snippets-explainer.console-insights"
475
475
  >Use generated code snippets with caution</devtools-link>
476
476
  </div>
477
477
  </div>`;
@@ -515,7 +515,7 @@ function renderDisclaimer(noLogging: boolean, onDisclaimerSettingsLink: () => vo
515
515
  jslog=${VisualLogging.action('open-ai-settings').track({click: true})}>
516
516
  Open settings
517
517
  </button> or <devtools-link href=${LEARN_MORE_URL}
518
- class="link" .jslogContext=${'learn-more'}>
518
+ class="link" jslogcontext="learn-more">
519
519
  learn more
520
520
  </devtools-link>
521
521
  </span>`;
@@ -16,7 +16,7 @@ import * as IssueCounter from '../../ui/components/issue_counter/issue_counter.j
16
16
  import * as MarkdownView from '../../ui/components/markdown_view/markdown_view.js';
17
17
  import {Icon} from '../../ui/kit/kit.js';
18
18
  import * as UI from '../../ui/legacy/legacy.js';
19
- import * as VisualLogging from '../../ui/visual_logging/visual_logging.js';
19
+ import {html, render} from '../../ui/lit/lit.js';
20
20
 
21
21
  import {AffectedBlockedByResponseView} from './AffectedBlockedByResponseView.js';
22
22
  import {AffectedCookiesView, AffectedRawCookieLinesView} from './AffectedCookiesView.js';
@@ -452,12 +452,12 @@ export class IssueView extends UI.TreeOutline.TreeElement {
452
452
 
453
453
  const linkList = linkWrapper.listItemElement.createChild('ul', 'link-list');
454
454
  for (const description of this.#description.links) {
455
- const link = UI.Fragment.html`<x-link class="link devtools-link" tabindex="0" href=${description.link}>${
456
- i18nString(UIStrings.learnMoreS, {PH1: description.linkTitle})}</x-link>` as UI.XLink.XLink;
457
- link.setAttribute('jslog', `${VisualLogging.link('learn-more').track({click: true})}`);
458
-
459
455
  const linkListItem = linkList.createChild('li');
460
- linkListItem.appendChild(link);
456
+ // eslint-disable-next-line @devtools/no-lit-render-outside-of-view
457
+ render(
458
+ html`<devtools-link class="link devtools-link" href=${description.link} jslogcontext="learn-more">${
459
+ i18nString(UIStrings.learnMoreS, {PH1: description.linkTitle})}</devtools-link>`,
460
+ linkListItem);
461
461
  }
462
462
  this.appendChild(linkWrapper);
463
463
  }
@@ -4,6 +4,7 @@
4
4
  /* eslint-disable @devtools/no-lit-render-outside-of-view */
5
5
  /* eslint-disable @devtools/no-imperative-dom-api */
6
6
 
7
+ import '../../ui/kit/kit.js';
7
8
  import '../../ui/legacy/legacy.js';
8
9
  import '../../ui/components/tooltips/tooltips.js';
9
10
 
@@ -23,7 +24,7 @@ import * as PanelUtils from '../utils/utils.js';
23
24
 
24
25
  import requestConditionsDrawerStyles from './requestConditionsDrawer.css.js';
25
26
 
26
- const {ref} = Directives;
27
+ const {ref, live} = Directives;
27
28
  const {widgetConfig} = UI.Widget;
28
29
 
29
30
  const UIStrings = {
@@ -325,13 +326,13 @@ export class AffectedCountWidget extends UI.Widget.Widget {
325
326
  }
326
327
 
327
328
  function learnMore(): LitTemplate {
328
- return html`<x-link
329
+ return html`<devtools-link
329
330
  href=${NETWORK_REQUEST_BLOCKING_EXPLANATION_URL}
330
331
  tabindex=0
331
332
  class=devtools-link
332
- jslog=${VisualLogging.link().track({click: true, keydown: 'Enter|Space'}).context('learn-more')}>
333
+ .jslogContext=${'learn-more'}>
333
334
  ${i18nString(UIStrings.learnMore)}
334
- </x-link>`;
335
+ </devtools-link>`;
335
336
  }
336
337
 
337
338
  export class RequestConditionsDrawer extends UI.Widget.VBox implements
@@ -438,10 +439,10 @@ export class RequestConditionsDrawer extends UI.Widget.VBox implements
438
439
  // clang-format off
439
440
  html`
440
441
  <input class=blocked-url-checkbox
441
- @click=${toggle}
442
+ @change=${toggle}
442
443
  type=checkbox
443
444
  title=${i18nString(UIStrings.enableThrottlingToggleLabel, {PH1: constructorStringOrWildcardURL})}
444
- .checked=${enabled}
445
+ .checked=${live(enabled)}
445
446
  .disabled=${!editable || !originalOrUpgradedURLPattern}
446
447
  jslog=${VisualLogging.toggle().track({ change: true })}>
447
448
  <devtools-button
@@ -518,7 +519,7 @@ export class RequestConditionsDrawer extends UI.Widget.VBox implements
518
519
  // clang-format off
519
520
  html`
520
521
  <input class=blocked-url-checkbox
521
- @click=${toggle}
522
+ @change=${toggle}
522
523
  type=checkbox
523
524
  .checked=${condition.enabled}
524
525
  .disabled=${!editable}
@@ -121,10 +121,9 @@ export const DEFAULT_VIEW: ViewFunction = (input, _output, target) => {
121
121
  ` : Lit.nothing}
122
122
 
123
123
  <div class="cookies-panel-item site-has-cookies-in-other-partition ${input.siteHasCookieInOtherPartition ? '' : 'hidden'}">
124
- ${uiI18n.getFormatLocalizedString(str_, UIStrings.siteHasCookieInOtherPartition, {
125
- PH1: UI.XLink.XLink.create(
126
- 'https://developer.chrome.com/en/docs/privacy-sandbox/chips/', i18nString(UIStrings.learnMore), undefined,
127
- undefined, 'learn-more'),})}
124
+ ${uiI18n.getFormatLocalizedStringTemplate(str_, UIStrings.siteHasCookieInOtherPartition, {
125
+ PH1: html`<devtools-link href="https://developer.chrome.com/en/docs/privacy-sandbox/chips/" .jslogContext=${'learn-more'}>${i18nString(UIStrings.learnMore)}</devtools-link>`
126
+ })}
128
127
  </div>
129
128
 
130
129
  <div class="request-cookies-title ${input.responseCookies.cookies.length ? '' : 'hidden'}"
@@ -504,7 +504,7 @@ export const DEFAULT_VIEW: View = (input, output, target) => {
504
504
  <devtools-link
505
505
  href="https://developer.chrome.com/docs/devtools/network/reference/#timing-explanation"
506
506
  class=devtools-link
507
- .jslogContext=${'explanation'}>
507
+ jslogcontext="explanation">
508
508
  ${i18nString(UIStrings.explanation)}
509
509
  </devtools-link>
510
510
  <td></td>
@@ -528,13 +528,8 @@ export const DEFAULT_VIEW: View = (input, output, target) => {
528
528
  ${input.serverTimings.length === 0 ? html`
529
529
  <tr>
530
530
  <td colspan=3>
531
- ${uiI18n.getFormatLocalizedString(str_, UIStrings.duringDevelopmentYouCanUseSToAdd, {PH1:
532
- UI.XLink.XLink.create(
533
- 'https://web.dev/custom-metrics/#server-timing-api',
534
- i18nString(UIStrings.theServerTimingApi),
535
- undefined,
536
- undefined,
537
- 'server-timing-api')})}
531
+ ${uiI18n.getFormatLocalizedStringTemplate(str_, UIStrings.duringDevelopmentYouCanUseSToAdd, {PH1:
532
+ html`<devtools-link href="https://web.dev/custom-metrics/#server-timing-api" .jslogContext=${'server-timing-api'}>${i18nString(UIStrings.theServerTimingApi)}</devtools-link>`})}
538
533
  </td>
539
534
  </tr>` : nothing}
540
535
  </table>`,
@@ -3,6 +3,7 @@
3
3
  // found in the LICENSE file.
4
4
  /* eslint-disable @devtools/no-lit-render-outside-of-view */
5
5
 
6
+ import '../../../ui/kit/kit.js';
6
7
  import '../../../ui/legacy/legacy.js';
7
8
 
8
9
  import * as Host from '../../../core/host/host.js';
@@ -339,11 +340,11 @@ export class HeaderSectionRow extends HTMLElement {
339
340
  // Disabled until https://crbug.com/1079231 is fixed.
340
341
  // clang-format off
341
342
  return html`
342
- <x-link href=${blockedDetails.link.url} class="link">
343
+ <devtools-link href=${blockedDetails.link.url} class="link">
343
344
  <devtools-icon name="open-externally" class="inline-icon extra-large" style="color: var(--icon-link);">
344
345
  </devtools-icon
345
346
  >${i18nString(UIStrings.learnMore)}
346
- </x-link>
347
+ </devtools-link>
347
348
  `;
348
349
  // clang-format on
349
350
  }
@@ -2,6 +2,8 @@
2
2
  // Use of this source code is governed by a BSD-style license that can be
3
3
  // found in the LICENSE file.
4
4
 
5
+ import '../../../ui/kit/kit.js';
6
+
5
7
  import * as i18n from '../../../core/i18n/i18n.js';
6
8
  import * as Platform from '../../../core/platform/platform.js';
7
9
  import type * as SDK from '../../../core/sdk/sdk.js';
@@ -81,7 +83,7 @@ function renderProvisionalHeadersWarning(isRequestCached: boolean): Lit.LitTempl
81
83
  <div class="explanation" title=${cautionTitle}>
82
84
  <devtools-icon class="inline-icon medium" name='warning-filled'>
83
85
  </devtools-icon>
84
- ${cautionText} <x-link href="https://developer.chrome.com/docs/devtools/network/reference/#provisional-headers" class="link">${i18nString(UIStrings.learnMore)}</x-link>
86
+ ${cautionText} <devtools-link href="https://developer.chrome.com/docs/devtools/network/reference/#provisional-headers" class="link">${i18nString(UIStrings.learnMore)}</devtools-link>
85
87
  </div>
86
88
  </div>
87
89
  </div>
@@ -310,7 +310,7 @@ export class RequestHeadersView extends LegacyWrapper.LegacyWrapper.WrappableCom
310
310
  <devtools-link
311
311
  href="https://goo.gle/devtools-override"
312
312
  class="link devtools-link"
313
- .jslogContext=${'devtools-override'}
313
+ jslogcontext="devtools-override"
314
314
  >
315
315
  <devtools-icon name="help" class="inline-icon medium">
316
316
  </devtools-icon>
@@ -319,7 +319,7 @@ export class RequestHeadersView extends LegacyWrapper.LegacyWrapper.WrappableCom
319
319
  @click=${revealHeadersFile}
320
320
  class="link devtools-link"
321
321
  title=${UIStrings.revealHeaderOverrides}
322
- .jslogContext=${'reveal-header-overrides'}
322
+ jslogcontext="reveal-header-overrides"
323
323
  >
324
324
  ${fileIcon}${Persistence.NetworkPersistenceManager.HEADERS_FILENAME}
325
325
  </devtools-link>
@@ -144,7 +144,7 @@ export class HeapProfileView extends ProfileView implements UI.SearchableView.Se
144
144
 
145
145
  this.timelineOverview = new HeapTimelineOverview();
146
146
 
147
- if (Root.Runtime.experiments.isEnabled(Root.Runtime.ExperimentName.SAMPLING_HEAP_PROFILER_TIMELINE)) {
147
+ if (Root.Runtime.experiments.isEnabled(Root.ExperimentNames.ExperimentName.SAMPLING_HEAP_PROFILER_TIMELINE)) {
148
148
  this.timelineOverview.addEventListener(Events.IDS_RANGE_CHANGED, this.onIdsRangeChanged.bind(this));
149
149
  this.timelineOverview.show(this.element, this.element.firstChild);
150
150
  this.timelineOverview.start();
@@ -368,7 +368,7 @@ export class SamplingHeapProfileType extends SamplingHeapProfileTypeBase {
368
368
  }
369
369
 
370
370
  override hasTemporaryView(): boolean {
371
- return Root.Runtime.experiments.isEnabled(Root.Runtime.ExperimentName.SAMPLING_HEAP_PROFILER_TIMELINE);
371
+ return Root.Runtime.experiments.isEnabled(Root.ExperimentNames.ExperimentName.SAMPLING_HEAP_PROFILER_TIMELINE);
372
372
  }
373
373
 
374
374
  override startSampling(): void {
@@ -378,7 +378,7 @@ export class SamplingHeapProfileType extends SamplingHeapProfileTypeBase {
378
378
  }
379
379
 
380
380
  void heapProfilerModel.startSampling();
381
- if (Root.Runtime.experiments.isEnabled(Root.Runtime.ExperimentName.SAMPLING_HEAP_PROFILER_TIMELINE)) {
381
+ if (Root.Runtime.experiments.isEnabled(Root.ExperimentNames.ExperimentName.SAMPLING_HEAP_PROFILER_TIMELINE)) {
382
382
  this.updateTimer = window.setTimeout(() => {
383
383
  void this.updateStats();
384
384
  }, this.updateIntervalMs);
@@ -1338,7 +1338,7 @@ export class HeapSnapshotProfileType extends
1338
1338
 
1339
1339
  override customContent(): Element|null {
1340
1340
  const showOptionToExposeInternalsInHeapSnapshot = Root.Runtime.experiments.isEnabled(
1341
- Root.Runtime.ExperimentName.SHOW_OPTION_TO_EXPOSE_INTERNALS_IN_HEAP_SNAPSHOT);
1341
+ Root.ExperimentNames.ExperimentName.SHOW_OPTION_TO_EXPOSE_INTERNALS_IN_HEAP_SNAPSHOT);
1342
1342
  const exposeInternalsInHeapSnapshotCheckbox =
1343
1343
  SettingsUI.SettingsUI.createSettingCheckbox(i18nString(UIStrings.exposeInternals), this.exposeInternals);
1344
1344
  this.customContentInternal = exposeInternalsInHeapSnapshotCheckbox;
@@ -88,6 +88,7 @@ export class IsolateSelector extends UI.Widget.VBox implements UI.ListControl.Li
88
88
  this.totalTrendDiv, i18nString(UIStrings.totalPageJsHeapSizeChangeTrend, {PH1: trendIntervalMinutes}));
89
89
  UI.Tooltip.Tooltip.install(this.totalValueDiv, i18nString(UIStrings.totalPageJsHeapSizeAcrossAllVm));
90
90
 
91
+ SDK.IsolateManager.IsolateManager.instance().observeIsolates(this);
91
92
  SDK.TargetManager.TargetManager.instance().addEventListener(
92
93
  SDK.TargetManager.Events.NAME_CHANGED, this.targetChanged, this);
93
94
  SDK.TargetManager.TargetManager.instance().addEventListener(
@@ -96,7 +97,6 @@ export class IsolateSelector extends UI.Widget.VBox implements UI.ListControl.Li
96
97
 
97
98
  override wasShown(): void {
98
99
  super.wasShown();
99
- SDK.IsolateManager.IsolateManager.instance().observeIsolates(this);
100
100
  SDK.IsolateManager.IsolateManager.instance().addEventListener(
101
101
  SDK.IsolateManager.Events.MEMORY_CHANGED, this.heapStatsChanged, this);
102
102
  }
@@ -105,7 +105,6 @@ export class IsolateSelector extends UI.Widget.VBox implements UI.ListControl.Li
105
105
  super.willHide();
106
106
  SDK.IsolateManager.IsolateManager.instance().removeEventListener(
107
107
  SDK.IsolateManager.Events.MEMORY_CHANGED, this.heapStatsChanged, this);
108
- SDK.IsolateManager.IsolateManager.instance().unobserveIsolates(this);
109
108
  }
110
109
 
111
110
  isolateAdded(isolate: SDK.IsolateManager.Isolate): void {
@@ -101,7 +101,7 @@ UI.ViewManager.registerViewExtension({
101
101
  const Profiler = await loadProfilerModule();
102
102
  return Profiler.LiveHeapProfileView.LiveHeapProfileView.instance();
103
103
  },
104
- experiment: Root.Runtime.ExperimentName.LIVE_HEAP_PROFILE,
104
+ experiment: Root.ExperimentNames.ExperimentName.LIVE_HEAP_PROFILE,
105
105
  });
106
106
 
107
107
  UI.ActionRegistration.registerActionExtension({
@@ -115,7 +115,7 @@ UI.ActionRegistration.registerActionExtension({
115
115
  return new Profiler.LiveHeapProfileView.ActionDelegate();
116
116
  },
117
117
  category: UI.ActionRegistration.ActionCategory.MEMORY,
118
- experiment: Root.Runtime.ExperimentName.LIVE_HEAP_PROFILE,
118
+ experiment: Root.ExperimentNames.ExperimentName.LIVE_HEAP_PROFILE,
119
119
  options: [
120
120
  {
121
121
  value: true,
@@ -136,7 +136,7 @@ UI.ActionRegistration.registerActionExtension({
136
136
  return new Profiler.LiveHeapProfileView.ActionDelegate();
137
137
  },
138
138
  category: UI.ActionRegistration.ActionCategory.MEMORY,
139
- experiment: Root.Runtime.ExperimentName.LIVE_HEAP_PROFILE,
139
+ experiment: Root.ExperimentNames.ExperimentName.LIVE_HEAP_PROFILE,
140
140
  title: i18nLazyString(UIStrings.startRecordingHeapAllocationsAndReload),
141
141
  });
142
142
 
@@ -44,5 +44,5 @@ UI.ViewManager.registerViewExtension({
44
44
  const ProtocolMonitor = await loadProtocolMonitorModule();
45
45
  return new ProtocolMonitor.ProtocolMonitor.ProtocolMonitorImpl();
46
46
  },
47
- experiment: Root.Runtime.ExperimentName.PROTOCOL_MONITOR,
47
+ experiment: Root.ExperimentNames.ExperimentName.PROTOCOL_MONITOR,
48
48
  });
@@ -692,7 +692,6 @@ export class RecorderController extends LitElement {
692
692
  const indexToInsertAt = currentIndex + (position === Components.StepView.AddStepPosition.BEFORE ? 0 : 1);
693
693
  steps.splice(indexToInsertAt, 0, {type: Models.Schema.StepType.WaitForElement, selectors: ['body']});
694
694
  const recording = {...this.currentRecording, flow: {...this.currentRecording.flow, steps}};
695
- Host.userMetrics.recordingEdited(Host.UserMetrics.RecordingEdited.STEP_ADDED);
696
695
  this.#stepBreakpointIndexes = new Set([...this.#stepBreakpointIndexes.values()].map(breakpointIndex => {
697
696
  if (indexToInsertAt > breakpointIndex) {
698
697
  return breakpointIndex;
@@ -723,7 +722,6 @@ export class RecorderController extends LitElement {
723
722
  const currentIndex = steps.indexOf(event.step);
724
723
  steps.splice(currentIndex, 1);
725
724
  const flow = {...this.currentRecording.flow, steps};
726
- Host.userMetrics.recordingEdited(Host.UserMetrics.RecordingEdited.STEP_REMOVED);
727
725
  this.#stepBreakpointIndexes = new Set([...this.#stepBreakpointIndexes.values()]
728
726
  .map(breakpointIndex => {
729
727
  if (currentIndex > breakpointIndex) {
@@ -958,10 +956,8 @@ export class RecorderController extends LitElement {
958
956
  await this.#exportContent(converter.getFilename(this.currentRecording.flow), content);
959
957
  const builtInMetric = CONVERTER_ID_TO_METRIC[converter.getId()];
960
958
  if (builtInMetric) {
961
- Host.userMetrics.recordingExported(builtInMetric);
962
959
  UI.ARIAUtils.LiveAnnouncer.alert(i18nString(UIStrings.recordingExported));
963
960
  } else if (converter.getId().startsWith(Converters.ExtensionConverter.EXTENSION_PREFIX)) {
964
- Host.userMetrics.recordingExported(Host.UserMetrics.RecordingExported.TO_EXTENSION);
965
961
  UI.ARIAUtils.LiveAnnouncer.alert(i18nString(UIStrings.recordingExported));
966
962
  } else {
967
963
  throw new Error('Could not find a metric for the export option with id = ' + id);
@@ -993,7 +989,6 @@ export class RecorderController extends LitElement {
993
989
  this.#setCurrentRecording(
994
990
  await this.#storage.updateRecording(this.currentRecording.storageName, flow),
995
991
  {keepBreakpoints: true, updateSession: true});
996
- Host.userMetrics.recordingAssertion(Host.UserMetrics.RecordingAssertion.ASSERTION_ADDED);
997
992
  await this.updateComplete;
998
993
  // FIXME: call a method on the recording view widget.
999
994
  await this.#recordingView?.updateComplete;
@@ -1195,9 +1190,9 @@ export class RecorderController extends LitElement {
1195
1190
  <div class="empty-state-description">
1196
1191
  <span>${i18nString(UIStrings.recordingDescription)}</span>
1197
1192
  <devtools-link
1198
- class="x-link devtools-link"
1193
+ class="devtools-link"
1199
1194
  href=${RECORDER_EXPLANATION_URL}
1200
- .jslogContext=${'learn-more'}
1195
+ jslogcontext="learn-more"
1201
1196
  >${i18nString(UIStrings.learnMore)}</devtools-link>
1202
1197
  </div>
1203
1198
  <devtools-button .variant=${Buttons.Button.Variant.TONAL} jslogContext=${Actions.RecorderActions.CREATE_RECORDING} @click=${this.#onCreateNewRecording}>${i18nString(UIStrings.createRecording)}</devtools-button>
@@ -1473,9 +1468,9 @@ export class RecorderController extends LitElement {
1473
1468
  }
1474
1469
  ></devtools-button>
1475
1470
  <div class="feedback">
1476
- <devtools-link class="x-link" title=${i18nString(UIStrings.sendFeedback)} href=${
1471
+ <devtools-link class="devtools-link" title=${i18nString(UIStrings.sendFeedback)} href=${
1477
1472
  FEEDBACK_URL
1478
- } .jslogContext=${'feedback'}>${i18nString(UIStrings.sendFeedback)}</devtools-link>
1473
+ } jslogcontext="feedback">${i18nString(UIStrings.sendFeedback)}</devtools-link>
1479
1474
  </div>
1480
1475
  <div class="separator"></div>
1481
1476
  <devtools-shortcut-dialog
@@ -211,13 +211,13 @@ export const DEFAULT_VIEW = (input: ViewInput, output: ViewOutput, target: HTMLE
211
211
  />
212
212
  <label class="row-label" for="selector-attribute">
213
213
  <span>${i18nString(UIStrings.selectorAttribute)}</span>
214
- <x-link
214
+ <devtools-link
215
215
  class="link" href="https://g.co/devtools/recorder#selector"
216
216
  title=${i18nString(UIStrings.learnMore)}
217
- jslog=${VisualLogging.link('recorder-selector-help').track({click: true})}>
217
+ .jslogContext=${'recorder-selector-help'}>
218
218
  <devtools-icon name="help">
219
219
  </devtools-icon>
220
- </x-link>
220
+ </devtools-link>
221
221
  </label>
222
222
  <input
223
223
  value=${selectorAttribute}
@@ -232,13 +232,13 @@ export const DEFAULT_VIEW = (input: ViewInput, output: ViewOutput, target: HTMLE
232
232
  />
233
233
  <label class="row-label">
234
234
  <span>${i18nString(UIStrings.selectorTypes)}</span>
235
- <x-link
235
+ <devtools-link
236
236
  class="link" href="https://g.co/devtools/recorder#selector"
237
237
  title=${i18nString(UIStrings.learnMore)}
238
- jslog=${VisualLogging.link('recorder-selector-help').track({click: true})}>
238
+ .jslogContext=${'recorder-selector-help'}>
239
239
  <devtools-icon name="help">
240
240
  </devtools-icon>
241
- </x-link>
241
+ </devtools-link>
242
242
  </label>
243
243
  <div class="checkbox-container">
244
244
  ${repeat(selectorTypes, item => {
@@ -177,38 +177,6 @@ const networkConditionPresets = [
177
177
  SDK.NetworkManager.Fast4GConditions,
178
178
  ];
179
179
 
180
- function converterIdToFlowMetric(
181
- converterId: string,
182
- ): Host.UserMetrics.RecordingCopiedToClipboard {
183
- switch (converterId) {
184
- case Models.ConverterIds.ConverterIds.PUPPETEER:
185
- case Models.ConverterIds.ConverterIds.PUPPETEER_FIREFOX:
186
- return Host.UserMetrics.RecordingCopiedToClipboard.COPIED_RECORDING_WITH_PUPPETEER;
187
- case Models.ConverterIds.ConverterIds.JSON:
188
- return Host.UserMetrics.RecordingCopiedToClipboard.COPIED_RECORDING_WITH_JSON;
189
- case Models.ConverterIds.ConverterIds.REPLAY:
190
- return Host.UserMetrics.RecordingCopiedToClipboard.COPIED_RECORDING_WITH_REPLAY;
191
- default:
192
- return Host.UserMetrics.RecordingCopiedToClipboard.COPIED_RECORDING_WITH_EXTENSION;
193
- }
194
- }
195
-
196
- function converterIdToStepMetric(
197
- converterId: string,
198
- ): Host.UserMetrics.RecordingCopiedToClipboard {
199
- switch (converterId) {
200
- case Models.ConverterIds.ConverterIds.PUPPETEER:
201
- case Models.ConverterIds.ConverterIds.PUPPETEER_FIREFOX:
202
- return Host.UserMetrics.RecordingCopiedToClipboard.COPIED_STEP_WITH_PUPPETEER;
203
- case Models.ConverterIds.ConverterIds.JSON:
204
- return Host.UserMetrics.RecordingCopiedToClipboard.COPIED_STEP_WITH_JSON;
205
- case Models.ConverterIds.ConverterIds.REPLAY:
206
- return Host.UserMetrics.RecordingCopiedToClipboard.COPIED_STEP_WITH_REPLAY;
207
- default:
208
- return Host.UserMetrics.RecordingCopiedToClipboard.COPIED_STEP_WITH_EXTENSION;
209
- }
210
- }
211
-
212
180
  function renderSettings({
213
181
  settings,
214
182
  replaySettingsExpanded,
@@ -1193,8 +1161,6 @@ export class RecordingView extends UI.Widget.Widget {
1193
1161
  }
1194
1162
 
1195
1163
  Host.InspectorFrontendHost.InspectorFrontendHostInstance.copyText(text);
1196
- const metric = step ? converterIdToStepMetric(converter.getId()) : converterIdToFlowMetric(converter.getId());
1197
- Host.userMetrics.recordingCopiedToClipboard(metric);
1198
1164
  }
1199
1165
 
1200
1166
  #onCopyStepEvent(event: CopyStepEvent): void {
@@ -1223,10 +1189,6 @@ export class RecordingView extends UI.Widget.Widget {
1223
1189
 
1224
1190
  showCodeToggle = (): void => {
1225
1191
  this.#showCodeView = !this.#showCodeView;
1226
- Host.userMetrics.recordingCodeToggled(
1227
- this.#showCodeView ? Host.UserMetrics.RecordingCodeToggled.CODE_SHOWN :
1228
- Host.UserMetrics.RecordingCodeToggled.CODE_HIDDEN,
1229
- );
1230
1192
  void this.#convertToCode();
1231
1193
  };
1232
1194