chrome-devtools-frontend 1.0.1660788 → 1.0.1662289

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 (177) hide show
  1. package/.agents/skills/evaluate-ai-css-completion/SKILL.md +143 -0
  2. package/.agents/skills/evaluate-ai-css-completion/scripts/evaluate.js +104 -0
  3. package/.agents/skills/migrate-chromium-test/SKILL.md +7 -2
  4. package/.agents/skills/ui-eng-vision-local-lit-renderer/SKILL.md +7 -1
  5. package/docs/ui_engineering.md +75 -42
  6. package/eslint.config.mjs +7 -0
  7. package/extension-api/ExtensionAPI.d.ts +88 -0
  8. package/front_end/core/common/SettingRegistration.ts +0 -5
  9. package/front_end/core/host/InspectorFrontendHost.ts +1 -0
  10. package/front_end/core/host/InspectorFrontendHostStub.ts +2 -0
  11. package/front_end/core/platform/ArrayUtilities.ts +10 -0
  12. package/front_end/core/platform/StringUtilities.ts +20 -4
  13. package/front_end/core/sdk/CPUThrottlingManager.ts +2 -0
  14. package/front_end/core/sdk/DOMDebuggerModel.ts +2 -0
  15. package/front_end/core/sdk/DOMModel.ts +1 -0
  16. package/front_end/core/sdk/DebuggerModel.ts +4 -4
  17. package/front_end/core/sdk/EventBreakpointsModel.ts +2 -0
  18. package/front_end/core/sdk/FrameManager.ts +1 -0
  19. package/front_end/core/sdk/IsolateManager.ts +1 -0
  20. package/front_end/core/sdk/NetworkManager.ts +2 -0
  21. package/front_end/core/sdk/NetworkRequest.ts +1 -0
  22. package/front_end/core/sdk/PageResourceLoader.ts +2 -0
  23. package/front_end/core/sdk/SourceMap.ts +5 -5
  24. package/front_end/core/sdk/SourceMapManager.ts +3 -2
  25. package/front_end/core/sdk/TargetManager.ts +4 -0
  26. package/front_end/entrypoints/main/MainImpl.ts +2 -1
  27. package/front_end/foundation/README.md +86 -0
  28. package/front_end/generated/InspectorBackendCommands.ts +4 -5
  29. package/front_end/generated/protocol.ts +20 -38
  30. package/front_end/models/bindings/CompilerScriptMapping.ts +5 -5
  31. package/front_end/models/bindings/ContentProviderBasedProject.ts +2 -3
  32. package/front_end/models/bindings/DebuggerLanguagePlugins.ts +3 -3
  33. package/front_end/models/bindings/DefaultScriptMapping.ts +3 -3
  34. package/front_end/models/bindings/ResourceMapping.ts +3 -3
  35. package/front_end/models/bindings/ResourceScriptMapping.ts +2 -2
  36. package/front_end/models/bindings/SASSSourceMapping.ts +3 -3
  37. package/front_end/models/bindings/TempFile.ts +8 -3
  38. package/front_end/models/extensions/ExtensionAPI.ts +110 -46
  39. package/front_end/models/extensions/RecorderExtensionEndpoint.ts +7 -5
  40. package/front_end/models/formatter/ScriptFormatter.ts +8 -11
  41. package/front_end/models/heap_snapshot/HeapSnapshotProxy.ts +14 -5
  42. package/front_end/models/issues_manager/CheckFormsIssuesTrigger.ts +8 -9
  43. package/front_end/models/issues_manager/CookieIssue.ts +21 -9
  44. package/front_end/models/issues_manager/Issue.ts +3 -4
  45. package/front_end/models/issues_manager/IssueAggregator.ts +0 -9
  46. package/front_end/models/issues_manager/IssueResolver.ts +2 -2
  47. package/front_end/models/issues_manager/IssuesManager.ts +136 -137
  48. package/front_end/models/issues_manager/RelatedIssue.ts +10 -8
  49. package/front_end/models/issues_manager/issues_manager.ts +0 -2
  50. package/front_end/models/javascript_metadata/NativeFunctions.js +1 -1
  51. package/front_end/models/logs/RequestResolver.ts +2 -2
  52. package/front_end/models/source_map_scopes/FunctionCodeResolver.ts +12 -9
  53. package/front_end/models/trace/handlers/FramesHandler.ts +4 -7
  54. package/front_end/models/trace/handlers/ModelHandlers.ts +0 -1
  55. package/front_end/models/trace/handlers/RendererHandler.ts +2 -15
  56. package/front_end/models/trace/handlers/Threads.ts +4 -11
  57. package/front_end/models/trace/insights/DOMSize.ts +1 -1
  58. package/front_end/models/workspace_diff/WorkspaceDiff.ts +10 -4
  59. package/front_end/panels/ai_assistance/components/ChatMessage.ts +2 -1
  60. package/front_end/panels/application/ApplicationPanelSidebar.ts +0 -44
  61. package/front_end/panels/application/CookieItemsView.ts +1 -1
  62. package/front_end/panels/application/ServiceWorkersView.ts +494 -411
  63. package/front_end/panels/application/WebMCPView.ts +38 -43
  64. package/front_end/panels/application/application.ts +0 -6
  65. package/front_end/panels/application/components/AdsView.ts +201 -30
  66. package/front_end/panels/application/components/adsView.css +25 -0
  67. package/front_end/panels/application/components/components.ts +0 -2
  68. package/front_end/panels/application/preloading/components/PreloadingDetailsReportView.ts +1 -1
  69. package/front_end/panels/application/preloading/components/RuleSetDetailsView.ts +2 -2
  70. package/front_end/panels/application/serviceWorkersView.css +40 -4
  71. package/front_end/panels/browser_debugger/XHRBreakpointsSidebarPane.ts +147 -123
  72. package/front_end/panels/common/ExtensionServer.ts +3 -3
  73. package/front_end/panels/console/ConsoleView.ts +3 -2
  74. package/front_end/panels/console/PromptBuilder.ts +2 -1
  75. package/front_end/panels/emulation/DeviceModeView.ts +164 -113
  76. package/front_end/panels/issues/AffectedResourcesView.ts +1 -1
  77. package/front_end/panels/issues/IssueView.ts +0 -2
  78. package/front_end/panels/issues/IssuesPane.ts +1 -8
  79. package/front_end/panels/js_timeline/js_timeline-meta.ts +3 -2
  80. package/front_end/panels/lighthouse/LighthouseProtocolService.ts +53 -12
  81. package/front_end/panels/linear_memory_inspector/LinearMemoryInspectorController.ts +3 -3
  82. package/front_end/panels/linear_memory_inspector/LinearMemoryInspectorPane.ts +5 -5
  83. package/front_end/panels/linear_memory_inspector/components/LinearMemoryHighlightChipList.ts +4 -4
  84. package/front_end/panels/linear_memory_inspector/components/LinearMemoryInspector.ts +2 -2
  85. package/front_end/panels/linear_memory_inspector/components/LinearMemoryNavigator.ts +6 -6
  86. package/front_end/panels/linear_memory_inspector/components/LinearMemoryValueInterpreter.ts +3 -3
  87. package/front_end/panels/linear_memory_inspector/components/ValueInterpreterDisplay.ts +8 -9
  88. package/front_end/panels/linear_memory_inspector/components/ValueInterpreterDisplayUtils.ts +2 -2
  89. package/front_end/panels/linear_memory_inspector/components/ValueInterpreterSettings.ts +1 -1
  90. package/front_end/panels/linear_memory_inspector/linear_memory_inspector-meta.ts +2 -2
  91. package/front_end/panels/network/RequestPayloadView.ts +92 -52
  92. package/front_end/panels/network/RequestTimingView.ts +95 -127
  93. package/front_end/panels/network/components/ResponseHeaderSection.ts +5 -3
  94. package/front_end/panels/profiler/HeapSnapshotView.ts +3 -3
  95. package/front_end/panels/profiler/WritableProfileHeader.ts +2 -2
  96. package/front_end/panels/recorder/{components/ControlButton.ts → ControlButton.ts} +9 -10
  97. package/front_end/panels/recorder/{components/CreateRecordingView.ts → CreateRecordingView.ts} +48 -47
  98. package/front_end/panels/recorder/{components/ExtensionView.ts → ExtensionView.ts} +8 -8
  99. package/front_end/panels/recorder/RecorderController.ts +302 -127
  100. package/front_end/panels/recorder/RecorderPanel.ts +1 -1
  101. package/front_end/panels/recorder/{components/RecordingListView.ts → RecordingListView.ts} +19 -20
  102. package/front_end/panels/recorder/{components/RecordingView.ts → RecordingView.ts} +88 -88
  103. package/front_end/panels/recorder/{components/ReplaySection.ts → ReplaySection.ts} +11 -11
  104. package/front_end/panels/recorder/{components/SelectorPicker.ts → SelectorPicker.ts} +13 -13
  105. package/front_end/panels/recorder/{components/StepEditor.ts → StepEditor.ts} +15 -15
  106. package/front_end/panels/recorder/{components/StepView.ts → StepView.ts} +10 -10
  107. package/front_end/panels/recorder/{components/TimelineSection.ts → TimelineSection.ts} +2 -2
  108. package/front_end/panels/recorder/recorder.ts +23 -1
  109. package/front_end/panels/recorder/util/util.ts +113 -0
  110. package/front_end/panels/sources/SourcesView.ts +0 -17
  111. package/front_end/panels/sources/TabbedEditorContainer.ts +1 -1
  112. package/front_end/panels/sources/UISourceCodeFrame.ts +42 -0
  113. package/front_end/panels/sources/sources.ts +0 -2
  114. package/front_end/panels/timeline/CompatibilityTracksAppender.ts +0 -17
  115. package/front_end/panels/timeline/IsolateSelector.ts +10 -8
  116. package/front_end/panels/timeline/ThreadAppender.ts +0 -106
  117. package/front_end/panels/timeline/TimelinePanel.ts +18 -7
  118. package/front_end/panels/timeline/TimelineUIUtils.ts +144 -129
  119. package/front_end/panels/timeline/timeline-meta.ts +3 -2
  120. package/front_end/third_party/chromium/README.chromium +1 -1
  121. package/front_end/ui/components/report_view/ReportView.ts +11 -5
  122. package/front_end/ui/components/report_view/report.css +4 -1
  123. package/front_end/ui/legacy/TextPrompt.ts +49 -1
  124. package/front_end/ui/legacy/Treeoutline.ts +3 -0
  125. package/front_end/ui/legacy/UIUtils.ts +11 -1
  126. package/front_end/ui/legacy/Widget.ts +14 -15
  127. package/front_end/ui/legacy/components/cookie_table/CookiesTable.ts +2 -2
  128. package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +11 -7
  129. package/front_end/ui/legacy/components/source_frame/SourceFrame.ts +2 -1
  130. package/front_end/ui/legacy/components/utils/JSPresentationUtils.ts +10 -1
  131. package/front_end/ui/legacy/textPrompt.css +10 -0
  132. package/front_end/ui/visual_logging/KnownContextValues.ts +1 -0
  133. package/package.json +1 -1
  134. package/front_end/models/issues_manager/AttributionReportingIssue.ts +0 -247
  135. package/front_end/models/issues_manager/descriptions/arInsecureContext.md +0 -7
  136. package/front_end/models/issues_manager/descriptions/arInvalidInfoHeader.md +0 -5
  137. package/front_end/models/issues_manager/descriptions/arInvalidRegisterOsSourceHeader.md +0 -5
  138. package/front_end/models/issues_manager/descriptions/arInvalidRegisterOsTriggerHeader.md +0 -5
  139. package/front_end/models/issues_manager/descriptions/arInvalidRegisterSourceHeader.md +0 -5
  140. package/front_end/models/issues_manager/descriptions/arInvalidRegisterTriggerHeader.md +0 -5
  141. package/front_end/models/issues_manager/descriptions/arNavigationRegistrationUniqueScopeAlreadySet.md +0 -5
  142. package/front_end/models/issues_manager/descriptions/arNavigationRegistrationWithoutTransientUserActivation.md +0 -6
  143. package/front_end/models/issues_manager/descriptions/arNoRegisterOsSourceHeader.md +0 -5
  144. package/front_end/models/issues_manager/descriptions/arNoRegisterOsTriggerHeader.md +0 -5
  145. package/front_end/models/issues_manager/descriptions/arNoRegisterSourceHeader.md +0 -5
  146. package/front_end/models/issues_manager/descriptions/arNoRegisterTriggerHeader.md +0 -5
  147. package/front_end/models/issues_manager/descriptions/arNoWebOrOsSupport.md +0 -4
  148. package/front_end/models/issues_manager/descriptions/arOsSourceIgnored.md +0 -18
  149. package/front_end/models/issues_manager/descriptions/arOsTriggerIgnored.md +0 -19
  150. package/front_end/models/issues_manager/descriptions/arPermissionPolicyDisabled.md +0 -8
  151. package/front_end/models/issues_manager/descriptions/arSourceAndTriggerHeaders.md +0 -9
  152. package/front_end/models/issues_manager/descriptions/arSourceIgnored.md +0 -13
  153. package/front_end/models/issues_manager/descriptions/arTriggerIgnored.md +0 -12
  154. package/front_end/models/issues_manager/descriptions/arUntrustworthyReportingOrigin.md +0 -10
  155. package/front_end/models/issues_manager/descriptions/arWebAndOsHeaders.md +0 -11
  156. package/front_end/models/trace/handlers/AuctionWorkletsHandler.ts +0 -183
  157. package/front_end/panels/application/InterestGroupStorageModel.ts +0 -81
  158. package/front_end/panels/application/InterestGroupStorageView.ts +0 -151
  159. package/front_end/panels/application/InterestGroupTreeElement.ts +0 -65
  160. package/front_end/panels/application/components/InterestGroupAccessGrid.ts +0 -135
  161. package/front_end/panels/application/components/interestGroupAccessGrid.css +0 -27
  162. package/front_end/panels/application/interestGroupStorageView.css +0 -9
  163. package/front_end/panels/issues/AttributionReportingIssueDetailsView.ts +0 -182
  164. package/front_end/panels/recorder/components/components.ts +0 -25
  165. package/front_end/panels/recorder/components/util.ts +0 -116
  166. package/front_end/panels/sources/InplaceFormatterEditorAction.ts +0 -149
  167. /package/front_end/panels/recorder/{components/controlButton.css → controlButton.css} +0 -0
  168. /package/front_end/panels/recorder/{components/createRecordingView.css → createRecordingView.css} +0 -0
  169. /package/front_end/panels/recorder/{components/extensionView.css → extensionView.css} +0 -0
  170. /package/front_end/panels/recorder/{components/recordingListView.css → recordingListView.css} +0 -0
  171. /package/front_end/panels/recorder/{components/recordingView.css → recordingView.css} +0 -0
  172. /package/front_end/panels/recorder/{components/replaySection.css → replaySection.css} +0 -0
  173. /package/front_end/panels/recorder/{components/selectorPicker.css → selectorPicker.css} +0 -0
  174. /package/front_end/panels/recorder/{components/startView.css → startView.css} +0 -0
  175. /package/front_end/panels/recorder/{components/stepEditor.css → stepEditor.css} +0 -0
  176. /package/front_end/panels/recorder/{components/stepView.css → stepView.css} +0 -0
  177. /package/front_end/panels/recorder/{components/timelineSection.css → timelineSection.css} +0 -0
