chrome-devtools-frontend 1.0.1587905 → 1.0.1589336

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 (151) hide show
  1. package/docs/ui_engineering.md +2 -2
  2. package/front_end/core/common/AppProvider.ts +1 -2
  3. package/front_end/core/common/Color.ts +19 -20
  4. package/front_end/core/common/ParsedURL.ts +3 -3
  5. package/front_end/core/common/Progress.ts +5 -5
  6. package/front_end/core/common/Settings.ts +2 -2
  7. package/front_end/core/dom_extension/DOMExtension.ts +1 -1
  8. package/front_end/core/host/InspectorFrontendHostAPI.ts +1 -1
  9. package/front_end/core/host/InspectorFrontendHostStub.ts +1 -11
  10. package/front_end/core/host/UserMetrics.ts +1 -1
  11. package/front_end/core/protocol_client/DevToolsCDPConnection.ts +2 -2
  12. package/front_end/core/sdk/CSSMatchedStyles.ts +1 -1
  13. package/front_end/core/sdk/CSSProperty.ts +38 -0
  14. package/front_end/core/sdk/CSSRule.ts +4 -9
  15. package/front_end/core/sdk/ChildTargetManager.ts +1 -1
  16. package/front_end/core/sdk/CookieModel.ts +0 -1
  17. package/front_end/core/sdk/DOMModel.ts +42 -6
  18. package/front_end/core/sdk/EmulationModel.ts +3 -3
  19. package/front_end/core/sdk/NetworkRequest.ts +1 -1
  20. package/front_end/core/sdk/PageResourceLoader.ts +11 -6
  21. package/front_end/core/sdk/PerformanceMetricsModel.ts +2 -2
  22. package/front_end/core/sdk/PreloadingModel.ts +15 -6
  23. package/front_end/core/sdk/ResourceTreeModel.ts +2 -6
  24. package/front_end/core/sdk/SourceMap.ts +2 -3
  25. package/front_end/core/sdk/SourceMapManager.ts +1 -2
  26. package/front_end/entrypoint_template.html +1 -1
  27. package/front_end/entrypoints/formatter_worker/CSSFormatter.ts +6 -16
  28. package/front_end/entrypoints/heap_snapshot_worker/HeapSnapshotWorkerDispatcher.ts +4 -2
  29. package/front_end/entrypoints/main/main-meta.ts +0 -3
  30. package/front_end/entrypoints/node_app/app/NodeConnectionsPanel.ts +0 -2
  31. package/front_end/generated/InspectorBackendCommands.ts +6 -4
  32. package/front_end/generated/SupportedCSSProperties.js +46 -0
  33. package/front_end/generated/protocol-mapping.d.ts +4 -0
  34. package/front_end/generated/protocol-proxy-api.d.ts +5 -0
  35. package/front_end/generated/protocol.ts +50 -0
  36. package/front_end/models/ai_assistance/AiConversation.ts +20 -0
  37. package/front_end/models/ai_assistance/agents/AiAgent.ts +7 -1
  38. package/front_end/models/ai_assistance/agents/ContextSelectionAgent.snapshot.txt +2 -2
  39. package/front_end/models/ai_assistance/agents/ContextSelectionAgent.ts +28 -26
  40. package/front_end/models/bindings/DebuggerLanguagePlugins.ts +3 -5
  41. package/front_end/models/computed_style/ComputedStyleModel.ts +2 -1
  42. package/front_end/models/emulation/DeviceModeModel.ts +0 -3
  43. package/front_end/models/emulation/EmulatedDevices.ts +0 -2
  44. package/front_end/models/extensions/ExtensionAPI.ts +2 -2
  45. package/front_end/models/har/Importer.ts +0 -1
  46. package/front_end/models/har/Log.ts +2 -11
  47. package/front_end/models/javascript_metadata/NativeFunctions.js +5 -21
  48. package/front_end/models/logs/NetworkLog.ts +0 -2
  49. package/front_end/models/network_time_calculator/NetworkTimeCalculator.ts +4 -1
  50. package/front_end/models/text_utils/TextUtils.ts +0 -9
  51. package/front_end/models/trace/LanternComputationData.ts +1 -6
  52. package/front_end/models/trace/helpers/Trace.ts +1 -4
  53. package/front_end/models/trace/lantern/types/Lantern.ts +6 -6
  54. package/front_end/panels/accessibility/AccessibilityNodeView.ts +7 -6
  55. package/front_end/panels/ai_assistance/AiAssistancePanel.ts +15 -26
  56. package/front_end/panels/application/BackgroundServiceView.ts +0 -2
  57. package/front_end/panels/application/DeviceBoundSessionsModel.ts +0 -1
  58. package/front_end/panels/application/IndexedDBViews.ts +19 -23
  59. package/front_end/panels/application/OriginTrialTreeView.ts +3 -3
  60. package/front_end/panels/application/components/BackForwardCacheView.ts +1 -1
  61. package/front_end/panels/application/preloading/PreloadingView.ts +18 -0
  62. package/front_end/panels/application/preloading/components/RuleSetDetailsView.css +12 -0
  63. package/front_end/panels/application/preloading/components/RuleSetDetailsView.ts +3 -3
  64. package/front_end/panels/browser_debugger/CategorizedBreakpointsSidebarPane.ts +3 -4
  65. package/front_end/panels/common/AiCodeGenerationTeaser.ts +76 -19
  66. package/front_end/panels/common/aiCodeGenerationTeaser.css +11 -0
  67. package/front_end/panels/console/ConsoleSidebar.ts +1 -1
  68. package/front_end/panels/console/ConsoleView.ts +4 -0
  69. package/front_end/panels/console/ConsoleViewMessage.ts +3 -3
  70. package/front_end/panels/elements/ColorSwatchPopoverIcon.ts +1 -1
  71. package/front_end/panels/elements/ComputedStyleWidget.ts +32 -32
  72. package/front_end/panels/elements/ElementsPanel.ts +12 -4
  73. package/front_end/panels/elements/ElementsTreeElement.ts +9 -1
  74. package/front_end/panels/elements/ImagePreviewPopover.ts +0 -2
  75. package/front_end/panels/elements/MarkerDecorator.ts +0 -2
  76. package/front_end/panels/elements/PropertiesWidget.ts +62 -61
  77. package/front_end/panels/elements/StylePropertiesSection.ts +32 -3
  78. package/front_end/panels/elements/StylePropertyTreeElement.ts +15 -20
  79. package/front_end/panels/elements/StylesSidebarPane.ts +25 -90
  80. package/front_end/panels/elements/elementsPanel.css +6 -2
  81. package/front_end/panels/emulation/emulation-meta.ts +0 -2
  82. package/front_end/panels/event_listeners/EventListenersUtils.ts +0 -1
  83. package/front_end/panels/lighthouse/LighthouseController.ts +0 -5
  84. package/front_end/panels/linear_memory_inspector/linear_memory_inspector-meta.ts +1 -3
  85. package/front_end/panels/media/EventDisplayTable.ts +0 -2
  86. package/front_end/panels/media/PlayerMessagesView.ts +4 -6
  87. package/front_end/panels/mobile_throttling/ThrottlingSettingsTab.ts +18 -6
  88. package/front_end/panels/network/EventSourceMessagesView.ts +0 -2
  89. package/front_end/panels/network/NetworkLogViewColumns.ts +0 -2
  90. package/front_end/panels/network/NetworkManageCustomHeadersView.ts +3 -1
  91. package/front_end/panels/network/NetworkWaterfallColumn.ts +1 -2
  92. package/front_end/panels/network/RequestConditionsDrawer.ts +2 -2
  93. package/front_end/panels/network/RequestHeadersView.ts +113 -128
  94. package/front_end/panels/network/RequestInitiatorView.ts +74 -69
  95. package/front_end/panels/network/RequestPayloadView.ts +6 -3
  96. package/front_end/panels/network/ResourceChunkView.ts +0 -2
  97. package/front_end/panels/network/components/ResponseHeaderSection.ts +3 -1
  98. package/front_end/panels/network/network-meta.ts +0 -2
  99. package/front_end/panels/performance_monitor/PerformanceMonitor.ts +1 -9
  100. package/front_end/panels/profiler/HeapDetachedElementsDataGrid.ts +0 -2
  101. package/front_end/panels/profiler/LiveHeapProfileView.ts +0 -12
  102. package/front_end/panels/profiler/ProfileFlameChartDataProvider.ts +14 -1
  103. package/front_end/panels/profiler/ProfileView.ts +0 -35
  104. package/front_end/panels/profiler/profiler-meta.ts +0 -1
  105. package/front_end/panels/recorder/components/StepView.ts +0 -1
  106. package/front_end/panels/screencast/ScreencastView.ts +2 -2
  107. package/front_end/panels/search/SearchResultsPane.ts +3 -2
  108. package/front_end/panels/security/SecurityPanel.ts +0 -1
  109. package/front_end/panels/sensors/LocationsSettingsTab.ts +27 -9
  110. package/front_end/panels/settings/FrameworkIgnoreListSettingsTab.ts +1 -1
  111. package/front_end/panels/settings/SettingsScreen.ts +1 -2
  112. package/front_end/panels/settings/emulation/DevicesSettingsTab.ts +2 -2
  113. package/front_end/panels/settings/emulation/utils/UserAgentMetadata.ts +1 -1
  114. package/front_end/panels/settings/settings-meta.ts +0 -3
  115. package/front_end/panels/sources/AiCodeCompletionPlugin.ts +6 -0
  116. package/front_end/panels/sources/CSSPlugin.ts +1 -1
  117. package/front_end/panels/sources/DebuggerPlugin.ts +1 -5
  118. package/front_end/panels/sources/sources-meta.ts +0 -9
  119. package/front_end/panels/timeline/CompatibilityTracksAppender.ts +1 -1
  120. package/front_end/panels/timeline/ThirdPartyTreeView.ts +5 -2
  121. package/front_end/panels/timeline/TimelinePanel.ts +0 -7
  122. package/front_end/panels/timeline/TimelineTreeView.ts +8 -10
  123. package/front_end/panels/timeline/TimelineUIUtils.ts +11 -3
  124. package/front_end/panels/timeline/components/IgnoreListSetting.ts +1 -1
  125. package/front_end/panels/timeline/components/NetworkRequestDetails.ts +0 -1
  126. package/front_end/panels/timeline/utils/Treemap.ts +0 -4
  127. package/front_end/panels/whats_new/whats_new-meta.ts +0 -2
  128. package/front_end/third_party/chromium/README.chromium +1 -1
  129. package/front_end/ui/components/highlighting/HighlightManager.ts +1 -2
  130. package/front_end/ui/components/highlighting/MarkupHighlight.ts +1 -12
  131. package/front_end/ui/components/icon_button/IconButton.ts +2 -2
  132. package/front_end/ui/components/issue_counter/IssueCounter.ts +6 -6
  133. package/front_end/ui/components/text_editor/AiCodeCompletionProvider.ts +4 -0
  134. package/front_end/ui/components/text_editor/AiCodeGenerationProvider.ts +11 -6
  135. package/front_end/ui/legacy/ContextMenu.ts +1 -17
  136. package/front_end/ui/legacy/EmptyWidget.ts +4 -4
  137. package/front_end/ui/legacy/Fragment.ts +2 -4
  138. package/front_end/ui/legacy/SoftContextMenu.ts +1 -15
  139. package/front_end/ui/legacy/TabbedPane.ts +2 -2
  140. package/front_end/ui/legacy/Treeoutline.ts +16 -9
  141. package/front_end/ui/legacy/UIUtils.ts +1 -4
  142. package/front_end/ui/legacy/components/color_picker/Spectrum.ts +6 -3
  143. package/front_end/ui/legacy/components/inline_editor/ColorSwatch.ts +32 -28
  144. package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +31 -6
  145. package/front_end/ui/legacy/components/quick_open/CommandMenu.ts +0 -2
  146. package/front_end/ui/legacy/components/quick_open/HelpQuickOpen.ts +0 -1
  147. package/front_end/ui/legacy/components/quick_open/quick_open-meta.ts +0 -2
  148. package/front_end/ui/legacy/components/source_frame/XMLView.ts +3 -2
  149. package/front_end/ui/legacy/components/utils/ImagePreview.ts +3 -3
  150. package/front_end/ui/visual_logging/KnownContextValues.ts +8 -0
  151. package/package.json +1 -1
