chrome-devtools-frontend 1.0.1681091 → 1.0.1682249

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 (208) hide show
  1. package/eslint.config.mjs +8 -3
  2. package/front_end/core/sdk/ConsoleModel.ts +1 -1
  3. package/front_end/core/sdk/DOMModel.ts +8 -0
  4. package/front_end/core/sdk/NetworkManager.ts +9 -4
  5. package/front_end/core/sdk/OverlayModel.ts +3 -2
  6. package/front_end/core/sdk/PreloadingModel.ts +44 -22
  7. package/front_end/core/sdk/RemoteObject.ts +4 -1
  8. package/front_end/core/sdk/RuntimeModel.ts +5 -5
  9. package/front_end/core/sdk/SDKSettings.ts +19 -0
  10. package/front_end/core/sdk/sdk.ts +2 -0
  11. package/front_end/entrypoints/formatter_worker/FormatterWorker.ts +1 -1
  12. package/front_end/entrypoints/inspector_main/InspectorMain.ts +3 -1
  13. package/front_end/entrypoints/inspector_main/inspector_main-meta.ts +1 -5
  14. package/front_end/entrypoints/main/MainImpl.ts +9 -10
  15. package/front_end/entrypoints/main/main-meta.ts +82 -0
  16. package/front_end/entrypoints/shell/shell.ts +0 -5
  17. package/front_end/entrypoints/trace_app/trace_app.ts +0 -5
  18. package/front_end/generated/InspectorBackendCommands.ts +2 -0
  19. package/front_end/generated/protocol-mapping.d.ts +16 -0
  20. package/front_end/generated/protocol-proxy-api.d.ts +12 -0
  21. package/front_end/generated/protocol.ts +12 -0
  22. package/front_end/models/ai_assistance/ExtensionScope.ts +11 -12
  23. package/front_end/models/ai_assistance/agents/AiAgent.ts +1 -1
  24. package/front_end/models/ai_assistance/agents/ContextSelectionAgent.ts +2 -1
  25. package/front_end/models/ai_assistance/agents/PerformanceAgent.snapshot.txt +1 -1
  26. package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +2 -1
  27. package/front_end/models/ai_assistance/contexts/PerformanceTraceContext.ts +2 -1
  28. package/front_end/models/ai_assistance/data_formatters/PerformanceInsightFormatter.snapshot.txt +8 -8
  29. package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.snapshot.txt +8 -8
  30. package/front_end/models/ai_code_completion/debug.ts +6 -3
  31. package/front_end/models/ai_code_generation/debug.ts +6 -3
  32. package/front_end/models/badges/UserBadges.ts +9 -2
  33. package/front_end/models/bindings/DebuggerLanguagePlugins.ts +1 -0
  34. package/front_end/models/emulation/DeviceModeModel.ts +16 -27
  35. package/front_end/models/emulation/EmulatedDevices.ts +30 -125
  36. package/front_end/models/extensions/ExtensionAPI.ts +34 -23
  37. package/front_end/models/formatter/ScriptFormatter.ts +1 -0
  38. package/front_end/models/javascript_metadata/NativeFunctions.js +5 -1
  39. package/front_end/models/live-metrics/web-vitals-injected/spec/spec.ts +4 -4
  40. package/front_end/models/logs/NetworkLog.ts +11 -4
  41. package/front_end/models/persistence/AutomaticFileSystemWorkspaceBinding.ts +4 -2
  42. package/front_end/models/persistence/NetworkPersistenceManager.ts +7 -1
  43. package/front_end/models/stack_trace/StackTraceImpl.ts +1 -0
  44. package/front_end/models/trace/Name.ts +5 -5
  45. package/front_end/models/trace/Styles.ts +115 -115
  46. package/front_end/models/trace/extras/TraceTree.ts +2 -1
  47. package/front_end/models/trace/helpers/Network.ts +4 -1
  48. package/front_end/models/trace/insights/CLSCulprits.ts +4 -2
  49. package/front_end/models/trace/insights/CharacterSet.ts +3 -3
  50. package/front_end/models/trace/insights/DOMSize.ts +1 -1
  51. package/front_end/models/trace/insights/DuplicatedJavaScript.ts +6 -2
  52. package/front_end/models/trace/insights/FontDisplay.ts +9 -3
  53. package/front_end/models/trace/insights/ForcedReflow.ts +4 -4
  54. package/front_end/models/trace/insights/INPBreakdown.ts +3 -4
  55. package/front_end/models/trace/insights/ImageDelivery.ts +2 -2
  56. package/front_end/models/trace/insights/LCPBreakdown.ts +1 -1
  57. package/front_end/models/trace/insights/LCPDiscovery.ts +5 -5
  58. package/front_end/models/trace/insights/LegacyJavaScript.ts +7 -3
  59. package/front_end/models/trace/insights/ModernHTTP.ts +3 -3
  60. package/front_end/models/trace/insights/NetworkDependencyTree.ts +13 -9
  61. package/front_end/models/trace/insights/RenderBlocking.ts +1 -1
  62. package/front_end/models/trace/insights/SlowCSSSelector.ts +29 -25
  63. package/front_end/models/trace/insights/ThirdParties.ts +13 -5
  64. package/front_end/models/trace/insights/Viewport.ts +4 -2
  65. package/front_end/models/workspace/IgnoreListManager.ts +53 -17
  66. package/front_end/panels/accessibility/ARIAAttributesView.ts +11 -2
  67. package/front_end/panels/ai_assistance/components/ChatMessage.ts +67 -53
  68. package/front_end/panels/ai_assistance/components/ChatView.ts +2 -2
  69. package/front_end/panels/ai_assistance/components/StylingAgentMarkdownRenderer.ts +2 -2
  70. package/front_end/panels/ai_assistance/components/WalkthroughView.ts +5 -5
  71. package/front_end/panels/animation/AnimationTimeline.ts +2 -0
  72. package/front_end/panels/application/ServiceWorkersView.ts +1 -1
  73. package/front_end/panels/application/StorageView.ts +2 -0
  74. package/front_end/panels/application/preloading/PreloadingView.ts +9 -3
  75. package/front_end/panels/application/preloading/components/components.ts +2 -0
  76. package/front_end/panels/browser_debugger/ObjectEventListenersSidebarPane.ts +10 -11
  77. package/front_end/panels/changes/CombinedDiffView.ts +1 -1
  78. package/front_end/panels/common/BadgeNotification.ts +1 -1
  79. package/front_end/panels/common/ExtensionPanel.ts +12 -7
  80. package/front_end/panels/common/ExtensionServer.ts +85 -26
  81. package/front_end/panels/common/GdpSignUpDialog.ts +1 -1
  82. package/front_end/panels/console/ConsoleView.ts +2 -1
  83. package/front_end/panels/console/ConsoleViewMessage.ts +3 -2
  84. package/front_end/panels/console/console-meta.ts +9 -0
  85. package/front_end/panels/css_overview/CSSOverviewCompletedView.ts +9 -4
  86. package/front_end/panels/elements/CSSRuleValidator.ts +12 -12
  87. package/front_end/panels/elements/CSSSpecificityBreakdown.ts +1 -1
  88. package/front_end/panels/elements/ClassesPaneWidget.ts +6 -6
  89. package/front_end/panels/elements/ColorSwatchPopoverIcon.ts +1 -1
  90. package/front_end/panels/elements/ComputedStyleWidget.ts +4 -5
  91. package/front_end/panels/elements/DOMTreeContextMenu.ts +3 -6
  92. package/front_end/panels/elements/ElementIssueUtils.ts +20 -20
  93. package/front_end/panels/elements/ElementStatePaneWidget.ts +9 -6
  94. package/front_end/panels/elements/ElementsPanel.ts +10 -10
  95. package/front_end/panels/elements/ElementsTreeElement.ts +35 -29
  96. package/front_end/panels/elements/ElementsTreeOutline.ts +5 -20
  97. package/front_end/panels/elements/EventListenersWidget.ts +18 -19
  98. package/front_end/panels/elements/LayersWidget.ts +4 -4
  99. package/front_end/panels/elements/LayoutPane.ts +11 -11
  100. package/front_end/panels/elements/MarkerDecorator.ts +3 -3
  101. package/front_end/panels/elements/PlatformFontsWidget.ts +8 -8
  102. package/front_end/panels/elements/PropertiesWidget.ts +4 -4
  103. package/front_end/panels/elements/PropertyRenderer.ts +2 -2
  104. package/front_end/panels/elements/ShortcutTreeElement.ts +1 -1
  105. package/front_end/panels/elements/StylePropertiesSection.ts +14 -14
  106. package/front_end/panels/elements/StylePropertyTreeElement.ts +21 -21
  107. package/front_end/panels/elements/StylesSidebarPane.ts +12 -13
  108. package/front_end/panels/elements/components/AccessibilityTreeNode.ts +1 -1
  109. package/front_end/panels/elements/components/CSSHintDetailsView.ts +1 -1
  110. package/front_end/panels/elements/components/CSSVariableValueView.ts +3 -3
  111. package/front_end/panels/elements/components/ElementsBreadcrumbsUtils.ts +2 -2
  112. package/front_end/panels/elements/components/ElementsTreeExpandButton.ts +1 -1
  113. package/front_end/panels/elements/elements-meta.ts +13 -13
  114. package/front_end/panels/issues/AffectedCookiesView.ts +2 -0
  115. package/front_end/panels/issues/AffectedElementsView.ts +5 -0
  116. package/front_end/panels/issues/IssueView.ts +12 -8
  117. package/front_end/panels/layer_viewer/LayerDetailsView.ts +11 -7
  118. package/front_end/panels/layer_viewer/LayerTreeOutline.ts +2 -0
  119. package/front_end/panels/linear_memory_inspector/components/LinearMemoryViewer.ts +1 -1
  120. package/front_end/panels/media/PlayerPropertiesView.ts +309 -416
  121. package/front_end/panels/media/playerPropertiesView.css +1 -1
  122. package/front_end/panels/network/NetworkLogView.ts +5 -2
  123. package/front_end/panels/network/NetworkOverview.ts +11 -5
  124. package/front_end/panels/network/NetworkPanel.ts +4 -2
  125. package/front_end/panels/network/NetworkWaterfallColumn.ts +16 -3
  126. package/front_end/panels/network/RequestHeadersView.ts +4 -4
  127. package/front_end/panels/network/components/ResponseHeaderSection.ts +7 -4
  128. package/front_end/panels/network/network-meta.ts +63 -0
  129. package/front_end/panels/performance_monitor/PerformanceMonitor.ts +2 -1
  130. package/front_end/panels/recorder/RecordingView.ts +89 -73
  131. package/front_end/panels/recorder/ReplaySection.ts +59 -40
  132. package/front_end/panels/recorder/injected/injected.ts +4 -0
  133. package/front_end/panels/security/SecurityPanel.ts +5 -6
  134. package/front_end/panels/security/SecurityPanelSidebar.ts +244 -204
  135. package/front_end/panels/security/security.ts +0 -4
  136. package/front_end/panels/settings/EditFileSystemView.ts +8 -7
  137. package/front_end/panels/settings/FrameworkIgnoreListSettingsTab.ts +20 -14
  138. package/front_end/panels/settings/components/SyncSection.ts +1 -1
  139. package/front_end/panels/settings/emulation/DevicesSettingsTab.ts +0 -3
  140. package/front_end/panels/snippets/ScriptSnippetFileSystem.ts +10 -11
  141. package/front_end/panels/sources/NavigatorView.ts +6 -2
  142. package/front_end/panels/sources/SourcesNavigator.ts +8 -4
  143. package/front_end/panels/sources/SourcesPanel.ts +4 -2
  144. package/front_end/panels/sources/SourcesSearchScope.ts +3 -1
  145. package/front_end/panels/sources/UISourceCodeFrame.ts +2 -2
  146. package/front_end/panels/sources/WatchExpressionsSidebarPane.ts +3 -3
  147. package/front_end/panels/timeline/TimelineFlameChartDataProvider.ts +5 -5
  148. package/front_end/panels/timeline/components/CWVMetrics.ts +1 -2
  149. package/front_end/panels/timeline/components/IgnoreListSetting.ts +5 -5
  150. package/front_end/panels/timeline/components/LayoutShiftDetails.ts +2 -3
  151. package/front_end/panels/timeline/components/LiveMetricsView.ts +2 -2
  152. package/front_end/panels/timeline/components/Sidebar.ts +3 -3
  153. package/front_end/panels/timeline/components/SidebarSingleInsightSet.ts +1 -2
  154. package/front_end/panels/timeline/components/insights/BaseInsightComponent.ts +3 -1
  155. package/front_end/panels/timeline/components/insights/CLSCulprits.ts +1 -2
  156. package/front_end/panels/timeline/components/insights/Cache.ts +1 -2
  157. package/front_end/panels/timeline/components/insights/CharacterSet.ts +1 -2
  158. package/front_end/panels/timeline/components/insights/DOMSize.ts +1 -2
  159. package/front_end/panels/timeline/components/insights/DocumentLatency.ts +2 -2
  160. package/front_end/panels/timeline/components/insights/DuplicatedJavaScript.ts +2 -2
  161. package/front_end/panels/timeline/components/insights/FontDisplay.ts +1 -2
  162. package/front_end/panels/timeline/components/insights/ForcedReflow.ts +1 -2
  163. package/front_end/panels/timeline/components/insights/INPBreakdown.ts +1 -2
  164. package/front_end/panels/timeline/components/insights/ImageDelivery.ts +1 -2
  165. package/front_end/panels/timeline/components/insights/LCPBreakdown.ts +13 -13
  166. package/front_end/panels/timeline/components/insights/LCPDiscovery.ts +1 -2
  167. package/front_end/panels/timeline/components/insights/LegacyJavaScript.ts +4 -4
  168. package/front_end/panels/timeline/components/insights/ModernHTTP.ts +1 -2
  169. package/front_end/panels/timeline/components/insights/NetworkDependencyTree.ts +10 -8
  170. package/front_end/panels/timeline/components/insights/RenderBlocking.ts +2 -2
  171. package/front_end/panels/timeline/components/insights/SidebarInsight.ts +3 -1
  172. package/front_end/panels/timeline/components/insights/SlowCSSSelector.ts +2 -2
  173. package/front_end/panels/timeline/components/insights/ThirdParties.ts +1 -2
  174. package/front_end/panels/timeline/components/insights/Viewport.ts +1 -2
  175. package/front_end/panels/timeline/overlays/OverlaysImpl.ts +1 -2
  176. package/front_end/panels/timeline/timeline.ts +0 -2
  177. package/front_end/panels/web_audio/WebAudioView.ts +14 -6
  178. package/front_end/panels/webauthn/WebauthnPane.ts +9 -9
  179. package/front_end/third_party/chromium/README.chromium +1 -1
  180. package/front_end/third_party/web-vitals/rebuild.sh +1 -1
  181. package/front_end/ui/components/diff_view/DiffView.ts +2 -1
  182. package/front_end/ui/components/report_view/ReportView.docs.ts +2 -2
  183. package/front_end/ui/components/text_editor/javascript.ts +12 -13
  184. package/front_end/ui/legacy/GlassPane.ts +38 -14
  185. package/front_end/ui/legacy/Treeoutline.ts +14 -3
  186. package/front_end/ui/legacy/components/color_picker/ContrastDetails.ts +11 -11
  187. package/front_end/ui/legacy/components/color_picker/FormatPickerContextMenu.ts +1 -1
  188. package/front_end/ui/legacy/components/color_picker/Spectrum.ts +19 -20
  189. package/front_end/ui/legacy/components/object_ui/CustomPreviewComponent.ts +1 -1
  190. package/front_end/ui/legacy/components/object_ui/JavaScriptREPL.ts +1 -1
  191. package/front_end/ui/legacy/components/object_ui/ObjectPopoverHelper.ts +3 -3
  192. package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +185 -355
  193. package/front_end/ui/legacy/components/object_ui/RemoteObjectPreviewFormatter.ts +3 -8
  194. package/front_end/ui/legacy/components/utils/ImagePreview.ts +15 -16
  195. package/front_end/ui/legacy/components/utils/JSPresentationUtils.ts +4 -4
  196. package/front_end/ui/legacy/components/utils/Linkifier.ts +8 -10
  197. package/front_end/ui/settings/InspectorMainSettings.ts +12 -0
  198. package/front_end/ui/settings/settings.ts +2 -0
  199. package/front_end/ui/visual_logging/KnownContextValues.ts +32 -0
  200. package/mcp/mcp.ts +0 -9
  201. package/package.json +1 -1
  202. package/front_end/core/sdk/sdk-meta.ts +0 -40
  203. package/front_end/models/badges/badges-meta.ts +0 -27
  204. package/front_end/models/logs/logs-meta.ts +0 -84
  205. package/front_end/models/persistence/persistence-meta.ts +0 -69
  206. package/front_end/models/workspace/workspace-meta.ts +0 -40
  207. package/front_end/panels/security/OriginTreeElement.ts +0 -60
  208. package/front_end/panels/security/SecurityPanelSidebarTreeElement.ts +0 -30