@@ -2,7 +2,6 @@
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
- /* eslint-disable @devtools/no-imperative-dom-api */
6
5
  import '../../ui/kit/kit.js';
7
6
 
8
7
  import * as Common from '../../core/common/common.js';
@@ -297,22 +296,22 @@ function getLocalizedResponseSourceForCode(swResponseSource: Protocol.Network.Se
297
296
  }
298
297
 
299
298
  interface ViewInput {
300
- requestUnfinished: boolean;
301
- requestStartTime: number;
302
- requestIssueTime: number;
299
+ request: SDK.NetworkRequest.NetworkRequest;
303
300
  totalDuration: number;
304
301
  startTime: number;
305
302
  endTime: number;
306
303
  timeRanges: NetworkTimeCalculator.RequestTimeRange[];
307
304
  calculator: NetworkTimeCalculator.NetworkTimeCalculator;
308
- serverTimings: SDK.ServerTiming.ServerTiming[];
309
- fetchDetails?: UI.TreeOutline.TreeOutlineInShadow;
310
- routerDetails?: UI.TreeOutline.TreeOutlineInShadow;
311
305
  wasThrottled?: SDK.NetworkManager.AppliedNetworkConditions;
312
306
  }
313
307
 
314
308
  type View = (input: ViewInput, output: object, target: HTMLElement) => void;