@@ -760,7 +760,6 @@ export const RuntimeSettings: RuntimeSetting[] = [
760
760
  value: 'desktop'
761
761
  },
762
762
  ],
763
- learnMore: undefined,
764
763
  },
765
764
  {
766
765
  setting: Common.Settings.Settings.instance().createSetting(
@@ -820,8 +819,6 @@ export const RuntimeSettings: RuntimeSetting[] = [
820
819
  setFlags: (flags: Flags, value: string|boolean) => {
821
820
  flags.disableStorageReset = !value;
822
821
  },
823
- options: undefined,
824
- learnMore: undefined,
825
822
  },
826
823
  {
827
824
  setting: Common.Settings.Settings.instance().createSetting(
@@ -835,8 +832,6 @@ export const RuntimeSettings: RuntimeSetting[] = [
835
832
  flags.additionalTraceCategories = '';
836
833
  }
837
834
  },
838
- options: undefined,
839
- learnMore: undefined,
840
835
  },
841
836
  ];
842
837
 
@@ -20,8 +20,7 @@ const UIStrings = {
20
20
  */
21
21
  showMemoryInspector: 'Show Memory inspector',
22
22
  } as const;
23
- const str_ =
24
- i18n.i18n.registerUIStrings('panels/linear_memory_inspector/linear_memory_inspector-meta.ts', UIStrings);
23
+ const str_ = i18n.i18n.registerUIStrings('panels/linear_memory_inspector/linear_memory_inspector-meta.ts', UIStrings);
25
24
  const i18nLazyString = i18n.i18n.getLazilyComputedLocalizedString.bind(undefined, str_);
26
25
 
27
26
  let loadedLinearMemoryInspectorModule: (typeof LinearMemoryInspector|undefined);
@@ -51,7 +50,6 @@ UI.ContextMenu.registerProvider({
51
50
  const LinearMemoryInspector = await loadLinearMemoryInspectorModule();
52
51
  return LinearMemoryInspector.LinearMemoryInspectorController.LinearMemoryInspectorController.instance();
53
52
  },
54
- experiment: undefined,
55
53
  contextTypes() {
56
54
  return [
57
55
  ObjectUI.ObjectPropertiesSection.ObjectPropertyTreeElement,
@@ -116,8 +116,6 @@ export class PlayerEventsView extends UI.Widget.VBox {
116
116
  const datagrid = new DataGrid.DataGrid.DataGridImpl({
117
117
  displayName: i18nString(UIStrings.eventDisplay),
118
118
  columns: gridColumnDescs,
119
- deleteCallback: undefined,
120
- refreshCallback: undefined,
121
119
  });
122
120
  datagrid.asWidget().contentElement.classList.add('no-border-top-datagrid');
123
121
  return datagrid;
@@ -134,7 +134,7 @@ class MessageLevelSelector implements UI.SoftDropDown.Delegate<SelectableLevel>
134
134
  overwrite: true,
135
135
  stringValue: '',
136
136
  value: MessageLevelBitfield.DEFAULT,
137
- selectable: undefined,
137
+
138
138
  });
139
139
 
140
140
  this.items.insert(this.items.length, {
@@ -142,7 +142,7 @@ class MessageLevelSelector implements UI.SoftDropDown.Delegate<SelectableLevel>
142
142
  overwrite: true,
143
143
  stringValue: '',
144
144
  value: MessageLevelBitfield.ALL,
145
- selectable: undefined,
145
+
146
146
  });
147
147
 
148
148
  this.items.insert(this.items.length, {
@@ -150,7 +150,7 @@ class MessageLevelSelector implements UI.SoftDropDown.Delegate<SelectableLevel>
150
150
  overwrite: false,
151
151
  stringValue: 'error',
152
152
  value: MessageLevelBitfield.ERROR,
153
- selectable: undefined,
153
+
154
154
  });
155
155
 
156
156
  this.items.insert(this.items.length, {
@@ -158,7 +158,6 @@ class MessageLevelSelector implements UI.SoftDropDown.Delegate<SelectableLevel>
158
158
  overwrite: false,
159
159
  stringValue: 'warning',
160
160
  value: MessageLevelBitfield.WARNING,
161
- selectable: undefined,
162
161
  });
163
162
 
164
163
  this.items.insert(this.items.length, {
@@ -166,7 +165,6 @@ class MessageLevelSelector implements UI.SoftDropDown.Delegate<SelectableLevel>
166
165
  overwrite: false,
167
166
  stringValue: 'info',
168
167
  value: MessageLevelBitfield.INFO,
169
- selectable: undefined,
170
168
  });
171
169
 
172
170
  this.items.insert(this.items.length, {
@@ -174,7 +172,7 @@ class MessageLevelSelector implements UI.SoftDropDown.Delegate<SelectableLevel>
174
172
  overwrite: false,
175
173
  stringValue: 'debug',
176
174
  value: MessageLevelBitfield.DEBUG,
177
- selectable: undefined,
175
+
178
176
  });
179
177
  }
180
178
 
@@ -735,7 +735,9 @@ export class ThrottlingSettingsTab extends UI.Widget.VBox implements
735
735
  const errorMessage = i18nString(UIStrings.profileNameCharactersLengthMust, {PH1: maxLength});
736
736
  return {valid, errorMessage};
737
737
  }
738
- return {valid, errorMessage: undefined};
738
+ return {
739
+ valid,
740
+ };
739
741
  }