@@ -20,7 +20,7 @@
20
20
  }
21
21
  }
22
22
 
23
- .media-property-renderer:nth-child(even):not(:hover) {
23
+ .media-property-renderer:nth-child(even of :not(.media-property-renderer-hidden)):not(:hover) {
24
24
  background: var(--sys-color-surface1);
25
25
  }
26
26
 
@@ -1059,7 +1059,8 @@ export class NetworkLogView extends Common.ObjectWrapper.eventMixin<EventTypes,
1059
1059
  resourceTreeModel.removeEventListener(
1060
1060
  SDK.ResourceTreeModel.Events.DOMContentLoaded, this.domContentLoadedEventFired, this);
1061
1061
  }
1062
- const preserveLog = Common.Settings.Settings.instance().moduleSetting('network-log.preserve-log').get();
1062
+ const preserveLog =
1063
+ Common.Settings.Settings.instance().resolve(SDK.SDKSettings.preserveNetworkLogSettingDescriptor).get();
1063
1064
  if (!preserveLog) {
1064
1065
  this.reset();
1065
1066
  }
@@ -2196,7 +2197,9 @@ export class NetworkLogView extends Common.ObjectWrapper.eventMixin<EventTypes,
2196
2197
  NetworkForward.UIRequestLocation.UIRequestLocation.responseHeaderMatch(request, {name: '', value: ''});