315
309
  export const DEFAULT_VIEW: View = (input, output, target) => {
310
+ const serverTimings = input.request.serverTimings ?? [];
311
+ const requestStartTime = input.request.startTime;
312
+ const requestIssueTime = input.request.issueTime();
313
+ const requestUnfinished = !input.request.finished;
314
+ const routerDetails = input.request.serviceWorkerRouterInfo;
316
315
  const revealThrottled = (): void => {
317
316
  if (input.wasThrottled) {
318
317
  void Common.Revealer.reveal(input.wasThrottled);
@@ -367,6 +366,80 @@ export const DEFAULT_VIEW: View = (input, output, target) => {
367
366
  // clang-format on
368
367
  };
369
368
 
369
+ const routerDetailsTree = (serviceWorkerRouterInfo: Protocol.Network.ServiceWorkerRouterInfo): LitTemplate => {
370
+ const matchedSourceType = serviceWorkerRouterInfo.matchedSourceType;
371
+ const matchedSourceTypeString = String(matchedSourceType) || i18nString(UIStrings.unknown);
372
+ const actualSourceType = serviceWorkerRouterInfo.actualSourceType;
373
+ const actualSourceTypeString = String(actualSourceType) || i18nString(UIStrings.unknown);
374
+ // clang-format off
375
+ return html`<devtools-tree>
376
+ <ul role=tree>
377
+ <li role=treeitem>
378
+ <div class=network-fetch-details-treeitem>
379
+ ${i18nString(UIStrings.routerMatchedSource, {PH1: matchedSourceTypeString})}
380
+ </div>
381
+ </li>
382
+ <li role=treeitem>
383
+ <div class=network-fetch-details-treeitem>
384
+ ${i18nString(UIStrings.routerActualSource, {PH1: actualSourceTypeString})}
385
+ </div>
386
+ </li>
387
+ </ul>
388
+ </devtools-tree>`;
389
+ // clang-format on
390
+ };
391
+
392
+ const fetchDetailsTree = (): LitTemplate => {
393
+ const origRequest = Logs.NetworkLog.NetworkLog.instance().originalRequestForURL(input.request.url());
394
+ const origRequestTree = origRequest &&
395
+ new ObjectUI.ObjectPropertiesSection.ObjectTree(SDK.RemoteObject.RemoteObject.fromLocalObject(origRequest), {
396
+ readOnly: true,
397
+ propertiesMode: ObjectUI.ObjectPropertiesSection.ObjectPropertiesMode.OWN_AND_INTERNAL_AND_INHERITED,
398
+ });
399
+ const response = Logs.NetworkLog.NetworkLog.instance().originalResponseForURL(input.request.url());
400
+ const responseTree = response &&
401
+ new ObjectUI.ObjectPropertiesSection.ObjectTree(SDK.RemoteObject.RemoteObject.fromLocalObject(response), {
402
+ readOnly: true,
403
+ propertiesMode: ObjectUI.ObjectPropertiesSection.ObjectPropertiesMode.OWN_AND_INTERNAL_AND_INHERITED,
404
+ });
405
+ const swResponseSource = input.request.serviceWorkerResponseSource();
406
+ const responseCacheStorageName = input.request.getResponseCacheStorageCacheName();
407
+ const retrievalTime = input.request.getResponseRetrievalTime();
408
+ // clang-format off
409
+ return html`<devtools-tree>
410
+ <ul role=tree>
411
+ ${origRequestTree ? html`<li role=treeitem class="object-properties-section-root-element object-properties-section" open>
412
+ ${i18nString(UIStrings.originalRequest)}
413
+ ${ObjectUI.ObjectPropertiesSection.renderObjectTree(origRequestTree)}
414
+ </li>` : nothing}
415
+ ${responseTree ? html`<li role=treeitem class="object-properties-section-root-element object-properties-section" open>
416
+ ${i18nString(UIStrings.responseReceived)}
417
+ ${ObjectUI.ObjectPropertiesSection.renderObjectTree(responseTree)}
418
+ </li>` : nothing}
419
+ <li role=treeitem>
420
+ <div class=network-fetch-details-treeitem>
421
+ ${i18nString(UIStrings.sourceOfResponseS, {PH1: swResponseSource ?
422
+ getLocalizedResponseSourceForCode(swResponseSource) :
423
+ i18nString(UIStrings.unknown)})}
424
+ </div>
425
+ </li>
426
+ <li role=treeitem>
427
+ <div class=network-fetch-details-treeitem>
428
+ ${responseCacheStorageName ?
429
+ i18nString(UIStrings.cacheStorageCacheNameS, {PH1: responseCacheStorageName}) :
430
+ i18nString(UIStrings.cacheStorageCacheNameUnknown)}
431
+ </div>
432
+ </li>
433
+ ${retrievalTime ? html`<li role=treeitem>
434
+ <div class=network-fetch-details-treeitem>
435
+ ${i18nString(UIStrings.retrievalTimeS, {PH1: retrievalTime.toString()})}
436
+ </div>
437
+ </li>` : nothing}
438
+ </ul>
439
+ </devtools-tree>`;
440
+ // clang-format on
441
+ };
442
+
370
443
  const onActivate = (e: KeyboardEvent|MouseEvent): void => {
371
444
  if ('key' in e && !Platform.KeyboardUtilities.isEnterOrSpaceKey(e)) {
372
445
  return;
@@ -434,12 +507,12 @@ export const DEFAULT_VIEW: View = (input, output, target) => {
434
507
  </tr>
435
508
  <tr>
436
509
  <td colspan = 3>
437
- ${i18nString(UIStrings.queuedAtS, {PH1: input.calculator.formatValue(input.requestIssueTime, 2)})}
510
+ ${i18nString(UIStrings.queuedAtS, {PH1: input.calculator.formatValue(requestIssueTime, 2)})}
438
511
  </td>
439
512
  </tr>
440
513
  <tr>
441
514
  <td colspan=3>
442
- ${i18nString(UIStrings.startedAtS, {PH1: input.calculator.formatValue(input.requestStartTime, 2)})}
515
+ ${i18nString(UIStrings.startedAtS, {PH1: input.calculator.formatValue(requestStartTime, 2)})}
443
516
  </td>
444
517
  </tr>
445
518
  </thead>
@@ -481,19 +554,19 @@ export const DEFAULT_VIEW: View = (input, output, target) => {
481
554
  </div>
482
555
  </td>
483
556
  </tr>
484
- ${range.name === 'serviceworker-respondwith' && input.fetchDetails ? html`
557
+ ${range.name === 'serviceworker-respondwith' && input.request.fetchedViaServiceWorker ? html`
485
558
  <tr class="network-fetch-timing-bar-details network-fetch-timing-bar-details-collapsed">
486
- ${input.fetchDetails.element}
559
+ ${fetchDetailsTree()}
487
560
  </tr>`
488
561
  : nothing}
489
- ${range.name === 'serviceworker-routerevaluation' && input.routerDetails ? html`
562
+ ${range.name === 'serviceworker-routerevaluation' && routerDetails ? html`
490
563
  <tr class="router-evaluation-timing-bar-details network-fetch-timing-bar-details-collapsed">
491
- ${input.routerDetails.element}
564
+ ${routerDetailsTree(routerDetails)}
492
565
  </tr>`
493
566
  : nothing}
494
567
  `)}
495
568
  `)}
496
- ${input.requestUnfinished ? html`
569
+ ${requestUnfinished ? html`
497
570
  <tr>
498
571
  <td class=caution colspan=3>
499
572
  ${i18nString(UIStrings.cautionRequestIsNotFinishedYet)}
@@ -502,9 +575,9 @@ export const DEFAULT_VIEW: View = (input, output, target) => {
502
575
  <tr class=network-timing-footer>
503
576
  <td colspan=1>
504
577
  <devtools-link
505
- href="https://developer.chrome.com/docs/devtools/network/reference/#timing-explanation"
578
+ href='https://developer.chrome.com/docs/devtools/network/reference/#timing-explanation'
506
579
  class=devtools-link
507
- jslogcontext="explanation">
580
+ jslogcontext='explanation'>
508
581
  ${i18nString(UIStrings.explanation)}
509
582
  </devtools-link>
510
583
  <td></td>
@@ -523,9 +596,9 @@ export const DEFAULT_VIEW: View = (input, output, target) => {
523
596
  <td></td>
524
597
  <td>${i18nString(UIStrings.time)}</td>
525
598
  </tr>
526
- ${repeat(input.serverTimings.filter(item => item.metric.toLowerCase() !== 'total'), addServerTiming)}
527
- ${repeat(input.serverTimings.filter(item => item.metric.toLowerCase() === 'total'), addServerTiming)}
528
- ${input.serverTimings.length === 0 ? html`
599
+ ${repeat(serverTimings.filter(item => item.metric.toLowerCase() !== 'total'), addServerTiming)}
600
+ ${repeat(serverTimings.filter(item => item.metric.toLowerCase() === 'total'), addServerTiming)}
601
+ ${serverTimings.length === 0 ? html`
529
602
  <tr>
530
603
  <td colspan=3>
531
604
  ${uiI18n.getFormatLocalizedStringTemplate(str_, UIStrings.duringDevelopmentYouCanUseSToAdd, {PH1:
@@ -546,8 +619,8 @@ export class RequestTimingView extends UI.Widget.VBox {
546
619
  this.#view = view;
547
620
  }
548
621
 
549
- static create(request: SDK.NetworkRequest.NetworkRequest, calculator: NetworkTimeCalculator.NetworkTimeCalculator):
550
- RequestTimingView {
622
+ static create(request: SDK.NetworkRequest.NetworkRequest,
623
+ calculator: NetworkTimeCalculator.NetworkTimeCalculator): RequestTimingView {
551
624
  const view = new RequestTimingView();
552
625
  view.request = request;
553
626
  view.calculator = calculator;
@@ -571,119 +644,14 @@ export class RequestTimingView extends UI.Widget.VBox {
571
644
  startTime,
572
645
  endTime,
573
646
  totalDuration,
574
- serverTimings: this.#request.serverTimings ?? [],
575
647
  calculator: this.#calculator,
576
- requestStartTime: this.#request.startTime,
577
- requestIssueTime: this.#request.issueTime(),
578
- requestUnfinished: !this.#request.finished,
579
- fetchDetails: this.#fetchDetailsTree(),
580
- routerDetails: this.#routerDetailsTree(),
648
+ request: this.#request,
581
649
  wasThrottled: conditions?.urlPattern ? conditions : undefined,
582
650
  timeRanges,
583
651
  };
584
652
  this.#view(input, {}, this.contentElement);
585
653
  }
586
654
 
587
- #fetchDetailsTree(): UI.TreeOutline.TreeOutlineInShadow|undefined {
588
- if (!this.#request?.fetchedViaServiceWorker) {
589
- return undefined;
590
- }
591
- const detailsView = new UI.TreeOutline.TreeOutlineInShadow();
592
-
593
- const origRequest = Logs.NetworkLog.NetworkLog.instance().originalRequestForURL(this.#request.url());
594
- if (origRequest) {
595
- const requestObject = SDK.RemoteObject.RemoteObject.fromLocalObject(origRequest);
596
- const requestTreeElement = new ObjectUI.ObjectPropertiesSection.RootElement(
597
- new ObjectUI.ObjectPropertiesSection.ObjectTree(requestObject, {
598
- readOnly: true,
599
- propertiesMode: ObjectUI.ObjectPropertiesSection.ObjectPropertiesMode.OWN_AND_INTERNAL_AND_INHERITED,
600
- }));
601
- requestTreeElement.title = i18nString(UIStrings.originalRequest);
602
- detailsView.appendChild(requestTreeElement);
603
- }
604
-
605
- const response = Logs.NetworkLog.NetworkLog.instance().originalResponseForURL(this.#request.url());
606
- if (response) {
607
- const responseObject = SDK.RemoteObject.RemoteObject.fromLocalObject(response);
608
- const responseTreeElement = new ObjectUI.ObjectPropertiesSection.RootElement(
609
- new ObjectUI.ObjectPropertiesSection.ObjectTree(responseObject, {
610
- readOnly: true,
611
- propertiesMode: ObjectUI.ObjectPropertiesSection.ObjectPropertiesMode.OWN_AND_INTERNAL_AND_INHERITED,
612
- }));
613
- responseTreeElement.title = i18nString(UIStrings.responseReceived);
614
- detailsView.appendChild(responseTreeElement);
615
- }
616
-
617
- const serviceWorkerResponseSource = document.createElement('div');
618
- serviceWorkerResponseSource.classList.add('network-fetch-details-treeitem');
619
- let swResponseSourceString = i18nString(UIStrings.unknown);
620
- const swResponseSource = this.#request.serviceWorkerResponseSource();
621
- if (swResponseSource) {
622
- swResponseSourceString = getLocalizedResponseSourceForCode(swResponseSource);
623
- }
624
- serviceWorkerResponseSource.textContent = i18nString(UIStrings.sourceOfResponseS, {PH1: swResponseSourceString});
625
-
626
- const responseSourceTreeElement = new UI.TreeOutline.TreeElement(serviceWorkerResponseSource);
627
- detailsView.appendChild(responseSourceTreeElement);
628
-
629
- const cacheNameElement = document.createElement('div');
630
- cacheNameElement.classList.add('network-fetch-details-treeitem');
631
- const responseCacheStorageName = this.#request.getResponseCacheStorageCacheName();
632
- if (responseCacheStorageName) {
633
- cacheNameElement.textContent = i18nString(UIStrings.cacheStorageCacheNameS, {PH1: responseCacheStorageName});
634
- } else {
635
- cacheNameElement.textContent = i18nString(UIStrings.cacheStorageCacheNameUnknown);
636
- }
637
-
638
- const cacheNameTreeElement = new UI.TreeOutline.TreeElement(cacheNameElement);
639
- detailsView.appendChild(cacheNameTreeElement);
640
-
641
- const retrievalTime = this.#request.getResponseRetrievalTime();
642
- if (retrievalTime) {
643
- const responseTimeElement = document.createElement('div');
644
- responseTimeElement.classList.add('network-fetch-details-treeitem');
645
- responseTimeElement.textContent = i18nString(UIStrings.retrievalTimeS, {PH1: retrievalTime.toString()});
646
- const responseTimeTreeElement = new UI.TreeOutline.TreeElement(responseTimeElement);
647
- detailsView.appendChild(responseTimeTreeElement);
648
- }
649
- return detailsView;
650
- }
651
-
652
- #routerDetailsTree(): UI.TreeOutline.TreeOutlineInShadow|undefined {
653
- if (!this.#request?.serviceWorkerRouterInfo) {
654
- return undefined;
655
- }
656
-
657
- const detailsView = new UI.TreeOutline.TreeOutlineInShadow();
658
-
659
- const {serviceWorkerRouterInfo} = this.#request;
660
- if (!serviceWorkerRouterInfo) {
661
- return;
662
- }
663
-
664
- // Add matched source type element
665
- const matchedSourceTypeElement = document.createElement('div');
666
- matchedSourceTypeElement.classList.add('network-fetch-details-treeitem');
667
- const matchedSourceType = serviceWorkerRouterInfo.matchedSourceType;
668
- const matchedSourceTypeString = String(matchedSourceType) || i18nString(UIStrings.unknown);
669
- matchedSourceTypeElement.textContent = i18nString(UIStrings.routerMatchedSource, {PH1: matchedSourceTypeString});
670
-
671
- const matchedSourceTypeTreeElement = new UI.TreeOutline.TreeElement(matchedSourceTypeElement);
672
- detailsView.appendChild(matchedSourceTypeTreeElement);
673
-
674
- // Add actual source type element
675
- const actualSourceTypeElement = document.createElement('div');
676
- actualSourceTypeElement.classList.add('network-fetch-details-treeitem');
677
- const actualSourceType = serviceWorkerRouterInfo.actualSourceType;
678
- const actualSourceTypeString = String(actualSourceType) || i18nString(UIStrings.unknown);
679
- actualSourceTypeElement.textContent = i18nString(UIStrings.routerActualSource, {PH1: actualSourceTypeString});
680
-
681
- const actualSourceTypeTreeElement = new UI.TreeOutline.TreeElement(actualSourceTypeElement);
682
- detailsView.appendChild(actualSourceTypeTreeElement);
683
-
684
- return detailsView;
685
- }
686
-
687
655
  set request(request: SDK.NetworkRequest.NetworkRequest) {
688
656
  this.#request = request;
689
657
  if (this.isShowing()) {
@@ -170,12 +170,14 @@ export class ResponseHeaderSection extends ResponseHeaderSectionBase {
170
170
  BlockedReasonDetails.get((this.#request.blockedReason() as Protocol.Network.BlockedReason));
171
171
  if (headerWithIssues) {
172
172
  if (IssuesManager.RelatedIssue.hasIssueOfCategory(
173
- this.#request, IssuesManager.Issue.IssueCategory.CROSS_ORIGIN_EMBEDDER_POLICY)) {
173
+ this.#request, IssuesManager.Issue.IssueCategory.CROSS_ORIGIN_EMBEDDER_POLICY,
174
+ IssuesManager.IssuesManager.IssuesManager.instance())) {
174
175
  const followLink = (): void => {
175
176
  Host.userMetrics.issuesPanelOpenedFrom(Host.UserMetrics.IssueOpener.LEARN_MORE_LINK_COEP);
176
177
  if (this.#request) {
177
- void IssuesManager.RelatedIssue.reveal(
178
- this.#request, IssuesManager.Issue.IssueCategory.CROSS_ORIGIN_EMBEDDER_POLICY);
178
+ void IssuesManager.RelatedIssue.reveal(this.#request,
179
+ IssuesManager.IssuesManager.IssuesManager.instance(),
180
+ IssuesManager.Issue.IssueCategory.CROSS_ORIGIN_EMBEDDER_POLICY);
179
181
  }
180
182
  };
181
183
  if (headerWithIssues.blockedDetails) {
@@ -1795,8 +1795,8 @@ export class HeapProfileHeader extends ProfileHeader {
1795
1795
 
1796
1796
  setupWorker(): void {
1797
1797
  console.assert(!this.workerProxy, 'HeapSnapshotWorkerProxy already exists');
1798
- this.workerProxy =
1799
- new HeapSnapshotModel.HeapSnapshotProxy.HeapSnapshotWorkerProxy(this.handleWorkerEvent.bind(this));
1798
+ this.workerProxy = new HeapSnapshotModel.HeapSnapshotProxy.HeapSnapshotWorkerProxy(
1799
+ this.handleWorkerEvent.bind(this), Common.Console.Console.instance());
1800
1800
  this.workerProxy.addEventListener(
1801
1801
  HeapSnapshotModel.HeapSnapshotProxy.HeapSnapshotWorkerProxy.Events.WAIT, event => {
1802
1802
  this.updateStatus(null, event.data);
@@ -1836,7 +1836,7 @@ export class HeapProfileHeader extends ProfileHeader {
1836
1836
 
1837
1837
  transferChunk(chunk: string): void {
1838
1838
  if (!this.bufferedWriter) {
1839
- this.bufferedWriter = new Bindings.TempFile.TempFile();
1839
+ this.bufferedWriter = new Bindings.TempFile.TempFile(Common.Console.Console.instance());
1840
1840
  }
1841
1841
  this.bufferedWriter.write([chunk]);
1842
1842
 
@@ -2,7 +2,7 @@
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 type * as Common from '../../core/common/common.js';
5
+ import * as Common from '../../core/common/common.js';
6
6
  import * as i18n from '../../core/i18n/i18n.js';
7
7
  import * as Platform from '../../core/platform/platform.js';
8
8
  import type * as SDK from '../../core/sdk/sdk.js';
@@ -145,7 +145,7 @@ export class WritableProfileHeader extends ProfileHeader implements Common.Strin
145
145
  setProtocolProfile(profile: Protocol.Profiler.Profile): void {
146
146
  this.setProfile(profile);
147
147
  this.protocolProfileInternal = profile;
148
- this.tempFile = new Bindings.TempFile.TempFile();
148
+ this.tempFile = new Bindings.TempFile.TempFile(Common.Console.Console.instance());
149
149
  this.tempFile.write([JSON.stringify(profile)]);
150
150
  this.#profileReceivedPromise.resolve();
151
151
  }
@@ -2,8 +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 * as UI from '../../../ui/legacy/legacy.js';
6
- import * as Lit from '../../../ui/lit/lit.js';
5
+ import * as UI from '../../ui/legacy/legacy.js';
6
+ import * as Lit from '../../ui/lit/lit.js';
7
7
 
8
8
  import controlButtonStyles from './controlButton.css.js';
9
9
 
@@ -74,13 +74,12 @@ export class ControlButton extends UI.Widget.Widget<ShadowRoot> {
74
74
  }
75
75
 
76
76
  override performUpdate(): void {
77
- this.#view(
78
- {
79
- label: this.#label,
80
- shape: this.#shape,
81
- disabled: this.#disabled,
82
- onClick: this.#onClick,
83
- },
84
- {}, this.contentElement);
77
+ this.#view({
78
+ label: this.#label,
79
+ shape: this.#shape,
80
+ disabled: this.#disabled,
81
+ onClick: this.#onClick,
82
+ },
83
+ {}, this.contentElement);
85
84
  }
86
85
  }
@@ -2,20 +2,20 @@
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';
5
+ import '../../ui/kit/kit.js';
6
6
 
7
- import * as i18n from '../../../core/i18n/i18n.js';
8
- import * as Badges from '../../../models/badges/badges.js';
9
- import * as Buttons from '../../../ui/components/buttons/buttons.js';
10
- import * as Input from '../../../ui/components/input/input.js';
11
- import * as UI from '../../../ui/legacy/legacy.js';
12
- import * as Lit from '../../../ui/lit/lit.js';
13
- import * as VisualLogging from '../../../ui/visual_logging/visual_logging.js';
14
- import * as Models from '../models/models.js';
15
- import * as Actions from '../recorder-actions/recorder-actions.js';
7
+ import * as i18n from '../../core/i18n/i18n.js';
8
+ import * as Badges from '../../models/badges/badges.js';
9
+ import * as Buttons from '../../ui/components/buttons/buttons.js';
10
+ import * as Input from '../../ui/components/input/input.js';
11
+ import * as UI from '../../ui/legacy/legacy.js';
12
+ import * as Lit from '../../ui/lit/lit.js';
13
+ import * as VisualLogging from '../../ui/visual_logging/visual_logging.js';
16
14
 
17
15
  import {ControlButton} from './ControlButton.js';
18
16
  import createRecordingViewStyles from './createRecordingView.css.js';
17
+ import * as Models from './models/models.js';
18
+ import * as Actions from './recorder-actions/recorder-actions.js';
19
19
 
20
20
  const {html, Directives: {ref, createRef, repeat}} = Lit;
21
21
 
@@ -97,7 +97,7 @@ const UIStrings = {
97
97
  learnMore: 'Learn more',
98
98
  } as const;
99
99
  const str_ = i18n.i18n.registerUIStrings(
100
- 'panels/recorder/components/CreateRecordingView.ts',
100
+ 'panels/recorder/CreateRecordingView.ts',
101
101
  UIStrings,
102
102
  );
103
103
  const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
@@ -301,9 +301,11 @@ export class CreateRecordingView extends UI.Widget.Widget {
301
301
  #output: ViewOutput = {};
302
302
  #recorderSettings?: Models.RecorderSettings.RecorderSettings;
303
303
 
304
- onRecordingStarted:
305
- (data: {name: string, selectorTypesToRecord: Models.Schema.SelectorType[], selectorAttribute?: string}) => void =
306
- () => {};
304
+ onRecordingStarted: (data: {
305
+ name: string,
306
+ selectorTypesToRecord: Models.Schema.SelectorType[],
307
+ selectorAttribute?: string,
308
+ }) => void = () => {};
307
309
  onRecordingCancelled = (): void => {};
308
310
 
309
311
  set recorderSettings(value: Models.RecorderSettings.RecorderSettings) {
@@ -373,39 +375,38 @@ export class CreateRecordingView extends UI.Widget.Widget {
373
375
  }
374
376
 
375
377
  override performUpdate(): void {
376
- this.#view(
377
- {
378
- name: this.#name,
379
- selectorAttribute: this.#selectorAttribute,
380
- selectorTypes: this.#selectorTypes,
381
- error: this.#error,
382
- onRecordingCancelled: this.onRecordingCancelled,
383
- onUpdate: update => {
384
- if ('name' in update) {
385
- this.#name = update.name;
386
- } else if ('selectorAttribute' in update) {
387
- this.#selectorAttribute = update.selectorAttribute;
388
- } else {
389
- this.#selectorTypes = this.#selectorTypes.map(item => {
390
- if (item.selectorType === update.selectorType) {
391
- return {
392
- ...item,
393
- checked: update.checked,
394
- };
395
- }
396
- return item;
397
- });
378
+ this.#view({
379
+ name: this.#name,
380
+ selectorAttribute: this.#selectorAttribute,
381
+ selectorTypes: this.#selectorTypes,
382
+ error: this.#error,
383
+ onRecordingCancelled: this.onRecordingCancelled,
384
+ onUpdate: update => {
385
+ if ('name' in update) {
386
+ this.#name = update.name;
387
+ } else if ('selectorAttribute' in update) {
388
+ this.#selectorAttribute = update.selectorAttribute;
389
+ } else {
390
+ this.#selectorTypes = this.#selectorTypes.map(item => {
391
+ if (item.selectorType === update.selectorType) {
392
+ return {
393
+ ...item,
394
+ checked: update.checked,
395
+ };
398
396
  }
399
- this.requestUpdate();
400
- },
401
- onRecordingStarted: (): void => {
402
- this.startRecording();
403
- },
404
- onErrorReset: () => {
405
- this.#error = undefined;
406
- this.requestUpdate();
407
- },
408
- },
409
- this.#output, this.contentElement);
397
+ return item;
398
+ });
399
+ }
400
+ this.requestUpdate();
401
+ },
402
+ onRecordingStarted: (): void => {
403
+ this.startRecording();
404
+ },
405
+ onErrorReset: () => {
406
+ this.#error = undefined;
407
+ this.requestUpdate();
408
+ },
409
+ },
410
+ this.#output, this.contentElement);
410
411
  }
411
412
  }
@@ -2,14 +2,14 @@
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 * as i18n from '../../../core/i18n/i18n.js';
6
- import type * as PublicExtensions from '../../../models/extensions/extensions.js';
7
- import * as Buttons from '../../../ui/components/buttons/buttons.js';
8
- import * as UI from '../../../ui/legacy/legacy.js';
9
- import * as Lit from '../../../ui/lit/lit.js';
10
- import * as VisualLogging from '../../../ui/visual_logging/visual_logging.js';
11
- import * as Extensions from '../extensions/extensions.js';
5
+ import * as i18n from '../../core/i18n/i18n.js';
6
+ import type * as PublicExtensions from '../../models/extensions/extensions.js';
7
+ import * as Buttons from '../../ui/components/buttons/buttons.js';
8
+ import * as UI from '../../ui/legacy/legacy.js';
9
+ import * as Lit from '../../ui/lit/lit.js';
10
+ import * as VisualLogging from '../../ui/visual_logging/visual_logging.js';
12
11
 
12
+ import * as Extensions from './extensions/extensions.js';
13
13
  import extensionViewStyles from './extensionView.css.js';
14
14
 
15
15
  const {html} = Lit;
@@ -24,7 +24,7 @@ const UIStrings = {
24
24
  */
25
25
  extension: 'Content provided by a browser extension',
26
26
  } as const;
27
- const str_ = i18n.i18n.registerUIStrings('panels/recorder/components/ExtensionView.ts', UIStrings);
27
+ const str_ = i18n.i18n.registerUIStrings('panels/recorder/ExtensionView.ts', UIStrings);
28
28
  const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
29
29
 
30
30
  export interface ViewInput {