740
742
 
741
743
  function throughputValidator(
@@ -753,7 +755,9 @@ export class ThrottlingSettingsTab extends UI.Widget.VBox implements
753
755
  {PH1: String(throughput), PH2: minThroughput, PH3: maxThroughput});
754
756
  return {valid, errorMessage};
755
757
  }
756
- return {valid, errorMessage: undefined};
758
+ return {
759
+ valid,
760
+ };
757
761
  }
758
762
 
759
763
  function latencyValidator(_item: SDK.NetworkManager.Conditions, _index: number, input: UI.ListWidget.EditorControl):
@@ -767,7 +771,9 @@ export class ThrottlingSettingsTab extends UI.Widget.VBox implements
767
771
  const errorMessage = i18nString(UIStrings.latencyMustBeAnIntegerBetweenSms, {PH1: minLatency, PH2: maxLatency});
768
772
  return {valid, errorMessage};
769
773
  }
770
- return {valid, errorMessage: undefined};
774
+ return {
775
+ valid,
776
+ };
771
777
  }
772
778
 
773
779
  function packetLossValidator(
@@ -783,7 +789,9 @@ export class ThrottlingSettingsTab extends UI.Widget.VBox implements
783
789
  i18nString(UIStrings.packetLossMustBeAnIntegerBetweenSpct, {PH1: minPacketLoss, PH2: maxPacketLoss});
784
790
  return {valid, errorMessage};
785
791
  }