2197
2198
  const networkPersistenceManager = Persistence.NetworkPersistenceManager.NetworkPersistenceManager.instance();
2198
2199
  if (networkPersistenceManager.project()) {
2199
- Common.Settings.Settings.instance().moduleSetting('persistence-network-overrides-enabled').set(true);
2200
+ Common.Settings.Settings.instance()
2201
+ .resolve(Persistence.NetworkPersistenceManager.persistenceNetworkOverridesEnabledSettingDescriptor)
2202
+ .set(true);
2200
2203
  await networkPersistenceManager.getOrCreateHeadersUISourceCodeFromUrl(request.url());
2201
2204
  await Common.Revealer.reveal(requestLocation);
2202
2205
  } else { // If folder for local overrides has not been provided yet
@@ -156,10 +156,10 @@ export class NetworkOverview extends PerfUI.TimelineOverviewPane.TimelineOvervie
156
156
  }
157
157
 
158
158
  const context = this.context();
159
- const linesByType = new Map<string, number[]>();
159
+ const linesByType = new Map<NetworkTimeCalculator.RequestTimeRangeNames, number[]>();
160
160
  const paddingTop = PADDING;
161
161
 
162
- function drawLines(type: string): void {
162
+ function drawLines(type: NetworkTimeCalculator.RequestTimeRangeNames): void {
163
163
  const lines = linesByType.get(type);
164
164
  if (!lines) {
165
165
  return;
@@ -183,7 +183,7 @@ export class NetworkOverview extends PerfUI.TimelineOverviewPane.TimelineOvervie
183
183
  }
184
184
  }
185
185
 
186
- function addLine(type: string, y: number, start: number, end: number): void {
186
+ function addLine(type: NetworkTimeCalculator.RequestTimeRangeNames, y: number, start: number, end: number): void {
187
187
  let lines = linesByType.get(type);
188
188
  if (!lines) {
189
189
  lines = [];
@@ -217,6 +217,8 @@ export class NetworkOverview extends PerfUI.TimelineOverviewPane.TimelineOvervie
217
217
  drawLines(NetworkTimeCalculator.RequestTimeRangeNames.SERVICE_WORKER);
218
218
  drawLines(NetworkTimeCalculator.RequestTimeRangeNames.SERVICE_WORKER_PREPARATION);
219
219
  drawLines(NetworkTimeCalculator.RequestTimeRangeNames.SERVICE_WORKER_RESPOND_WITH);
220
+ drawLines(NetworkTimeCalculator.RequestTimeRangeNames.SERVICE_WORKER_ROUTER_EVALUATION);
221
+ drawLines(NetworkTimeCalculator.RequestTimeRangeNames.SERVICE_WORKER_CACHE_LOOKUP);
220
222
  drawLines(NetworkTimeCalculator.RequestTimeRangeNames.PUSH);
221
223
  drawLines(NetworkTimeCalculator.RequestTimeRangeNames.PROXY);
222
224
  drawLines(NetworkTimeCalculator.RequestTimeRangeNames.DNS);
@@ -224,6 +226,7 @@ export class NetworkOverview extends PerfUI.TimelineOverviewPane.TimelineOvervie
224
226
  drawLines(NetworkTimeCalculator.RequestTimeRangeNames.SENDING);
225
227
  drawLines(NetworkTimeCalculator.RequestTimeRangeNames.WAITING);
226
228
  drawLines(NetworkTimeCalculator.RequestTimeRangeNames.RECEIVING);
229
+ drawLines(NetworkTimeCalculator.RequestTimeRangeNames.RECEIVING_PUSH);
227
230
 
228
231
  if (this.highlightedRequest) {
229
232
  const size = 5;
@@ -297,7 +300,7 @@ export class NetworkOverview extends PerfUI.TimelineOverviewPane.TimelineOvervie
297
300
  }
298
301
  }
299
302
 
300
- export const RequestTimeRangeNameToColor = {
303
+ export const RequestTimeRangeNameToColor: Record<NetworkTimeCalculator.RequestTimeRangeNames, string> = {
301
304
  [NetworkTimeCalculator.RequestTimeRangeNames.TOTAL]: '--network-overview-total',
302
305
  [NetworkTimeCalculator.RequestTimeRangeNames.BLOCKING]: '--network-overview-blocking',
303
306
  [NetworkTimeCalculator.RequestTimeRangeNames.CONNECTING]: '--network-overview-connecting',
@@ -305,6 +308,8 @@ export const RequestTimeRangeNameToColor = {
305
308
  [NetworkTimeCalculator.RequestTimeRangeNames.SERVICE_WORKER_PREPARATION]: '--network-overview-service-worker',
306
309
  [NetworkTimeCalculator.RequestTimeRangeNames.SERVICE_WORKER_RESPOND_WITH]:
307
310
  '--network-overview-service-worker-respond-with',
311
+ [NetworkTimeCalculator.RequestTimeRangeNames.SERVICE_WORKER_ROUTER_EVALUATION]: '--network-overview-service-worker',
312
+ [NetworkTimeCalculator.RequestTimeRangeNames.SERVICE_WORKER_CACHE_LOOKUP]: '--network-overview-service-worker',
308
313
  [NetworkTimeCalculator.RequestTimeRangeNames.PUSH]: '--network-overview-push',
309
314
  [NetworkTimeCalculator.RequestTimeRangeNames.PROXY]: '--override-network-overview-proxy',
310
315
  [NetworkTimeCalculator.RequestTimeRangeNames.DNS]: '--network-overview-dns',
@@ -312,8 +317,9 @@ export const RequestTimeRangeNameToColor = {
312
317
  [NetworkTimeCalculator.RequestTimeRangeNames.SENDING]: '--override-network-overview-sending',
313
318
  [NetworkTimeCalculator.RequestTimeRangeNames.WAITING]: '--network-overview-waiting',
314
319
  [NetworkTimeCalculator.RequestTimeRangeNames.RECEIVING]: '--network-overview-receiving',
320
+ [NetworkTimeCalculator.RequestTimeRangeNames.RECEIVING_PUSH]: '--network-overview-receiving',
315
321
  [NetworkTimeCalculator.RequestTimeRangeNames.QUEUEING]: '--network-overview-queueing',
316
- } as Record<string, string>;
322
+ };
317
323
 
318
324
  const BAND_HEIGHT = 3;
319
325
  const PADDING = 5;
@@ -354,8 +354,10 @@ export class NetworkPanel extends UI.Panel.Panel implements
354
354
  this.networkLogLargeRowsSetting.addChangeListener(this.toggleLargerRequests, this);
355
355
  this.networkRecordFilmStripSetting.addChangeListener(this.toggleRecordFilmStrip, this);
356
356
 
357
- this.preserveLogSetting = Common.Settings.Settings.instance().moduleSetting('network-log.preserve-log');
358
- this.recordLogSetting = Common.Settings.Settings.instance().moduleSetting('network-log.record-log');
357
+ this.preserveLogSetting =
358
+ Common.Settings.Settings.instance().resolve(SDK.SDKSettings.preserveNetworkLogSettingDescriptor);
359
+ this.recordLogSetting =
360
+ Common.Settings.Settings.instance().resolve(Logs.NetworkLog.recordNetworkLogSettingDescriptor);
359
361
  this.recordLogSetting.addChangeListener(({data}) => this.toggleRecord(data));
360
362
 
361
363
  this.throttlingSelect = this.createThrottlingConditionsSelect();
@@ -98,7 +98,7 @@ export class NetworkWaterfallColumn extends UI.Widget.VBox {
98
98
  this.textLayers = [];
99
99
  }
100
100
 
101
- private static buildRequestTimeRangeStyle(): Map<NetworkTimeCalculator.RequestTimeRangeNames, LayerStyle> {
101
+ static buildRequestTimeRangeStyle(): Map<NetworkTimeCalculator.RequestTimeRangeNames, LayerStyle> {
102
102
  const styleMap = new Map<NetworkTimeCalculator.RequestTimeRangeNames, LayerStyle>();
103
103
  styleMap.set(
104
104
  NetworkTimeCalculator.RequestTimeRangeNames.CONNECTING,
@@ -142,6 +142,13 @@ export class NetworkWaterfallColumn extends UI.Widget.VBox {
142
142
  styleMap.set(NetworkTimeCalculator.RequestTimeRangeNames.SERVICE_WORKER_RESPOND_WITH, {
143
143
  fillStyle: RequestTimeRangeNameToColor[NetworkTimeCalculator.RequestTimeRangeNames.SERVICE_WORKER_RESPOND_WITH],
144
144
  });
145
+ styleMap.set(NetworkTimeCalculator.RequestTimeRangeNames.SERVICE_WORKER_ROUTER_EVALUATION, {
146
+ fillStyle:
147
+ RequestTimeRangeNameToColor[NetworkTimeCalculator.RequestTimeRangeNames.SERVICE_WORKER_ROUTER_EVALUATION],
148
+ });
149
+ styleMap.set(NetworkTimeCalculator.RequestTimeRangeNames.SERVICE_WORKER_CACHE_LOOKUP, {
150
+ fillStyle: RequestTimeRangeNameToColor[NetworkTimeCalculator.RequestTimeRangeNames.SERVICE_WORKER_CACHE_LOOKUP],
151
+ });
145
152
  return styleMap;
146
153
  }
147
154
 
@@ -610,8 +617,14 @@ export class NetworkWaterfallColumn extends UI.Widget.VBox {
610
617
  continue;
611
618
  }
612
619
 
613
- const style = (this.styleForTimeRangeName.get(range.name) as LayerStyle);
614
- const path = (this.pathForStyle.get(style) as Path2D);
620
+ const style = this.styleForTimeRangeName.get(range.name);
621
+ if (!style) {
622
+ continue;
623
+ }
624
+ const path = this.pathForStyle.get(style);
625
+ if (!path) {
626
+ continue;
627
+ }
615
628
  const lineWidth = style.lineWidth || 0;
616
629
  const height = this.getBarHeight(range.name);
617
630
  const middleBarY = y + Math.floor(this.rowHeight / 2 - height / 2) + lineWidth / 2;
@@ -290,7 +290,7 @@ export class RequestHeadersView extends UI.Widget.Widget {
290
290
  this.#workspace.addEventListener(
291
291
  Workspace.Workspace.Events.UISourceCodeRemoved, this.#uiSourceCodeAddedOrRemoved, this);
292
292
  Common.Settings.Settings.instance()
293
- .moduleSetting('persistence-network-overrides-enabled')
293
+ .resolve(Persistence.NetworkPersistenceManager.persistenceNetworkOverridesEnabledSettingDescriptor)
294
294
  .addChangeListener(this.requestUpdate, this);
295
295
  }
296
296
 
@@ -319,7 +319,7 @@ export class RequestHeadersView extends UI.Widget.Widget {
319
319
  this.#workspace.removeEventListener(
320
320
  Workspace.Workspace.Events.UISourceCodeRemoved, this.#uiSourceCodeAddedOrRemoved, this);
321
321
  Common.Settings.Settings.instance()
322
- .moduleSetting('persistence-network-overrides-enabled')
322
+ .resolve(Persistence.NetworkPersistenceManager.persistenceNetworkOverridesEnabledSettingDescriptor)
323
323
  .removeChangeListener(this.requestUpdate, this);
324
324
  }
325
325
 
@@ -395,8 +395,8 @@ function renderHeaderOverridesLink(input: ViewInput): Lit.LitTemplate {
395
395
  event.preventDefault();
396
396
  input.revealHeadersFile?.();
397
397
  };
398
- const overridesSetting: Common.Settings.Setting<boolean> =
399
- Common.Settings.Settings.instance().moduleSetting('persistence-network-overrides-enabled');
398
+ const overridesSetting: Common.Settings.Setting<boolean> = Common.Settings.Settings.instance().resolve(
399
+ Persistence.NetworkPersistenceManager.persistenceNetworkOverridesEnabledSettingDescriptor);
400
400
  // Disabled until https://crbug.com/1079231 is fixed.
401
401
  // clang-format off
402
402
  const fileIcon = html`
@@ -7,7 +7,6 @@ import * as Common from '../../../core/common/common.js';
7
7
  import * as Host from '../../../core/host/host.js';
8
8
  import * as i18n from '../../../core/i18n/i18n.js';
9
9
  import * as Platform from '../../../core/platform/platform.js';
10
- import type {NameValue} from '../../../core/sdk/NetworkRequest.js';
11
10
  import type * as SDK from '../../../core/sdk/sdk.js';
12
11
  import * as TextUtils from '../../../core/text_utils/text_utils.js';
13
12
  import * as Protocol from '../../../generated/protocol.js';
@@ -91,7 +90,7 @@ class ResponseHeaderSectionBase extends HTMLElement {
91
90
  protected readonly shadow = this.attachShadow({mode: 'open'});
92
91
  protected headerDetails: HeaderDetailsDescriptor[] = [];
93
92
 
94
- protected setHeaders(headers: NameValue[]): void {
93
+ protected setHeaders(headers: SDK.NetworkRequest.NameValue[]): void {
95
94
  headers.sort(function(a, b) {
96
95
  return Platform.StringUtilities.compare(a.name.toLowerCase(), b.name.toLowerCase());
97
96
  });
@@ -281,7 +280,9 @@ export class ResponseHeaderSection extends ResponseHeaderSectionBase {
281
280
  if (!this.#overrides.every(Persistence.NetworkPersistenceManager.isHeaderOverride)) {
282
281
  throw new Error('Type mismatch after parsing');
283
282
  }
284
- if (Common.Settings.Settings.instance().moduleSetting('persistence-network-overrides-enabled').get() &&
283
+ if (Common.Settings.Settings.instance()
284
+ .resolve(Persistence.NetworkPersistenceManager.persistenceNetworkOverridesEnabledSettingDescriptor)
285
+ .get() &&
285
286
  this.#isEditingAllowed === EditingAllowedStatus.DISABLED) {
286
287
  this.#isEditingAllowed = EditingAllowedStatus.ENABLED;
287
288
  }
@@ -566,7 +567,9 @@ export class ResponseHeaderSection extends ResponseHeaderSectionBase {
566
567
  const requestUrl = this.#request.url();
567
568
  const networkPersistenceManager = Persistence.NetworkPersistenceManager.NetworkPersistenceManager.instance();
568
569
  if (networkPersistenceManager.project()) {
569
- Common.Settings.Settings.instance().moduleSetting('persistence-network-overrides-enabled').set(true);
570
+ Common.Settings.Settings.instance()
571
+ .resolve(Persistence.NetworkPersistenceManager.persistenceNetworkOverridesEnabledSettingDescriptor)
572
+ .set(true);
570
573
  await networkPersistenceManager.getOrCreateHeadersUISourceCodeFromUrl(requestUrl);
571
574
  } else { // If folder for local overrides has not been provided yet
572
575
  UI.InspectorView.InspectorView.instance().displaySelectOverrideFolderInfobar(async () => {
@@ -7,6 +7,7 @@ import * as i18n from '../../core/i18n/i18n.js';
7
7
  import type * as Platform from '../../core/platform/platform.js';
8
8
  import * as Root from '../../core/root/root.js';
9
9
  import * as SDK from '../../core/sdk/sdk.js';
10
+ import * as Logs from '../../models/logs/logs.js';
10
11
  import * as Workspace from '../../models/workspace/workspace.js';
11
12
  import * as PanelCommon from '../../panels/common/common.js';
12
13
  import * as UI from '../../ui/legacy/legacy.js';
@@ -16,6 +17,42 @@ import * as NetworkForward from './forward/forward.js';
16
17
  import type * as Network from './network.js';
17
18
 
18
19
  const UIStrings = {
20
+ /**
21
+ * @description Text to keep the log after refreshing.
22
+ */
23
+ keepLog: 'Keep log',
24
+ /**
25
+ * @description A term that can be used to search in the command menu, and will find the search
26
+ * result 'Keep log on page reload / navigation'. This is an additional search term to help
27
+ * the user find the setting even when they don't know the exact name of it.
28
+ */
29
+ keep: 'keep',
30
+ /**
31
+ * @description A term that can be used to search in the command menu, and will find the search
32
+ * result 'Keep log on page reload / navigation'. This is an additional search term to help
33
+ * the user find the setting even when they don't know the exact name of it.
34
+ */
35
+ preserve: 'preserve',
36
+ /**
37
+ * @description A term that can be used to search in the command menu, and will find the search
38
+ * result 'Keep log on page reload / navigation'. This is an additional search term to help
39
+ * the user find the setting even when they don't know the exact name of it.
40
+ */
41
+ clearTag: 'clear',
42
+ /**
43
+ * @description A term that can be used to search in the command menu, and will find the search
44
+ * result 'Keep log on page reload / navigation'. This is an additional search term to help
45
+ * the user find the setting even when they don't know the exact name of it.
46
+ */
47
+ reset: 'reset',
48
+ /**
49
+ * @description Title of a setting under the Network category that can be invoked through the Command Menu.
50
+ */
51
+ keepLogOnPageReload: 'Keep log on page reload / navigation',
52
+ /**
53
+ * @description Title of a setting under the Network category that can be invoked through the Command Menu.
54
+ */
55
+ doNotKeepLogOnPageReload: 'Don’t keep log on page reload / navigation',
19
56
  /**
20
57
  * @description Title of a setting under the Network category that can be invoked through the Command Menu.
21
58
  */
@@ -488,6 +525,32 @@ SettingsUI.SettingUIRegistration.register(SDK.SDKSettings.cacheDisabledSettingDe
488
525
  },
489
526
  });
490
527
 
528
+ SettingsUI.SettingUIRegistration.register(SDK.SDKSettings.preserveNetworkLogSettingDescriptor, {
529
+ category: Common.Settings.SettingCategory.NETWORK,
530
+ title: i18nLazyString(UIStrings.keepLog),
531
+ tags: [
532
+ i18nLazyString(UIStrings.keep),
533
+ i18nLazyString(UIStrings.preserve),
534
+ i18nLazyString(UIStrings.clearTag),
535
+ i18nLazyString(UIStrings.reset),
536
+ ],
537
+ options: [
538
+ {
539
+ value: true,
540
+ title: i18nLazyString(UIStrings.keepLogOnPageReload),
541
+ },
542
+ {
543
+ value: false,
544
+ title: i18nLazyString(UIStrings.doNotKeepLogOnPageReload),
545
+ },
546
+ ],
547
+ });
548
+
549
+ SettingsUI.SettingUIRegistration.register(Logs.NetworkLog.recordNetworkLogSettingDescriptor, {
550
+ category: Common.Settings.SettingCategory.NETWORK,
551
+ title: i18nLazyString(UIStrings.recordNetworkLog),
552
+ });
553
+
491
554
  UI.ViewManager.registerLocationResolver({
492
555
  name: UI.ViewManager.ViewLocationValues.NETWORK_SIDEBAR,
493
556
  category: UI.ViewManager.ViewLocationCategory.NETWORK,
@@ -86,8 +86,9 @@ const DEFAULT_VIEW: PerformanceMonitorView = (input, output, target) => {
86
86
  chartsInfo: input.chartsInfo,
87
87
  metrics: input.metrics,
88
88
  })} class=${classMap({suspended: input.suspended})}></devtools-widget>
89
- <div class="perfmon-chart-container ${classMap({suspended: input.suspended})}">
89
+ <div class="perfmon-chart-container ${classMap({suspended: input.suspended})}" jslog=${VisualLogging.section('perfmon-chart')}>
90
90
  <canvas tabindex="-1" aria-label=${i18nString(UIStrings.graphsDisplayingARealtimeViewOf)}
91
+ jslog=${VisualLogging.canvas('perfmon-canvas')}
91
92
  .width=${Math.round(input.width * window.devicePixelRatio)} .height=${input.height}
92
93
  style="height:${input.height / window.devicePixelRatio}px" ${ref(e => {
93
94
  if (e) {
@@ -26,7 +26,6 @@ import type * as Converters from './converters/converters.js';
26
26
  import type * as Extensions from './extensions/extensions.js';
27
27
  import {ExtensionView} from './ExtensionView.js';
28
28
  import * as Models from './models/models.js';
29
- import {PlayRecordingSpeed} from './models/RecordingPlayer.js';
30
29
  import * as Actions from './recorder-actions/recorder-actions.js';
31
30
  import recordingViewStyles from './recordingView.css.js';
32
31
  import {ReplaySection} from './ReplaySection.js';
@@ -174,7 +173,7 @@ export const enum TargetPanel {
174
173
 
175
174
  export interface PlayRecordingEvent {
176
175
  targetPanel: TargetPanel;
177
- speed: PlayRecordingSpeed;
176
+ speed: Models.RecordingPlayer.PlayRecordingSpeed;
178
177
  extension?: Extensions.ExtensionManager.Extension;
179
178
  }
180
179
 
@@ -769,8 +768,13 @@ interface ViewInput {
769
768
  getStepState: (step: Models.Schema.Step) => State;
770
769
  onAbortReplay: () => void;
771
770
  onMeasurePerformanceClick: (event: Event) => void;
772
- onTogglePlaying: (speed: PlayRecordingSpeed, extension?: Extensions.ExtensionManager.Extension) => void;
773
- onCodeFormatChange: (event: Menus.SelectMenu.SelectMenuItemSelectedEvent) => void;
771
+ onTogglePlaying: (
772
+ speed: Models.RecordingPlayer.PlayRecordingSpeed,
773
+ extension?: Extensions.ExtensionManager.Extension,
774
+ ) => void;
775
+ onCodeFormatChange: (
776
+ event: Menus.SelectMenu.SelectMenuItemSelectedEvent,
777
+ ) => void;
774
778
  onCopyStep: (step: Models.Schema.Step) => void;
775
779
  onEditTitleButtonClick: (event: Event) => void;
776
780
  onNetworkConditionsChange: (event: Event) => void;
@@ -781,8 +785,14 @@ interface ViewInput {
781
785
  onTimeoutInput: (event: Event) => void;
782
786
  onTitleBlur: (event: Event) => void;
783
787
  onTitleInputKeyDown: (event: KeyboardEvent) => void;
784
- onStepChanged?: (currentStep: Models.Schema.Step, newStep: Models.Schema.Step) => void;
785
- onAddStep?: (stepOrSection: Models.Schema.Step|Models.Section.Section, position: AddStepPosition) => void;
788
+ onStepChanged?: (
789
+ currentStep: Models.Schema.Step,
790
+ newStep: Models.Schema.Step,
791
+ ) => void;
792
+ onAddStep?: (
793
+ stepOrSection: Models.Schema.Step|Models.Section.Section,
794
+ position: AddStepPosition,
795
+ ) => void;
786
796
  onRemoveStep?: (step: Models.Schema.Step) => void;
787
797
  onAddBreakpoint?: (index: number) => void;
788
798
  onRemoveBreakpoint?: (index: number) => void;
@@ -935,72 +945,78 @@ export class RecordingView extends UI.Widget.Widget {
935
945
  ].find(converter => converter.getId() === this.#converterId) ??
936
946
  this.builtInConverters[0];
937
947
 
938
- this.#view({
939
- breakpointIndexes: this.breakpointIndexes,
940
- builtInConverters: this.builtInConverters,
941
- converterId: this.#converterId,
942
- converterName: converter?.getFormatName(),
943
- currentError: this.currentError ?? null,
944
- currentStep: this.currentStep ?? null,
945
- editorState: this.#editorState ?? null,
946
- extensionConverters: this.extensionConverters,
947
- extensionDescriptor: this.extensionDescriptor,
948
- isRecording: this.isRecording,
949
- isTitleInvalid: this.#isTitleInvalid,
950
- lastReplayResult: this.lastReplayResult ?? null,
951
- recorderSettings: this.#recorderSettings ?? null,
952
- recording: this.recording,
953
- recordingTogglingInProgress: this.recordingTogglingInProgress,
954
- replayAllowed: this.replayAllowed,
955
- replayExtensions: this.replayExtensions ?? [],
956
- replaySettingsExpanded: this.#replaySettingsExpanded,
957
- replayState: this.replayState,
958
- sections: this.sections,
959
- selectedStep: this.#selectedStep ?? null,
960
- settings: this.settings ?? null,
961
- showCodeView: this.#showCodeView,
962
-
963
- onAddAssertion: () => {
964
- this.onAddAssertion?.();
965
- },
966
- onRecordingFinished: () => {
967
- this.onRecordingFinished?.();
968
- },
969
- getSectionState: this.#getSectionState.bind(this),
970
- getStepState: this.#getStepState.bind(this),
971
- onAbortReplay: () => {
972
- this.onAbortReplay?.();
973
- },
974
- onMeasurePerformanceClick: this.#handleMeasurePerformanceClickEvent.bind(this),
975
- onTogglePlaying: (speed: PlayRecordingSpeed, extension?: Extensions.ExtensionManager.Extension) => {
976
- this.onPlayRecording?.({
977
- targetPanel: TargetPanel.DEFAULT,
978
- speed,
979
- extension,
980
- });
981
- },
982
- onStepChanged: (currentStep, newStep) => this.onStepChanged?.(currentStep, newStep),
983
- onAddStep: (stepOrSection, position) => this.onAddStep?.(stepOrSection, position),
984
- onRemoveStep: step => this.onRemoveStep?.(step),
985
- onAddBreakpoint: index => this.onAddBreakpoint?.(index),
986
- onRemoveBreakpoint: index => this.onRemoveBreakpoint?.(index),
987
- onAttributeRequested: send => this.onAttributeRequested?.(send),
988
- onCodeFormatChange: this.#onCodeFormatChange.bind(this),
989
- onCopyStep: this.#onCopyStepEvent.bind(this),
990
- onEditTitleButtonClick: this.#onEditTitleButtonClick.bind(this),
991
- onNetworkConditionsChange: this.#onNetworkConditionsChange.bind(this),
992
- onReplaySettingsKeydown: this.#onReplaySettingsKeydown.bind(this),
993
- onSelectMenuLabelClick: this.#onSelectMenuLabelClick.bind(this),
994
- onStepClick: this.#onStepClick.bind(this),
995
- onStepHover: this.#onStepHover.bind(this),
996
- onTimeoutInput: this.#onTimeoutInput.bind(this),
997
- onTitleBlur: this.#onTitleBlur.bind(this),
998
- onTitleInputKeyDown: this.#onTitleInputKeyDown.bind(this),
999
- onToggleReplaySettings: this.#onToggleReplaySettings.bind(this),
1000
- onWrapperClick: this.#onWrapperClick.bind(this),
1001
- showCodeToggle: this.showCodeToggle.bind(this),
1002
- },
1003
- this.#viewOutput, this.contentElement);
948
+ this.#view(
949
+ {
950
+ breakpointIndexes: this.breakpointIndexes,
951
+ builtInConverters: this.builtInConverters,
952
+ converterId: this.#converterId,
953
+ converterName: converter?.getFormatName(),
954
+ currentError: this.currentError ?? null,
955
+ currentStep: this.currentStep ?? null,
956
+ editorState: this.#editorState ?? null,
957
+ extensionConverters: this.extensionConverters,
958
+ extensionDescriptor: this.extensionDescriptor,
959
+ isRecording: this.isRecording,
960
+ isTitleInvalid: this.#isTitleInvalid,
961
+ lastReplayResult: this.lastReplayResult ?? null,
962
+ recorderSettings: this.#recorderSettings ?? null,
963
+ recording: this.recording,
964
+ recordingTogglingInProgress: this.recordingTogglingInProgress,
965
+ replayAllowed: this.replayAllowed,
966
+ replayExtensions: this.replayExtensions ?? [],
967
+ replaySettingsExpanded: this.#replaySettingsExpanded,
968
+ replayState: this.replayState,
969
+ sections: this.sections,
970
+ selectedStep: this.#selectedStep ?? null,
971
+ settings: this.settings ?? null,
972
+ showCodeView: this.#showCodeView,
973
+
974
+ onAddAssertion: () => {
975
+ this.onAddAssertion?.();
976
+ },
977
+ onRecordingFinished: () => {
978
+ this.onRecordingFinished?.();
979
+ },
980
+ getSectionState: this.#getSectionState.bind(this),
981
+ getStepState: this.#getStepState.bind(this),
982
+ onAbortReplay: () => {
983
+ this.onAbortReplay?.();
984
+ },
985
+ onMeasurePerformanceClick: this.#handleMeasurePerformanceClickEvent.bind(this),
986
+ onTogglePlaying: (
987
+ speed: Models.RecordingPlayer.PlayRecordingSpeed,
988
+ extension?: Extensions.ExtensionManager.Extension,
989
+ ) => {
990
+ this.onPlayRecording?.({
991
+ targetPanel: TargetPanel.DEFAULT,
992
+ speed,
993
+ extension,
994
+ });
995
+ },
996
+ onStepChanged: (currentStep, newStep) => this.onStepChanged?.(currentStep, newStep),
997
+ onAddStep: (stepOrSection, position) => this.onAddStep?.(stepOrSection, position),
998
+ onRemoveStep: step => this.onRemoveStep?.(step),
999
+ onAddBreakpoint: index => this.onAddBreakpoint?.(index),
1000
+ onRemoveBreakpoint: index => this.onRemoveBreakpoint?.(index),
1001
+ onAttributeRequested: send => this.onAttributeRequested?.(send),
1002
+ onCodeFormatChange: this.#onCodeFormatChange.bind(this),
1003
+ onCopyStep: this.#onCopyStepEvent.bind(this),
1004
+ onEditTitleButtonClick: this.#onEditTitleButtonClick.bind(this),
1005
+ onNetworkConditionsChange: this.#onNetworkConditionsChange.bind(this),
1006
+ onReplaySettingsKeydown: this.#onReplaySettingsKeydown.bind(this),
1007
+ onSelectMenuLabelClick: this.#onSelectMenuLabelClick.bind(this),
1008
+ onStepClick: this.#onStepClick.bind(this),
1009
+ onStepHover: this.#onStepHover.bind(this),
1010
+ onTimeoutInput: this.#onTimeoutInput.bind(this),
1011
+ onTitleBlur: this.#onTitleBlur.bind(this),
1012
+ onTitleInputKeyDown: this.#onTitleInputKeyDown.bind(this),
1013
+ onToggleReplaySettings: this.#onToggleReplaySettings.bind(this),
1014
+ onWrapperClick: this.#onWrapperClick.bind(this),
1015
+ showCodeToggle: this.showCodeToggle.bind(this),
1016
+ },
1017
+ this.#viewOutput,
1018
+ this.contentElement,
1019
+ );
1004
1020
  }
1005
1021
 
1006
1022
  override wasShown(): void {
@@ -1217,7 +1233,7 @@ export class RecordingView extends UI.Widget.Widget {
1217
1233
 
1218
1234
  this.onPlayRecording?.({
1219
1235
  targetPanel: TargetPanel.PERFORMANCE_PANEL,
1220
- speed: PlayRecordingSpeed.NORMAL,
1236
+ speed: Models.RecordingPlayer.PlayRecordingSpeed.NORMAL,
1221
1237
  });
1222
1238
  }
1223
1239