786
- return {valid, errorMessage: undefined};
792
+ return {
793
+ valid,
794
+ };
787
795
  }
788
796
 
789
797
  function packetQueueLengthValidator(
@@ -797,13 +805,17 @@ export class ThrottlingSettingsTab extends UI.Widget.VBox implements
797
805
  const errorMessage = i18nString(UIStrings.packetQueueLengthMustBeAnIntegerGreaterOrEqualToZero);
798
806
  return {valid, errorMessage};
799
807
  }
800
- return {valid, errorMessage: undefined};
808
+ return {
809
+ valid,
810
+ };
801
811
  }
802
812
 
803
813
  function packetReorderingValidator(
804
814
  _item: SDK.NetworkManager.Conditions, _index: number,
805
815
  _input: UI.ListWidget.EditorControl): UI.ListWidget.ValidatorResult {
806
- return {valid: true, errorMessage: undefined};
816
+ return {
817
+ valid: true,
818
+ };
807
819
  }
808
820
  }
809
821
  }
@@ -96,8 +96,6 @@ export class EventSourceMessagesView extends UI.Widget.VBox {
96
96
  this.dataGrid = new DataGrid.SortableDataGrid.SortableDataGrid({
97
97
  displayName: i18nString(UIStrings.eventSource),
98
98
  columns,
99
- deleteCallback: undefined,
100
- refreshCallback: undefined,
101
99
  });
102
100
  this.dataGrid.setStriped(true);
103
101
  this.dataGrid.setEnableAutoScrollToBottom(true);
@@ -281,8 +281,6 @@ export class NetworkLogViewColumns {
281
281
  this.#dataGrid = new DataGrid.SortableDataGrid.SortableDataGrid<NetworkNode>(({
282
282
  displayName: (i18nString(UIStrings.networkLog) as string),
283
283
  columns: this.columns.map(NetworkLogViewColumns.convertToDataGridDescriptor),
284
- deleteCallback: undefined,
285
- refreshCallback: undefined,
286
284
  }));
287
285
  this.dataGridScroller = (this.#dataGrid.scrollContainer as HTMLDivElement);
288
286
 
@@ -162,7 +162,9 @@ export class NetworkManageCustomHeadersView extends UI.Widget.VBox implements UI
162
162
  if (this.columnConfigs.has(headerId) && item.header !== headerId) {
163
163
  valid = false;
164
164
  }
165
- return {valid, errorMessage: undefined};
165
+ return {
166
+ valid,
167
+ };
166
168
  }
167
169
  }
168
170
  }
@@ -91,7 +91,7 @@ export class NetworkWaterfallColumn extends UI.Widget.VBox {
91
91
  this.styleForDownloadingResourceType = resourceStyleTuple[1];
92
92
 
93
93
  const baseLineColor = ThemeSupport.ThemeSupport.instance().getComputedValue('--sys-color-state-disabled');
94
- this.wiskerStyle = {borderColor: baseLineColor, lineWidth: 1, fillStyle: undefined};
94
+ this.wiskerStyle = {borderColor: baseLineColor, lineWidth: 1};
95
95
  this.hoverDetailsStyle = {fillStyle: baseLineColor, lineWidth: 1, borderColor: baseLineColor};
96
96
 
97
97
  this.pathForStyle = new Map();
@@ -293,7 +293,6 @@ export class NetworkWaterfallColumn extends UI.Widget.VBox {
293
293
  content.show(popover.contentElement);
294
294
  return true;
295
295
  },
296
- hide: undefined,
297
296
  };
298
297
  }
299
298
 
@@ -524,7 +524,7 @@ export class RequestConditionsDrawer extends UI.Widget.VBox implements
524
524
  const validator =
525
525
  (_item: SDK.NetworkManager.RequestCondition, _index: number, input: UI.ListWidget.EditorControl): {
526
526
  valid: boolean,
527
- errorMessage: Common.UIString.LocalizedString|undefined,
527
+ errorMessage?: Common.UIString.LocalizedString,
528
528
  } => {
529
529
  if (!input.value) {
530
530
  return {errorMessage: i18nString(UIStrings.patternInputCannotBeEmpty), valid: false};
@@ -539,7 +539,7 @@ export class RequestConditionsDrawer extends UI.Widget.VBox implements
539
539
  case SDK.NetworkManager.RequestURLPatternValidity.HAS_REGEXP_GROUPS:
540
540
  return {errorMessage: i18nString(UIStrings.patternFailedWithRegExpGroups), valid: false};
541
541
  }
542
- return {valid: true, errorMessage: undefined};
542
+ return {valid: true};
543
543
  };
544
544
  const urlInput = editor.createInput('url', 'text', '', validator);
545
545
  label.htmlFor = urlInput.id = 'editor-url-input';
@@ -106,15 +106,118 @@ interface ViewInput {
106
106
  }
107
107
  type View = (input: ViewInput, output: object, target: HTMLElement) => void;
108
108
  export const DEFAULT_VIEW: View = (input, output, target) => {
109
+ const requestHeadersText = input.request.requestHeadersText();
110
+ const statusClasses = ['status'];
111
+ if (input.request.statusCode < 300 || input.request.statusCode === 304) {
112
+ statusClasses.push('green-circle');
113
+ } else if (input.request.statusCode < 400) {
114
+ statusClasses.push('yellow-circle');
115
+ } else {
116
+ statusClasses.push('red-circle');
117
+ }
118
+
119
+ let comment = '';
120
+ if (input.request.cachedInMemory()) {
121
+ comment = i18nString(UIStrings.fromMemoryCache);
122
+ } else if (input.request.fromEarlyHints()) {
123
+ comment = i18nString(UIStrings.fromEarlyHints);
124
+ } else if (input.request.fetchedViaServiceWorker) {
125
+ comment = i18nString(UIStrings.fromServiceWorker);
126
+ } else if (input.request.redirectSourceSignedExchangeInfoHasNoErrors()) {
127
+ comment = i18nString(UIStrings.fromSignedexchange);
128
+ } else if (input.request.fromPrefetchCache()) {
129
+ comment = i18nString(UIStrings.fromPrefetchCache);
130
+ } else if (input.request.cached()) {
131
+ comment = i18nString(UIStrings.fromDiskCache);
132
+ }
133
+
134
+ if (comment) {
135
+ statusClasses.push('status-with-comment');
136
+ }
137
+
138
+ const statusText = [input.request.statusCode, input.request.getInferredStatusText(), comment].join(' ');
139
+ // clang-format off
109
140
  render(
110
141
  html`
111
142
  <style>${NetworkComponents.RequestHeaderSection.requestHeadersViewStyles}</style>
112
143
  <style>${Input.checkboxStyles}</style>
113
- ${renderGeneralSection(input)}
114
- ${renderEarlyHintsHeaders(input)}
115
- ${renderResponseHeaders(input)}
116
- ${renderRequestHeaders(input)}
144
+ ${renderCategory({
145
+ name: 'general',
146
+ title: i18nString(UIStrings.general),
147
+ forceOpen: input.toReveal?.section === NetworkForward.UIRequestLocation.UIHeaderSection.GENERAL,
148
+ loggingContext: 'general',
149
+ contents: html`<div jslog=${VisualLogging.section('general')}>
150
+ ${renderGeneralRow(input, i18nString(UIStrings.requestUrl), input.request.url(), 'request-url')}
151
+ ${input.request.statusCode? renderGeneralRow(input, i18nString(UIStrings.requestMethod),
152
+ input.request.requestMethod, 'request-method') : Lit.nothing}
153
+ ${input.request.statusCode? renderGeneralRow(input, i18nString(UIStrings.statusCode),
154
+ statusText, 'status-code', statusClasses) : Lit.nothing}
155
+ ${input.request.remoteAddress()? renderGeneralRow(input, i18nString(UIStrings.remoteAddress),
156
+ input.request.remoteAddress(), 'remote-address') : Lit.nothing}
157
+ ${input.request.referrerPolicy()? renderGeneralRow(input, i18nString(UIStrings.referrerPolicy),
158
+ String(input.request.referrerPolicy()), 'referrer-policy') : Lit.nothing}
159
+ </div>`
160
+ })}
161
+ ${!input.request?.earlyHintsHeaders || input.request.earlyHintsHeaders.length === 0
162
+ ? Lit.nothing
163
+ : renderCategory({
164
+ name: 'early-hints-headers',
165
+ onToggleRawHeaders: input.toggleShowRawResponseHeaders,
166
+ title: i18nString(UIStrings.earlyHintsHeaders),
167
+ headerCount: input.request.earlyHintsHeaders.length,
168
+ checked: undefined,
169
+ additionalContent: undefined,
170
+ forceOpen: input.toReveal?.section === NetworkForward.UIRequestLocation.UIHeaderSection.EARLY_HINTS,
171
+ loggingContext: 'early-hints-headers',
172
+ contents: input.showResponseHeadersText ?
173
+ renderRawHeaders(input.request.responseHeadersText) :
174
+ html`
175
+ <devtools-early-hints-header-section .data=${
176
+ {
177
+ request: input.request,
178
+ toReveal: input.toReveal,
179
+ } as NetworkComponents.ResponseHeaderSection
180
+ .ResponseHeaderSectionData}></devtools-early-hints-header-section>
181
+ `
182
+ })}
183
+ ${renderCategory({
184
+ name: 'response-headers',
185
+ onToggleRawHeaders: input.toggleShowRawResponseHeaders,
186
+ title: i18nString(UIStrings.responseHeaders),
187
+ headerCount: input.request.sortedResponseHeaders.length,
188
+ checked: input.request.responseHeadersText ? input.showResponseHeadersText : undefined,
189
+ additionalContent: renderHeaderOverridesLink(input),
190
+ forceOpen: input.toReveal?.section === NetworkForward.UIRequestLocation.UIHeaderSection.RESPONSE,
191
+ loggingContext: 'response-headers',
192
+ contents: input.showResponseHeadersText ?
193
+ renderRawHeaders(input.request.responseHeadersText) :
194
+ html`
195
+ <devtools-response-header-section .data=${{
196
+ request: input.request,
197
+ toReveal: input.toReveal,
198
+ } as NetworkComponents.ResponseHeaderSection.ResponseHeaderSectionData} jslog=${
199
+ VisualLogging.section('response-headers')}></devtools-response-header-section>
200
+ `
201
+ })}
202
+ ${renderCategory({
203
+ name: 'request-headers',
204
+ onToggleRawHeaders: input.toggleShowRawRequestHeaders,
205
+ title: i18nString(UIStrings.requestHeaders),
206
+ headerCount: input.request.requestHeaders().length,
207
+ checked: requestHeadersText ? input.showRequestHeadersText : undefined,
208
+ forceOpen: input.toReveal?.section === NetworkForward.UIRequestLocation.UIHeaderSection.REQUEST,
209
+ loggingContext: 'request-headers',
210
+ contents: (input.showRequestHeadersText && requestHeadersText) ?
211
+ renderRawHeaders(requestHeadersText) :
212
+ html`
213
+ <devtools-widget .widgetConfig=${
214
+ UI.Widget.widgetConfig(NetworkComponents.RequestHeaderSection.RequestHeaderSection, {
215
+ request: input.request,
216
+ toReveal: input.toReveal,
217
+ })} jslog=${VisualLogging.section('request-headers')}></devtools-widget>`
218
+ })}
117
219
  `,
220
+ // clang-format on
118
221
  target);
119
222
  };
120
223
 
@@ -247,52 +350,6 @@ export class RequestHeadersView extends UI.Widget.Widget {
247
350
  }
248
351
  }
249
352
 
250
- function renderEarlyHintsHeaders(input: ViewInput): Lit.LitTemplate {
251
- if (!input.request?.earlyHintsHeaders || input.request.earlyHintsHeaders.length === 0) {
252
- return Lit.nothing;
253
- }
254
-
255
- // Disabled until https://crbug.com/1079231 is fixed.
256
- return renderCategory({
257
- onToggleRawHeaders: input.toggleShowRawResponseHeaders,
258
- name: 'early-hints-headers',
259
- title: i18nString(UIStrings.earlyHintsHeaders),
260
- headerCount: input.request.earlyHintsHeaders.length,
261
- checked: undefined,
262
- additionalContent: undefined,
263
- forceOpen: input.toReveal?.section === NetworkForward.UIRequestLocation.UIHeaderSection.EARLY_HINTS,
264
- loggingContext: 'early-hints-headers',
265
- contents: input.showResponseHeadersText ? renderRawHeaders(input.request.responseHeadersText) : html`
266
- <devtools-early-hints-header-section .data=${{
267
- request: input.request,
268
- toReveal: input.toReveal,
269
- } as NetworkComponents.ResponseHeaderSection.ResponseHeaderSectionData}></devtools-early-hints-header-section>
270
- `
271
- });
272
- }
273
-
274
- function renderResponseHeaders(input: ViewInput): Lit.LitTemplate {
275
- return renderCategory({
276
- onToggleRawHeaders: input.toggleShowRawResponseHeaders,
277
- name: 'response-headers',
278
- title: i18nString(UIStrings.responseHeaders),
279
- headerCount: input.request.sortedResponseHeaders.length,
280
- checked: input.request.responseHeadersText ? input.showResponseHeadersText : undefined,
281
- additionalContent: renderHeaderOverridesLink(input),
282
- forceOpen: input.toReveal?.section === NetworkForward.UIRequestLocation.UIHeaderSection.RESPONSE,
283
- loggingContext: 'response-headers',
284
- contents: input.showResponseHeadersText ?
285
- renderRawHeaders(input.request.responseHeadersText) :
286
- html`
287
- <devtools-response-header-section .data=${{
288
- request: input.request,
289
- toReveal: input.toReveal,
290
- } as NetworkComponents.ResponseHeaderSection.ResponseHeaderSectionData} jslog=${
291
- VisualLogging.section('response-headers')}></devtools-response-header-section>
292
- `
293
- });
294
- }
295
-
296
353
  function renderHeaderOverridesLink(input: ViewInput): Lit.LitTemplate {
297
354
  if (!input.revealHeadersFile) {
298
355
  return Lit.nothing;
@@ -334,88 +391,17 @@ function renderHeaderOverridesLink(input: ViewInput): Lit.LitTemplate {
334
391
  // clang-format on
335
392
  }
336
393
 
337
- function renderRequestHeaders(input: ViewInput): Lit.LitTemplate {
338
- const requestHeadersText = input.request.requestHeadersText();
339
-
340
- return renderCategory({
341
- onToggleRawHeaders: input.toggleShowRawRequestHeaders,
342
- name: 'request-headers',
343
- title: i18nString(UIStrings.requestHeaders),
344
- headerCount: input.request.requestHeaders().length,
345
- checked: requestHeadersText ? input.showRequestHeadersText : undefined,
346
- forceOpen: input.toReveal?.section === NetworkForward.UIRequestLocation.UIHeaderSection.REQUEST,
347
- loggingContext: 'request-headers',
348
- contents: (input.showRequestHeadersText && requestHeadersText) ?
349
- renderRawHeaders(requestHeadersText) :
350
- html`
351
- <devtools-widget .widgetConfig=${
352
- UI.Widget.widgetConfig(NetworkComponents.RequestHeaderSection.RequestHeaderSection, {
353
- request: input.request,
354
- toReveal: input.toReveal,
355
- })} jslog=${VisualLogging.section('request-headers')}></devtools-widget>`
356
- });
357
- }
358
-
359
394
  function renderRawHeaders(text: string): Lit.TemplateResult {
360
395
  return html`<div class="row raw-headers-row"><devtools-widget class=raw-headers .widgetConfig=${
361
396
  UI.Widget.widgetConfig(ShowMoreDetailsWidget, {text})}></devtools-widget></div>`;
362
397
  }
363
398
 
364
- function renderGeneralSection(input: ViewInput): Lit.LitTemplate {
365
- const statusClasses = ['status'];
366
- if (input.request.statusCode < 300 || input.request.statusCode === 304) {
367
- statusClasses.push('green-circle');
368
- } else if (input.request.statusCode < 400) {
369
- statusClasses.push('yellow-circle');
370
- } else {
371
- statusClasses.push('red-circle');
372
- }
373
-
374
- let comment = '';
375
- if (input.request.cachedInMemory()) {
376
- comment = i18nString(UIStrings.fromMemoryCache);
377
- } else if (input.request.fromEarlyHints()) {
378
- comment = i18nString(UIStrings.fromEarlyHints);
379
- } else if (input.request.fetchedViaServiceWorker) {
380
- comment = i18nString(UIStrings.fromServiceWorker);
381
- } else if (input.request.redirectSourceSignedExchangeInfoHasNoErrors()) {
382
- comment = i18nString(UIStrings.fromSignedexchange);
383
- } else if (input.request.fromPrefetchCache()) {
384
- comment = i18nString(UIStrings.fromPrefetchCache);
385
- } else if (input.request.cached()) {
386
- comment = i18nString(UIStrings.fromDiskCache);
387
- }
388
-
389
- if (comment) {
390
- statusClasses.push('status-with-comment');
391
- }
392
-
393
- const statusText = [input.request.statusCode, input.request.getInferredStatusText(), comment].join(' ');
394
-
395
- return renderCategory({
396
- name: 'general',
397
- title: i18nString(UIStrings.general),
398
- forceOpen: input.toReveal?.section === NetworkForward.UIRequestLocation.UIHeaderSection.GENERAL,
399
- loggingContext: 'general',
400
- // clang-format off
401
- contents: html`<div jslog=${VisualLogging.section('general')}>
402
- ${renderGeneralRow(i18nString(UIStrings.requestUrl), input.request.url(), 'request-url')}
403
- ${input.request.statusCode? renderGeneralRow(i18nString(UIStrings.requestMethod),
404
- input.request.requestMethod, 'request-method') : Lit.nothing}
405
- ${input.request.statusCode? renderGeneralRow(i18nString(UIStrings.statusCode),
406
- statusText, 'status-code', statusClasses) : Lit.nothing}
407
- ${input.request.remoteAddress()? renderGeneralRow(i18nString(UIStrings.remoteAddress),
408
- input.request.remoteAddress(), 'remote-address') : Lit.nothing}
409
- ${input.request.referrerPolicy()? renderGeneralRow(i18nString(UIStrings.referrerPolicy),
410
- String(input.request.referrerPolicy()), 'referrer-policy') : Lit.nothing}
411
- </div>`});
412
- // clang-format on
413
-
414
- function renderGeneralRow(
415
- name: Common.UIString.LocalizedString, value: string, id: string, classNames?: string[]): Lit.LitTemplate {
416
- const isHighlighted = input.toReveal?.section === NetworkForward.UIRequestLocation.UIHeaderSection.GENERAL &&
417
- name.toLowerCase() === input.toReveal?.header?.toLowerCase();
418
- return html`
399
+ function renderGeneralRow(
400
+ input: ViewInput, name: Common.UIString.LocalizedString, value: string, id: string,
401
+ classNames?: string[]): Lit.LitTemplate {
402
+ const isHighlighted = input.toReveal?.section === NetworkForward.UIRequestLocation.UIHeaderSection.GENERAL &&
403
+ name.toLowerCase() === input.toReveal?.header?.toLowerCase();
404
+ return html`
419
405
  <div class="row ${isHighlighted ? 'header-highlight' : ''}">
420
406
  <div class="header-name">${name}</div>
421
407
  <div
@@ -425,7 +411,6 @@ function renderGeneralSection(input: ViewInput): Lit.LitTemplate {
425
411
  >${value}</div>
426
412
  </div>
427
413
  `;
428
- }
429
414
  }
430
415
 
431
416
  export function renderCategory(data: {