chrome-devtools-frontend 1.0.1532884 → 1.0.1533544

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 (452) hide show
  1. package/eslint.config.mjs +89 -133
  2. package/front_end/core/host/InspectorFrontendHost.ts +1 -1
  3. package/front_end/core/host/UserMetrics.ts +0 -4
  4. package/front_end/core/i18n/i18nImpl.ts +1 -1
  5. package/front_end/core/protocol_client/InspectorBackend.ts +4 -15
  6. package/front_end/core/root/Runtime.ts +0 -2
  7. package/front_end/core/sdk/CSSPropertyParserMatchers.ts +1 -1
  8. package/front_end/core/sdk/NetworkManager.ts +85 -46
  9. package/front_end/core/sdk/NetworkRequest.ts +7 -0
  10. package/front_end/devtools_compatibility.js +941 -1596
  11. package/front_end/entrypoints/heap_snapshot_worker/HeapSnapshot.ts +1 -1
  12. package/front_end/entrypoints/inspector_main/OutermostTargetSelector.ts +1 -1
  13. package/front_end/entrypoints/inspector_main/RenderingOptions.ts +1 -1
  14. package/front_end/entrypoints/main/MainImpl.ts +4 -9
  15. package/front_end/entrypoints/node_app/NodeConnectionsPanel.ts +1 -1
  16. package/front_end/entrypoints/node_app/node_app.ts +2 -2
  17. package/front_end/generated/InspectorBackendCommands.js +0 -4
  18. package/front_end/generated/protocol-mapping.d.ts +0 -18
  19. package/front_end/generated/protocol-proxy-api.d.ts +0 -22
  20. package/front_end/generated/protocol.ts +0 -74
  21. package/front_end/global_typings/global_defs.d.ts +16 -0
  22. package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +9 -7
  23. package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.ts +1 -1
  24. package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatterBounds.snapshot.txt +1 -1
  25. package/front_end/models/ai_assistance/injected.ts +1 -1
  26. package/front_end/models/ai_assistance/performance/AIContext.ts +11 -28
  27. package/front_end/models/bindings/CompilerScriptMapping.ts +1 -1
  28. package/front_end/models/bindings/DebuggerWorkspaceBinding.ts +1 -1
  29. package/front_end/models/extensions/ExtensionAPI.ts +1 -1
  30. package/front_end/models/extensions/extensions.ts +0 -6
  31. package/front_end/models/formatter/FormatterWorkerPool.ts +1 -1
  32. package/front_end/models/issues_manager/DeprecationIssue.ts +1 -1
  33. package/front_end/models/javascript_metadata/NativeFunctions.js +8 -0
  34. package/front_end/models/stack_trace/StackTraceModel.ts +1 -1
  35. package/front_end/models/trace/lantern/testing/MetricTestUtils.ts +1 -1
  36. package/front_end/panels/accessibility/AXBreadcrumbsPane.ts +1 -1
  37. package/front_end/panels/accessibility/AccessibilityNodeView.ts +1 -1
  38. package/front_end/panels/accessibility/AccessibilitySidebarView.ts +1 -1
  39. package/front_end/panels/accessibility/AccessibilitySubPane.ts +2 -2
  40. package/front_end/panels/ai_assistance/AiAssistancePanel.ts +0 -12
  41. package/front_end/panels/ai_assistance/PatchWidget.ts +1 -1
  42. package/front_end/panels/ai_assistance/ai_assistance-meta.ts +0 -37
  43. package/front_end/panels/ai_assistance/components/ChatView.ts +2 -2
  44. package/front_end/panels/ai_assistance/components/ExploreWidget.ts +1 -1
  45. package/front_end/panels/ai_assistance/components/PerformanceAgentMarkdownRenderer.ts +1 -1
  46. package/front_end/panels/animation/AnimationTimeline.ts +2 -2
  47. package/front_end/panels/application/AppManifestView.ts +1 -1
  48. package/front_end/panels/application/ApplicationPanelSidebar.ts +1 -1
  49. package/front_end/panels/application/BackgroundServiceView.ts +13 -4
  50. package/front_end/panels/application/CookieItemsView.ts +1 -1
  51. package/front_end/panels/application/DOMStorageItemsView.ts +1 -1
  52. package/front_end/panels/application/ExtensionStorageItemsView.ts +1 -1
  53. package/front_end/panels/application/IndexedDBViews.ts +1 -1
  54. package/front_end/panels/application/InterestGroupStorageView.ts +1 -1
  55. package/front_end/panels/application/OpenedWindowDetailsView.ts +3 -3
  56. package/front_end/panels/application/ServiceWorkerCacheViews.ts +1 -1
  57. package/front_end/panels/application/ServiceWorkerUpdateCycleView.ts +1 -1
  58. package/front_end/panels/application/ServiceWorkersView.ts +1 -1
  59. package/front_end/panels/application/SharedStorageEventsView.ts +1 -1
  60. package/front_end/panels/application/StorageView.ts +1 -1
  61. package/front_end/panels/application/components/BackForwardCacheView.ts +1 -1
  62. package/front_end/panels/application/components/BounceTrackingMitigationsView.ts +1 -1
  63. package/front_end/panels/application/components/FrameDetailsView.ts +1 -1
  64. package/front_end/panels/application/components/InterestGroupAccessGrid.ts +2 -2
  65. package/front_end/panels/application/components/OriginTrialTreeView.ts +2 -2
  66. package/front_end/panels/application/components/PermissionsPolicySection.ts +1 -1
  67. package/front_end/panels/application/components/ProtocolHandlersView.ts +1 -1
  68. package/front_end/panels/application/components/ServiceWorkerRouterView.ts +1 -1
  69. package/front_end/panels/application/components/StackTrace.ts +1 -1
  70. package/front_end/panels/application/components/StorageMetadataView.ts +1 -1
  71. package/front_end/panels/application/components/TrustTokensView.ts +1 -1
  72. package/front_end/panels/application/preloading/PreloadingView.ts +3 -3
  73. package/front_end/panels/application/preloading/components/MismatchedPreloadingGrid.ts +1 -1
  74. package/front_end/panels/application/preloading/components/PreloadingDetailsReportView.ts +1 -1
  75. package/front_end/panels/application/preloading/components/PreloadingDisabledInfobar.ts +1 -1
  76. package/front_end/panels/application/preloading/components/PreloadingGrid.ts +1 -2
  77. package/front_end/panels/application/preloading/components/PreloadingMismatchedHeadersGrid.ts +1 -1
  78. package/front_end/panels/application/preloading/components/RuleSetDetailsView.ts +1 -1
  79. package/front_end/panels/application/preloading/components/RuleSetGrid.ts +1 -1
  80. package/front_end/panels/application/preloading/components/UsedPreloadingView.ts +1 -1
  81. package/front_end/panels/autofill/AutofillView.ts +1 -1
  82. package/front_end/panels/browser_debugger/DOMBreakpointsSidebarPane.ts +1 -1
  83. package/front_end/panels/browser_debugger/ObjectEventListenersSidebarPane.ts +1 -1
  84. package/front_end/panels/browser_debugger/XHRBreakpointsSidebarPane.ts +1 -1
  85. package/front_end/panels/changes/CombinedDiffView.ts +1 -1
  86. package/front_end/{models/extensions → panels/common}/ExtensionPanel.ts +8 -12
  87. package/front_end/{models/extensions → panels/common}/ExtensionServer.ts +242 -180
  88. package/front_end/{models/extensions → panels/common}/ExtensionView.ts +0 -4
  89. package/front_end/panels/common/FreDialog.ts +1 -1
  90. package/front_end/panels/common/PersistenceUtils.ts +1 -1
  91. package/front_end/panels/common/common.ts +4 -1
  92. package/front_end/panels/console/ConsoleContextSelector.ts +1 -1
  93. package/front_end/panels/console/ConsoleFormat.ts +1 -1
  94. package/front_end/panels/console/ConsoleInsightTeaser.ts +5 -3
  95. package/front_end/panels/console/ConsolePanel.ts +1 -1
  96. package/front_end/panels/console/ConsolePinPane.ts +2 -2
  97. package/front_end/panels/console/ConsolePrompt.ts +1 -1
  98. package/front_end/panels/console/ConsoleSidebar.ts +1 -1
  99. package/front_end/panels/console/ConsoleView.ts +2 -2
  100. package/front_end/panels/console/ConsoleViewMessage.ts +2 -2
  101. package/front_end/panels/console/ConsoleViewport.ts +1 -1
  102. package/front_end/panels/elements/AccessibilityTreeView.ts +1 -1
  103. package/front_end/panels/elements/ClassesPaneWidget.ts +1 -1
  104. package/front_end/panels/elements/ComputedStyleWidget.ts +1 -1
  105. package/front_end/panels/elements/ElementsPanel.ts +7 -7
  106. package/front_end/panels/elements/ElementsSidebarPane.ts +1 -1
  107. package/front_end/panels/elements/ElementsTreeElement.ts +1 -1
  108. package/front_end/panels/elements/ElementsTreeOutline.ts +2 -2
  109. package/front_end/panels/elements/MetricsSidebarPane.ts +1 -1
  110. package/front_end/panels/elements/PropertyRenderer.ts +1 -1
  111. package/front_end/panels/elements/ShortcutTreeElement.ts +1 -1
  112. package/front_end/panels/elements/StyleEditorWidget.ts +1 -1
  113. package/front_end/panels/elements/StylePropertiesSection.ts +1 -1
  114. package/front_end/panels/elements/StylePropertyTreeElement.ts +2 -2
  115. package/front_end/panels/elements/StylesSidebarPane.ts +1 -1
  116. package/front_end/panels/elements/TopLayerContainer.ts +1 -1
  117. package/front_end/panels/elements/components/AccessibilityTreeNode.ts +1 -1
  118. package/front_end/panels/elements/components/CSSHintDetailsView.ts +13 -13
  119. package/front_end/panels/elements/components/CSSPropertyDocsView.ts +1 -1
  120. package/front_end/panels/elements/components/CSSQuery.ts +1 -2
  121. package/front_end/panels/elements/components/CSSVariableValueView.ts +1 -1
  122. package/front_end/panels/elements/components/ComputedStyleProperty.ts +1 -1
  123. package/front_end/panels/elements/components/ComputedStyleTrace.ts +1 -1
  124. package/front_end/panels/elements/components/ElementsBreadcrumbs.ts +2 -2
  125. package/front_end/panels/elements/components/ElementsTreeExpandButton.ts +1 -1
  126. package/front_end/panels/elements/components/QueryContainer.ts +2 -2
  127. package/front_end/panels/elements/components/StylePropertyEditor.ts +1 -1
  128. package/front_end/panels/emulation/AdvancedApp.ts +1 -1
  129. package/front_end/panels/emulation/DeviceModeToolbar.ts +1 -1
  130. package/front_end/panels/emulation/DeviceModeView.ts +1 -1
  131. package/front_end/panels/emulation/DeviceModeWrapper.ts +1 -1
  132. package/front_end/panels/emulation/MediaQueryInspector.ts +1 -1
  133. package/front_end/panels/emulation/components/DeviceSizeInputElement.ts +1 -1
  134. package/front_end/panels/event_listeners/EventListenersView.ts +2 -2
  135. package/front_end/panels/explain/components/ConsoleInsight.ts +1 -1
  136. package/front_end/panels/issues/AffectedBlockedByResponseView.ts +1 -1
  137. package/front_end/panels/issues/AffectedCookiesView.ts +1 -1
  138. package/front_end/panels/issues/AffectedDescendantsWithinSelectElementView.ts +1 -1
  139. package/front_end/panels/issues/AffectedDirectivesView.ts +1 -1
  140. package/front_end/panels/issues/AffectedDocumentsInQuirksModeView.ts +1 -1
  141. package/front_end/panels/issues/AffectedElementsView.ts +1 -1
  142. package/front_end/panels/issues/AffectedElementsWithLowContrastView.ts +1 -1
  143. package/front_end/panels/issues/AffectedHeavyAdView.ts +1 -1
  144. package/front_end/panels/issues/AffectedMetadataAllowedSitesView.ts +1 -1
  145. package/front_end/panels/issues/AffectedPartitioningBlobURLView.ts +1 -1
  146. package/front_end/panels/issues/AffectedResourcesView.ts +1 -1
  147. package/front_end/panels/issues/AffectedSharedArrayBufferIssueDetailsView.ts +1 -1
  148. package/front_end/panels/issues/AffectedSourcesView.ts +1 -1
  149. package/front_end/panels/issues/AffectedTrackingSitesView.ts +1 -1
  150. package/front_end/panels/issues/AttributionReportingIssueDetailsView.ts +1 -1
  151. package/front_end/panels/issues/CorsIssueDetailsView.ts +1 -1
  152. package/front_end/panels/issues/GenericIssueDetailsView.ts +1 -1
  153. package/front_end/panels/issues/IssueKindView.ts +1 -1
  154. package/front_end/panels/issues/IssueView.ts +1 -1
  155. package/front_end/panels/issues/IssuesPane.ts +1 -1
  156. package/front_end/panels/issues/components/ElementsPanelLink.ts +1 -1
  157. package/front_end/panels/issues/components/HideIssuesMenu.ts +1 -1
  158. package/front_end/panels/layer_viewer/LayerDetailsView.ts +1 -1
  159. package/front_end/panels/layer_viewer/LayerTreeOutline.ts +1 -1
  160. package/front_end/panels/layer_viewer/Layers3DView.ts +1 -1
  161. package/front_end/panels/layer_viewer/PaintProfilerView.ts +1 -1
  162. package/front_end/panels/layer_viewer/TransformController.ts +1 -1
  163. package/front_end/panels/layers/LayerPaintProfilerView.ts +1 -1
  164. package/front_end/panels/layers/LayersPanel.ts +1 -1
  165. package/front_end/panels/lighthouse/LighthouseController.ts +207 -139
  166. package/front_end/panels/lighthouse/LighthousePanel.ts +1 -1
  167. package/front_end/panels/lighthouse/LighthouseReportSelector.ts +1 -1
  168. package/front_end/panels/lighthouse/LighthouseStartView.ts +1 -1
  169. package/front_end/panels/lighthouse/LighthouseStatusView.ts +1 -1
  170. package/front_end/panels/lighthouse/LighthouseTimespanView.ts +1 -1
  171. package/front_end/panels/lighthouse/RadioSetting.ts +1 -1
  172. package/front_end/panels/linear_memory_inspector/LinearMemoryInspectorPane.ts +1 -1
  173. package/front_end/panels/linear_memory_inspector/components/LinearMemoryHighlightChipList.ts +1 -1
  174. package/front_end/panels/linear_memory_inspector/components/LinearMemoryNavigator.ts +1 -2
  175. package/front_end/panels/linear_memory_inspector/components/LinearMemoryValueInterpreter.ts +1 -1
  176. package/front_end/panels/linear_memory_inspector/components/LinearMemoryViewer.ts +1 -1
  177. package/front_end/panels/linear_memory_inspector/components/ValueInterpreterDisplay.ts +1 -1
  178. package/front_end/panels/linear_memory_inspector/components/ValueInterpreterSettings.ts +1 -2
  179. package/front_end/panels/media/EventDisplayTable.ts +1 -1
  180. package/front_end/panels/media/EventTimelineView.ts +1 -1
  181. package/front_end/panels/media/MainView.ts +1 -1
  182. package/front_end/panels/media/PlayerListView.ts +1 -1
  183. package/front_end/panels/media/PlayerMessagesView.ts +1 -1
  184. package/front_end/panels/media/PlayerPropertiesView.ts +1 -1
  185. package/front_end/panels/media/TickingFlameChart.ts +1 -1
  186. package/front_end/panels/mobile_throttling/CalibrationController.ts +1 -1
  187. package/front_end/panels/mobile_throttling/ThrottlingManager.ts +1 -1
  188. package/front_end/panels/mobile_throttling/ThrottlingSettingsTab.ts +1 -1
  189. package/front_end/panels/network/BinaryResourceView.ts +1 -1
  190. package/front_end/panels/network/EventSourceMessagesView.ts +1 -1
  191. package/front_end/panels/network/NetworkConfigView.ts +1 -1
  192. package/front_end/panels/network/NetworkDataGridNode.ts +21 -2
  193. package/front_end/panels/network/NetworkItemView.ts +1 -1
  194. package/front_end/panels/network/NetworkLogView.ts +2 -2
  195. package/front_end/panels/network/NetworkLogViewColumns.ts +1 -1
  196. package/front_end/panels/network/NetworkManageCustomHeadersView.ts +1 -1
  197. package/front_end/panels/network/NetworkOverview.ts +1 -1
  198. package/front_end/panels/network/NetworkPanel.ts +4 -4
  199. package/front_end/panels/network/NetworkWaterfallColumn.ts +1 -1
  200. package/front_end/panels/network/RequestConditionsDrawer.ts +29 -5
  201. package/front_end/panels/network/RequestCookiesView.ts +1 -1
  202. package/front_end/panels/network/RequestInitiatorView.ts +1 -1
  203. package/front_end/panels/network/RequestPayloadView.ts +3 -4
  204. package/front_end/panels/network/RequestPreviewView.ts +1 -1
  205. package/front_end/panels/network/RequestTimingView.ts +1 -1
  206. package/front_end/panels/network/ResourceChunkView.ts +1 -1
  207. package/front_end/panels/network/ResourceDirectSocketChunkView.ts +1 -1
  208. package/front_end/panels/network/ResourceWebSocketFrameView.ts +1 -1
  209. package/front_end/panels/network/SignedExchangeInfoView.ts +1 -1
  210. package/front_end/panels/network/components/DirectSocketConnectionView.ts +1 -1
  211. package/front_end/panels/network/components/EditableSpan.ts +1 -1
  212. package/front_end/panels/network/components/HeaderSectionRow.ts +1 -1
  213. package/front_end/panels/network/components/RequestHeaderSection.ts +1 -1
  214. package/front_end/panels/network/components/RequestHeadersView.ts +1 -1
  215. package/front_end/panels/network/components/RequestTrustTokensView.ts +1 -1
  216. package/front_end/panels/network/components/ResponseHeaderSection.ts +1 -1
  217. package/front_end/panels/network/network-meta.ts +2 -2
  218. package/front_end/panels/network/networkLogView.css +24 -0
  219. package/front_end/panels/profiler/HeapDetachedElementsDataGrid.ts +1 -1
  220. package/front_end/panels/profiler/HeapDetachedElementsView.ts +1 -1
  221. package/front_end/panels/profiler/HeapProfileView.ts +1 -1
  222. package/front_end/panels/profiler/HeapSnapshotGridNodes.ts +1 -1
  223. package/front_end/panels/profiler/HeapSnapshotView.ts +1 -1
  224. package/front_end/panels/profiler/HeapTimelineOverview.ts +1 -1
  225. package/front_end/panels/profiler/IsolateSelector.ts +1 -1
  226. package/front_end/panels/profiler/LiveHeapProfileView.ts +1 -1
  227. package/front_end/panels/profiler/ProfileDataGrid.ts +1 -1
  228. package/front_end/panels/profiler/ProfileFlameChartDataProvider.ts +1 -1
  229. package/front_end/panels/profiler/ProfileLauncherView.ts +1 -1
  230. package/front_end/panels/profiler/ProfileSidebarTreeElement.ts +1 -1
  231. package/front_end/panels/profiler/ProfileView.ts +1 -1
  232. package/front_end/panels/profiler/ProfilesPanel.ts +2 -2
  233. package/front_end/panels/protocol_monitor/ProtocolMonitor.ts +1 -1
  234. package/front_end/panels/recorder/RecorderPanel.ts +1 -1
  235. package/front_end/panels/recorder/components/CreateRecordingView.ts +1 -1
  236. package/front_end/panels/recorder/components/ExtensionView.ts +1 -1
  237. package/front_end/panels/recorder/components/RecordingView.ts +2 -2
  238. package/front_end/panels/recorder/components/ReplaySection.ts +1 -1
  239. package/front_end/panels/recorder/components/SelectButton.ts +1 -1
  240. package/front_end/panels/recorder/components/TimelineSection.ts +1 -1
  241. package/front_end/panels/recorder/extensions/ExtensionManager.ts +1 -1
  242. package/front_end/panels/recorder/models/ScreenshotUtils.ts +1 -1
  243. package/front_end/panels/screencast/ScreencastApp.ts +1 -1
  244. package/front_end/panels/screencast/ScreencastView.ts +1 -1
  245. package/front_end/panels/security/CookieControlsView.ts +1 -1
  246. package/front_end/panels/security/CookieReportView.ts +1 -1
  247. package/front_end/panels/security/IPProtectionView.ts +1 -1
  248. package/front_end/panels/security/SecurityPanel.ts +2 -2
  249. package/front_end/panels/security/SecurityPanelSidebar.ts +1 -1
  250. package/front_end/panels/sensors/LocationsSettingsTab.ts +1 -1
  251. package/front_end/panels/sensors/SensorsView.ts +1 -1
  252. package/front_end/panels/settings/AISettingsTab.ts +1 -1
  253. package/front_end/panels/settings/FrameworkIgnoreListSettingsTab.ts +1 -1
  254. package/front_end/panels/settings/KeybindsSettingsTab.ts +1 -1
  255. package/front_end/panels/settings/SettingsScreen.ts +2 -2
  256. package/front_end/panels/settings/components/SyncSection.ts +1 -1
  257. package/front_end/panels/settings/emulation/DevicesSettingsTab.ts +1 -1
  258. package/front_end/panels/settings/emulation/components/UserAgentClientHintsForm.ts +1 -1
  259. package/front_end/panels/sources/BreakpointEditDialog.ts +1 -1
  260. package/front_end/panels/sources/CSSPlugin.ts +1 -1
  261. package/front_end/panels/sources/CallStackSidebarPane.ts +1 -1
  262. package/front_end/panels/sources/CoveragePlugin.ts +1 -1
  263. package/front_end/panels/sources/DebuggerPausedMessage.ts +1 -1
  264. package/front_end/panels/sources/DebuggerPlugin.ts +1 -1
  265. package/front_end/panels/sources/InplaceFormatterEditorAction.ts +1 -1
  266. package/front_end/panels/sources/NavigatorView.ts +1 -1
  267. package/front_end/panels/sources/OpenFileQuickOpen.ts +1 -1
  268. package/front_end/panels/sources/PersistenceActions.ts +1 -1
  269. package/front_end/panels/sources/ProfilePlugin.ts +3 -2
  270. package/front_end/panels/sources/ResourceOriginPlugin.ts +1 -1
  271. package/front_end/panels/sources/ScopeChainSidebarPane.ts +1 -1
  272. package/front_end/panels/sources/SourcesNavigator.ts +1 -1
  273. package/front_end/panels/sources/SourcesPanel.ts +7 -7
  274. package/front_end/panels/sources/SourcesView.ts +1 -1
  275. package/front_end/panels/sources/TabbedEditorContainer.ts +4 -5
  276. package/front_end/panels/sources/ThreadsSidebarPane.ts +1 -1
  277. package/front_end/panels/sources/UISourceCodeFrame.ts +2 -2
  278. package/front_end/panels/sources/WatchExpressionsSidebarPane.ts +2 -2
  279. package/front_end/panels/sources/components/HeadersView.ts +2 -2
  280. package/front_end/panels/timeline/CLSLinkifier.ts +1 -1
  281. package/front_end/panels/timeline/CompatibilityTracksAppender.ts +1 -1
  282. package/front_end/panels/timeline/CountersGraph.ts +1 -1
  283. package/front_end/panels/timeline/EventsTimelineTreeView.ts +1 -1
  284. package/front_end/panels/timeline/LayoutShiftsTrackAppender.ts +1 -1
  285. package/front_end/panels/timeline/StatusDialog.ts +1 -1
  286. package/front_end/panels/timeline/ThirdPartyTreeView.ts +1 -1
  287. package/front_end/panels/timeline/TimelineController.ts +3 -3
  288. package/front_end/panels/timeline/TimelineDetailsView.ts +1 -1
  289. package/front_end/panels/timeline/TimelineEventOverview.ts +1 -1
  290. package/front_end/panels/timeline/TimelineFlameChartDataProvider.ts +1 -1
  291. package/front_end/panels/timeline/TimelineFlameChartView.ts +1 -1
  292. package/front_end/panels/timeline/TimelineHistoryManager.ts +1 -1
  293. package/front_end/panels/timeline/TimelineLayersView.ts +1 -1
  294. package/front_end/panels/timeline/TimelineMiniMap.ts +1 -1
  295. package/front_end/panels/timeline/TimelinePaintProfilerView.ts +1 -1
  296. package/front_end/panels/timeline/TimelinePanel.ts +1 -1
  297. package/front_end/panels/timeline/TimelineSelectorStatsView.ts +1 -1
  298. package/front_end/panels/timeline/TimelineTreeView.ts +1 -1
  299. package/front_end/panels/timeline/TimelineUIUtils.ts +4 -4
  300. package/front_end/panels/timeline/components/BreadcrumbsUI.ts +1 -1
  301. package/front_end/panels/timeline/components/CPUThrottlingSelector.ts +1 -1
  302. package/front_end/panels/timeline/components/DetailsView.ts +1 -1
  303. package/front_end/panels/timeline/components/ExportTraceOptions.ts +1 -1
  304. package/front_end/panels/timeline/components/FieldSettingsDialog.ts +1 -1
  305. package/front_end/panels/timeline/components/IgnoreListSetting.ts +2 -2
  306. package/front_end/panels/timeline/components/InteractionBreakdown.ts +1 -1
  307. package/front_end/panels/timeline/components/LiveMetricsView.ts +6 -6
  308. package/front_end/panels/timeline/components/MetricCard.ts +1 -1
  309. package/front_end/panels/timeline/components/NetworkRequestTooltip.ts +1 -1
  310. package/front_end/panels/timeline/components/NetworkThrottlingSelector.ts +3 -3
  311. package/front_end/panels/timeline/components/OriginMap.ts +2 -2
  312. package/front_end/panels/timeline/components/Sidebar.ts +1 -1
  313. package/front_end/panels/timeline/components/SidebarAnnotationsTab.ts +1 -1
  314. package/front_end/panels/timeline/components/SidebarInsightsTab.ts +1 -1
  315. package/front_end/panels/timeline/components/SidebarSingleInsightSet.ts +1 -1
  316. package/front_end/panels/timeline/components/TimelineSummary.ts +1 -1
  317. package/front_end/panels/timeline/components/Utils.ts +1 -1
  318. package/front_end/panels/timeline/components/insights/BaseInsightComponent.ts +5 -6
  319. package/front_end/panels/timeline/components/insights/Checklist.ts +1 -1
  320. package/front_end/panels/timeline/components/insights/EventRef.ts +1 -1
  321. package/front_end/panels/timeline/components/insights/LCPDiscovery.ts +2 -2
  322. package/front_end/panels/timeline/components/insights/NodeLink.ts +1 -1
  323. package/front_end/panels/timeline/components/insights/Table.ts +1 -1
  324. package/front_end/panels/timeline/overlays/OverlaysImpl.ts +1 -1
  325. package/front_end/panels/timeline/overlays/components/EntriesLinkOverlay.ts +1 -1
  326. package/front_end/panels/timeline/overlays/components/EntryLabelOverlay.ts +1 -1
  327. package/front_end/panels/timeline/overlays/components/TimeRangeOverlay.ts +1 -1
  328. package/front_end/panels/timeline/overlays/components/TimespanBreakdownOverlay.ts +1 -1
  329. package/front_end/panels/utils/utils.ts +25 -5
  330. package/front_end/panels/webauthn/WebauthnPane.ts +1 -1
  331. package/front_end/third_party/chromium/README.chromium +1 -1
  332. package/front_end/third_party/lighthouse/README.chromium +2 -2
  333. package/front_end/third_party/lighthouse/lighthouse-dt-bundle.js +474 -472
  334. package/front_end/tsconfig.compatibility.json +8 -0
  335. package/front_end/tsconfig.json +3 -1
  336. package/front_end/ui/components/adorners/Adorner.ts +1 -1
  337. package/front_end/ui/components/buttons/Button.ts +1 -1
  338. package/front_end/ui/components/buttons/FloatingButton.ts +1 -1
  339. package/front_end/ui/components/cards/Card.ts +1 -1
  340. package/front_end/ui/components/chrome_link/ChromeLink.ts +2 -2
  341. package/front_end/ui/components/code_highlighter/CodeHighlighter.ts +1 -1
  342. package/front_end/ui/components/dialogs/ButtonDialog.ts +1 -1
  343. package/front_end/ui/components/dialogs/Dialog.ts +1 -1
  344. package/front_end/ui/components/dialogs/ShortcutDialog.ts +1 -1
  345. package/front_end/ui/components/diff_view/DiffView.ts +1 -1
  346. package/front_end/ui/components/docs/create_breadcrumbs.ts +1 -1
  347. package/front_end/ui/components/expandable_list/ExpandableList.ts +1 -2
  348. package/front_end/ui/components/icon_button/FileSourceIcon.ts +1 -1
  349. package/front_end/ui/components/icon_button/Icon.ts +1 -1
  350. package/front_end/ui/components/icon_button/IconButton.ts +1 -1
  351. package/front_end/ui/components/issue_counter/IssueCounter.ts +1 -1
  352. package/front_end/ui/components/issue_counter/IssueLinkIcon.ts +1 -1
  353. package/front_end/ui/components/legacy_wrapper/LegacyWrapper.ts +1 -1
  354. package/front_end/ui/components/linkifier/LinkifierImpl.ts +2 -2
  355. package/front_end/ui/components/markdown_view/CodeBlock.ts +1 -1
  356. package/front_end/ui/components/markdown_view/MarkdownImage.ts +1 -1
  357. package/front_end/ui/components/markdown_view/MarkdownLink.ts +1 -2
  358. package/front_end/ui/components/markdown_view/MarkdownView.ts +3 -5
  359. package/front_end/ui/components/menus/Menu.ts +1 -1
  360. package/front_end/ui/components/menus/SelectMenu.ts +5 -5
  361. package/front_end/ui/components/node_text/NodeText.ts +1 -2
  362. package/front_end/ui/components/panel_feedback/FeedbackButton.ts +1 -1
  363. package/front_end/ui/components/panel_feedback/PanelFeedback.ts +1 -1
  364. package/front_end/ui/components/panel_feedback/PreviewToggle.ts +1 -1
  365. package/front_end/ui/components/panel_introduction_steps/PanelIntroductionSteps.ts +1 -1
  366. package/front_end/ui/components/report_view/ReportView.ts +1 -1
  367. package/front_end/ui/components/request_link_icon/RequestLinkIcon.ts +1 -1
  368. package/front_end/ui/components/settings/SettingCheckbox.ts +1 -1
  369. package/front_end/ui/components/settings/SettingDeprecationWarning.ts +1 -1
  370. package/front_end/ui/components/snackbars/Snackbar.ts +1 -1
  371. package/front_end/ui/components/spinners/Spinner.ts +1 -1
  372. package/front_end/ui/components/srgb_overlay/SrgbOverlay.ts +1 -1
  373. package/front_end/ui/components/survey_link/SurveyLink.ts +1 -1
  374. package/front_end/ui/components/switch/SwitchImpl.ts +3 -3
  375. package/front_end/ui/components/text_editor/AiCodeCompletionTeaserPlaceholder.ts +1 -1
  376. package/front_end/ui/components/text_editor/config.ts +1 -1
  377. package/front_end/ui/components/text_editor/javascript.ts +1 -1
  378. package/front_end/ui/components/text_prompt/TextPrompt.ts +1 -1
  379. package/front_end/ui/components/tooltips/Tooltip.ts +1 -1
  380. package/front_end/ui/components/tree_outline/TreeOutline.ts +1 -1
  381. package/front_end/ui/legacy/ContextMenu.ts +2 -2
  382. package/front_end/ui/legacy/Dialog.ts +1 -1
  383. package/front_end/ui/legacy/DropTarget.ts +1 -1
  384. package/front_end/ui/legacy/FilterBar.ts +1 -1
  385. package/front_end/ui/legacy/Fragment.ts +1 -1
  386. package/front_end/ui/legacy/GlassPane.ts +1 -1
  387. package/front_end/ui/legacy/Infobar.ts +1 -1
  388. package/front_end/ui/legacy/InspectorView.ts +1 -1
  389. package/front_end/ui/legacy/ListControl.ts +1 -1
  390. package/front_end/ui/legacy/ListWidget.ts +2 -2
  391. package/front_end/ui/legacy/Panel.ts +1 -1
  392. package/front_end/ui/legacy/ReportView.ts +1 -1
  393. package/front_end/ui/legacy/RootView.ts +1 -1
  394. package/front_end/ui/legacy/SearchableView.ts +1 -1
  395. package/front_end/ui/legacy/SettingsUI.ts +1 -1
  396. package/front_end/ui/legacy/SoftContextMenu.ts +1 -1
  397. package/front_end/ui/legacy/SoftDropDown.ts +1 -1
  398. package/front_end/ui/legacy/SplitWidget.ts +1 -1
  399. package/front_end/ui/legacy/SuggestBox.ts +1 -1
  400. package/front_end/ui/legacy/TabbedPane.ts +1 -1
  401. package/front_end/ui/legacy/TextPrompt.ts +1 -1
  402. package/front_end/ui/legacy/Toolbar.ts +1 -1
  403. package/front_end/ui/legacy/Treeoutline.ts +2 -2
  404. package/front_end/ui/legacy/UIUtils.ts +2 -2
  405. package/front_end/ui/legacy/ViewManager.ts +1 -1
  406. package/front_end/ui/legacy/Widget.ts +1 -1
  407. package/front_end/ui/legacy/components/color_picker/ContrastDetails.ts +1 -1
  408. package/front_end/ui/legacy/components/color_picker/Spectrum.ts +1 -1
  409. package/front_end/ui/legacy/components/cookie_table/CookiesTable.ts +2 -2
  410. package/front_end/ui/legacy/components/data_grid/DataGrid.ts +1 -1
  411. package/front_end/ui/legacy/components/data_grid/DataGridElement.ts +1 -1
  412. package/front_end/ui/legacy/components/data_grid/ShowMoreDataGridNode.ts +1 -1
  413. package/front_end/ui/legacy/components/inline_editor/AnimationTimingUI.ts +1 -1
  414. package/front_end/ui/legacy/components/inline_editor/BezierEditor.ts +1 -1
  415. package/front_end/ui/legacy/components/inline_editor/CSSAngle.ts +1 -1
  416. package/front_end/ui/legacy/components/inline_editor/CSSAngleEditor.ts +1 -1
  417. package/front_end/ui/legacy/components/inline_editor/CSSAngleSwatch.ts +1 -2
  418. package/front_end/ui/legacy/components/inline_editor/CSSShadowEditor.ts +1 -1
  419. package/front_end/ui/legacy/components/inline_editor/ColorMixSwatch.ts +1 -1
  420. package/front_end/ui/legacy/components/inline_editor/ColorSwatch.ts +1 -1
  421. package/front_end/ui/legacy/components/inline_editor/FontEditor.ts +1 -1
  422. package/front_end/ui/legacy/components/inline_editor/LinkSwatch.ts +1 -1
  423. package/front_end/ui/legacy/components/inline_editor/Swatches.ts +1 -1
  424. package/front_end/ui/legacy/components/object_ui/CustomPreviewComponent.ts +1 -1
  425. package/front_end/ui/legacy/components/object_ui/ObjectPopoverHelper.ts +1 -1
  426. package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +1 -1
  427. package/front_end/ui/legacy/components/object_ui/RemoteObjectPreviewFormatter.ts +1 -1
  428. package/front_end/ui/legacy/components/perf_ui/BrickBreaker.ts +1 -1
  429. package/front_end/ui/legacy/components/perf_ui/ChartViewport.ts +1 -1
  430. package/front_end/ui/legacy/components/perf_ui/FilmStripView.ts +1 -1
  431. package/front_end/ui/legacy/components/perf_ui/FlameChart.ts +1 -1
  432. package/front_end/ui/legacy/components/perf_ui/OverviewGrid.ts +1 -1
  433. package/front_end/ui/legacy/components/perf_ui/PieChart.ts +1 -1
  434. package/front_end/ui/legacy/components/perf_ui/TimelineGrid.ts +1 -1
  435. package/front_end/ui/legacy/components/perf_ui/TimelineOverviewPane.ts +1 -1
  436. package/front_end/ui/legacy/components/quick_open/FilteredListWidget.ts +1 -1
  437. package/front_end/ui/legacy/components/quick_open/HelpQuickOpen.ts +2 -2
  438. package/front_end/ui/legacy/components/source_frame/FontView.ts +1 -1
  439. package/front_end/ui/legacy/components/source_frame/ImageView.ts +1 -1
  440. package/front_end/ui/legacy/components/source_frame/JSONView.ts +1 -1
  441. package/front_end/ui/legacy/components/source_frame/ResourceSourceFrame.ts +2 -2
  442. package/front_end/ui/legacy/components/source_frame/SourceFrame.ts +1 -1
  443. package/front_end/ui/legacy/components/source_frame/StreamingContentHexView.ts +1 -1
  444. package/front_end/ui/legacy/components/utils/ImagePreview.ts +1 -1
  445. package/front_end/ui/legacy/components/utils/JSPresentationUtils.ts +1 -1
  446. package/front_end/ui/legacy/components/utils/Linkifier.ts +1 -1
  447. package/front_end/ui/legacy/theme_support/ThemeSupport.ts +1 -1
  448. package/front_end/ui/lit/i18n-template.ts +1 -1
  449. package/front_end/ui/visual_logging/Debugging.ts +1 -1
  450. package/front_end/ui/visual_logging/KnownContextValues.ts +0 -2
  451. package/mcp/mcp.ts +7 -2
  452. package/package.json +1 -1
@@ -11,7 +11,7 @@ import * as Protocol from '../../generated/protocol.js';
11
11
  import * as EmulationModel from '../../models/emulation/emulation.js';
12
12
  import * as Emulation from '../emulation/emulation.js';
13
13
 
14
- import type {LighthouseRun, ProtocolService} from './LighthouseProtocolService.js';
14
+ import type {LighthouseRun as LighthouseRunType, ProtocolService} from './LighthouseProtocolService.js';
15
15
  import type {RunnerResult} from './LighthouseReporterTypes.js';
16
16
 
17
17
  const UIStrings = {
@@ -183,13 +183,14 @@ const str_ = i18n.i18n.registerUIStrings('panels/lighthouse/LighthouseController
183
183
  const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
184
184
  const i18nLazyString = i18n.i18n.getLazilyComputedLocalizedString.bind(undefined, str_);
185
185
 
186
- export class LighthouseController extends Common.ObjectWrapper.ObjectWrapper<EventTypes> implements
187
- SDK.TargetManager.SDKModelObserver<SDK.ServiceWorkerManager.ServiceWorkerManager> {
188
- private readonly protocolService: ProtocolService;
189
- private manager?: SDK.ServiceWorkerManager.ServiceWorkerManager|null;
190
- private serviceWorkerListeners?: Common.EventTarget.EventDescriptor[];
191
- private inspectedURL?: Platform.DevToolsPath.UrlString;
192
- private currentLighthouseRun?: LighthouseRun;
186
+ class LighthouseRun {
187
+ readonly controller: LighthouseController;
188
+ readonly inspectedURL: Platform.DevToolsPath.UrlString;
189
+ readonly categoryIDs: string[];
190
+ readonly flags: {
191
+ formFactor: (string|undefined),
192
+ mode: string,
193
+ };
193
194
  private emulationStateBefore?: {
194
195
  emulation: {
195
196
  type: EmulationModel.DeviceModeModel.Type,
@@ -202,6 +203,164 @@ export class LighthouseController extends Common.ObjectWrapper.ObjectWrapper<Eve
202
203
  },
203
204
  network: {conditions: SDK.NetworkManager.Conditions},
204
205
  };
206
+ private readonly protocolService: ProtocolService;
207
+ #isRunning: boolean;
208
+ #cancelPromise: Promise<void>|null = null;
209
+
210
+ constructor(
211
+ controller: LighthouseController, protocolService: ProtocolService, inspectedURL: Platform.DevToolsPath.UrlString,
212
+ categoryIDs: string[], flags: {formFactor: (string|undefined), mode: string}) {
213
+ this.controller = controller;
214
+ this.protocolService = protocolService;
215
+ this.inspectedURL = inspectedURL;
216
+ this.categoryIDs = categoryIDs;
217
+ this.flags = flags;
218
+ this.#isRunning = false;
219
+ }
220
+
221
+ isRunning(): boolean {
222
+ return this.#isRunning;
223
+ }
224
+
225
+ async start(): Promise<void> {
226
+ this.#isRunning = true;
227
+ try {
228
+ await this.setupEmulationAndProtocolConnection();
229
+ if (this.flags.mode === 'timespan') {
230
+ await this.protocolService.startTimespan(
231
+ {inspectedURL: this.inspectedURL, categoryIDs: this.categoryIDs, flags: this.flags});
232
+ }
233
+ } catch (err) {
234
+ await this.cancel();
235
+ throw err;
236
+ }
237
+ }
238
+
239
+ async collect(): Promise<RunnerResult> {
240
+ try {
241
+ const lighthouseResponse = await this.protocolService.collectLighthouseResults(
242
+ {inspectedURL: this.inspectedURL, categoryIDs: this.categoryIDs, flags: this.flags});
243
+ if (!lighthouseResponse) {
244
+ throw new Error('No Lighthouse response');
245
+ }
246
+
247
+ if (lighthouseResponse.fatal) {
248
+ const error = new Error(lighthouseResponse.message);
249
+ error.stack = lighthouseResponse.stack;
250
+ throw error;
251
+ }
252
+ return lighthouseResponse;
253
+ } finally {
254
+ await this.cancel();
255
+ }
256
+ }
257
+
258
+ async cancel(): Promise<void> {
259
+ if (!this.#cancelPromise) {
260
+ this.#isRunning = false;
261
+ this.#cancelPromise = this.restoreEmulationAndProtocolConnection();
262
+ }
263
+
264
+ return await this.#cancelPromise;
265
+ }
266
+
267
+ /**
268
+ * We set the device emulation on the DevTools-side for two reasons:
269
+ * 1. To workaround some odd device metrics emulation bugs like occuluding viewports
270
+ * 2. To get the attractive device outline
271
+ */
272
+ private async setupEmulationAndProtocolConnection(): Promise<void> {
273
+ const emulationModel = EmulationModel.DeviceModeModel.DeviceModeModel.instance();
274
+ this.emulationStateBefore = {
275
+ emulation: {
276
+ type: emulationModel.type(),
277
+ enabled: emulationModel.enabledSetting().get(),
278
+ outlineEnabled: emulationModel.deviceOutlineSetting().get(),
279
+ toolbarControlsEnabled: emulationModel.toolbarControlsEnabledSetting().get(),
280
+ scale: emulationModel.scaleSetting().get(),
281
+ device: emulationModel.device(),
282
+ mode: emulationModel.mode(),
283
+ },
284
+ network: {conditions: SDK.NetworkManager.MultitargetNetworkManager.instance().networkConditions()},
285
+ };
286
+
287
+ emulationModel.toolbarControlsEnabledSetting().set(false);
288
+ if ('formFactor' in this.flags && this.flags.formFactor === 'desktop') {
289
+ emulationModel.enabledSetting().set(false);
290
+ emulationModel.emulate(EmulationModel.DeviceModeModel.Type.None, null, null);
291
+ } else if (this.flags.formFactor === 'mobile') {
292
+ emulationModel.enabledSetting().set(true);
293
+ emulationModel.deviceOutlineSetting().set(true);
294
+
295
+ for (const device of EmulationModel.EmulatedDevices.EmulatedDevicesList.instance().standard()) {
296
+ if (device.title === 'Moto G Power') {
297
+ emulationModel.emulate(EmulationModel.DeviceModeModel.Type.Device, device, device.modes[0], 1);
298
+ }
299
+ }
300
+ }
301
+
302
+ await this.protocolService.attach();
303
+ }
304
+
305
+ private async restoreEmulationAndProtocolConnection(): Promise<void> {
306
+ await this.protocolService.detach();
307
+
308
+ if (this.emulationStateBefore) {
309
+ const emulationModel = EmulationModel.DeviceModeModel.DeviceModeModel.instance();
310
+
311
+ // Detaching a session after overriding device metrics will prevent other sessions from overriding device metrics in the future.
312
+ // A workaround is to call "Emulation.clearDeviceMetricOverride" which is the result of the next line.
313
+ // https://bugs.chromium.org/p/chromium/issues/detail?id=1337089
314
+ emulationModel.emulate(EmulationModel.DeviceModeModel.Type.None, null, null);
315
+
316
+ const {type, enabled, outlineEnabled, toolbarControlsEnabled, scale, device, mode} =
317
+ this.emulationStateBefore.emulation;
318
+ emulationModel.enabledSetting().set(enabled);
319
+ emulationModel.deviceOutlineSetting().set(outlineEnabled);
320
+ emulationModel.toolbarControlsEnabledSetting().set(toolbarControlsEnabled);
321
+
322
+ // `emulate` will ignore the `scale` parameter for responsive emulation.
323
+ // In this case we can just set it here.
324
+ if (type === EmulationModel.DeviceModeModel.Type.Responsive) {
325
+ emulationModel.scaleSetting().set(scale);
326
+ }
327
+
328
+ emulationModel.emulate(type, device, mode, scale);
329
+
330
+ SDK.NetworkManager.MultitargetNetworkManager.instance().setNetworkConditions(
331
+ this.emulationStateBefore.network.conditions);
332
+ delete this.emulationStateBefore;
333
+ }
334
+
335
+ Emulation.InspectedPagePlaceholder.InspectedPagePlaceholder.instance().update(true);
336
+
337
+ const mainTarget = SDK.TargetManager.TargetManager.instance().primaryPageTarget();
338
+ if (!mainTarget) {
339
+ return;
340
+ }
341
+ const resourceTreeModel = mainTarget.model(SDK.ResourceTreeModel.ResourceTreeModel);
342
+ if (!resourceTreeModel) {
343
+ return;
344
+ }
345
+
346
+ // Reload to reset page state after a navigation.
347
+ // We want to retain page state for timespan and snapshot modes.
348
+ const mode = this.flags.mode;
349
+ if (mode === 'navigation') {
350
+ const inspectedURL = await this.controller.getInspectedURL();
351
+ await resourceTreeModel.navigate(inspectedURL);
352
+ }
353
+ }
354
+ }
355
+
356
+ export class LighthouseController extends Common.ObjectWrapper.ObjectWrapper<EventTypes> implements
357
+ SDK.TargetManager.SDKModelObserver<SDK.ServiceWorkerManager.ServiceWorkerManager> {
358
+ private readonly protocolService: ProtocolService;
359
+ private manager?: SDK.ServiceWorkerManager.ServiceWorkerManager|null;
360
+ private serviceWorkerListeners?: Common.EventTarget.EventDescriptor[];
361
+ private inspectedURL?: Platform.DevToolsPath.UrlString;
362
+ private currentLighthouseRun?: LighthouseRun;
363
+ private lastAction: Promise<void>|null = null;
205
364
 
206
365
  constructor(protocolService: ProtocolService) {
207
366
  super();
@@ -382,8 +541,16 @@ export class LighthouseController extends Common.ObjectWrapper.ObjectWrapper<Eve
382
541
  return navigationEntry.url as Platform.DevToolsPath.UrlString;
383
542
  }
384
543
 
385
- getCurrentRun(): LighthouseRun|undefined {
386
- return this.currentLighthouseRun;
544
+ getCurrentRun(): LighthouseRunType|undefined {
545
+ if (!this.currentLighthouseRun?.isRunning()) {
546
+ return;
547
+ }
548
+
549
+ return {
550
+ inspectedURL: this.currentLighthouseRun.inspectedURL,
551
+ categoryIDs: this.currentLighthouseRun.categoryIDs,
552
+ flags: this.currentLighthouseRun.flags,
553
+ };
387
554
  }
388
555
 
389
556
  getFlags(): {
@@ -473,152 +640,53 @@ export class LighthouseController extends Common.ObjectWrapper.ObjectWrapper<Eve
473
640
  }
474
641
 
475
642
  async startLighthouse(): Promise<void> {
476
- try {
643
+ if (this.lastAction) {
644
+ await this.lastAction;
645
+ }
646
+
647
+ this.lastAction = new Promise(async resolve => {
648
+ if (this.currentLighthouseRun) {
649
+ await this.currentLighthouseRun.cancel();
650
+ this.currentLighthouseRun = undefined;
651
+ }
652
+
477
653
  const inspectedURL = await this.getInspectedURL({force: true});
478
654
  const categoryIDs = this.getCategoryIDs();
479
655
  const flags = this.getFlags();
480
656
 
481
657
  this.recordMetrics(flags, categoryIDs);
482
658
 
483
- this.currentLighthouseRun = {inspectedURL, categoryIDs, flags};
484
-
485
- await this.setupEmulationAndProtocolConnection();
486
-
487
- if (flags.mode === 'timespan') {
488
- await this.protocolService.startTimespan(this.currentLighthouseRun);
489
- }
490
- } catch (err) {
491
- await this.restoreEmulationAndProtocolConnection();
492
- throw err;
493
- }
659
+ this.currentLighthouseRun = new LighthouseRun(this, this.protocolService, inspectedURL, categoryIDs, flags);
660
+ await this.currentLighthouseRun.start();
661
+ resolve();
662
+ });
663
+ return await this.lastAction;
494
664
  }
495
665
 
496
666
  async collectLighthouseResults(): Promise<RunnerResult> {
497
- try {
498
- if (!this.currentLighthouseRun) {
499
- throw new Error('Lighthouse is not started');
500
- }
501
-
502
- const lighthouseResponse = await this.protocolService.collectLighthouseResults(this.currentLighthouseRun);
503
- if (!lighthouseResponse) {
504
- throw new Error('Auditing failed to produce a result');
505
- }
506
-
507
- if (lighthouseResponse.fatal) {
508
- const error = new Error(lighthouseResponse.message);
509
- error.stack = lighthouseResponse.stack;
510
- throw error;
511
- }
512
-
513
- Host.userMetrics.actionTaken(Host.UserMetrics.Action.LighthouseFinished);
514
-
515
- await this.restoreEmulationAndProtocolConnection();
516
- return lighthouseResponse;
517
- } catch (err) {
518
- await this.restoreEmulationAndProtocolConnection();
519
- throw err;
520
- } finally {
521
- this.currentLighthouseRun = undefined;
667
+ if (!this.currentLighthouseRun) {
668
+ throw new Error('Lighthouse is not started');
522
669
  }
523
- }
524
670
 
525
- async cancelLighthouse(): Promise<void> {
526
- await this.restoreEmulationAndProtocolConnection();
671
+ const lighthouseResponse = await this.currentLighthouseRun.collect();
672
+ Host.userMetrics.actionTaken(Host.UserMetrics.Action.LighthouseFinished);
527
673
  this.currentLighthouseRun = undefined;
674
+ return lighthouseResponse;
528
675
  }
529
676
 
530
- /**
531
- * We set the device emulation on the DevTools-side for two reasons:
532
- * 1. To workaround some odd device metrics emulation bugs like occuluding viewports
533
- * 2. To get the attractive device outline
534
- */
535
- private async setupEmulationAndProtocolConnection(): Promise<void> {
536
- const flags = this.getFlags();
537
-
538
- const emulationModel = EmulationModel.DeviceModeModel.DeviceModeModel.instance();
539
- this.emulationStateBefore = {
540
- emulation: {
541
- type: emulationModel.type(),
542
- enabled: emulationModel.enabledSetting().get(),
543
- outlineEnabled: emulationModel.deviceOutlineSetting().get(),
544
- toolbarControlsEnabled: emulationModel.toolbarControlsEnabledSetting().get(),
545
- scale: emulationModel.scaleSetting().get(),
546
- device: emulationModel.device(),
547
- mode: emulationModel.mode(),
548
- },
549
- network: {conditions: SDK.NetworkManager.MultitargetNetworkManager.instance().networkConditions()},
550
- };
551
-
552
- emulationModel.toolbarControlsEnabledSetting().set(false);
553
- if ('formFactor' in flags && flags.formFactor === 'desktop') {
554
- emulationModel.enabledSetting().set(false);
555
- emulationModel.emulate(EmulationModel.DeviceModeModel.Type.None, null, null);
556
- } else if (flags.formFactor === 'mobile') {
557
- emulationModel.enabledSetting().set(true);
558
- emulationModel.deviceOutlineSetting().set(true);
559
-
560
- for (const device of EmulationModel.EmulatedDevices.EmulatedDevicesList.instance().standard()) {
561
- if (device.title === 'Moto G Power') {
562
- emulationModel.emulate(EmulationModel.DeviceModeModel.Type.Device, device, device.modes[0], 1);
563
- }
564
- }
565
- }
566
-
567
- await this.protocolService.attach();
568
- }
569
-
570
- private async restoreEmulationAndProtocolConnection(): Promise<void> {
571
- if (!this.currentLighthouseRun) {
572
- return;
677
+ async cancelLighthouse(): Promise<void> {
678
+ if (this.lastAction) {
679
+ await this.lastAction;
573
680
  }
574
681
 
575
- await this.protocolService.detach();
576
-
577
- if (this.emulationStateBefore) {
578
- const emulationModel = EmulationModel.DeviceModeModel.DeviceModeModel.instance();
579
-
580
- // Detaching a session after overriding device metrics will prevent other sessions from overriding device metrics in the future.
581
- // A workaround is to call "Emulation.clearDeviceMetricOverride" which is the result of the next line.
582
- // https://bugs.chromium.org/p/chromium/issues/detail?id=1337089
583
- emulationModel.emulate(EmulationModel.DeviceModeModel.Type.None, null, null);
584
-
585
- const {type, enabled, outlineEnabled, toolbarControlsEnabled, scale, device, mode} =
586
- this.emulationStateBefore.emulation;
587
- emulationModel.enabledSetting().set(enabled);
588
- emulationModel.deviceOutlineSetting().set(outlineEnabled);
589
- emulationModel.toolbarControlsEnabledSetting().set(toolbarControlsEnabled);
590
-
591
- // `emulate` will ignore the `scale` parameter for responsive emulation.
592
- // In this case we can just set it here.
593
- if (type === EmulationModel.DeviceModeModel.Type.Responsive) {
594
- emulationModel.scaleSetting().set(scale);
682
+ this.lastAction = new Promise(async resolve => {
683
+ if (this.currentLighthouseRun) {
684
+ await this.currentLighthouseRun.cancel();
685
+ this.currentLighthouseRun = undefined;
595
686
  }
596
-
597
- emulationModel.emulate(type, device, mode, scale);
598
-
599
- SDK.NetworkManager.MultitargetNetworkManager.instance().setNetworkConditions(
600
- this.emulationStateBefore.network.conditions);
601
- delete this.emulationStateBefore;
602
- }
603
-
604
- Emulation.InspectedPagePlaceholder.InspectedPagePlaceholder.instance().update(true);
605
-
606
- const mainTarget = SDK.TargetManager.TargetManager.instance().primaryPageTarget();
607
- if (!mainTarget) {
608
- return;
609
- }
610
- const resourceTreeModel = mainTarget.model(SDK.ResourceTreeModel.ResourceTreeModel);
611
- if (!resourceTreeModel) {
612
- return;
613
- }
614
-
615
- // Reload to reset page state after a navigation.
616
- // We want to retain page state for timespan and snapshot modes.
617
- const mode = this.currentLighthouseRun.flags.mode;
618
- if (mode === 'navigation') {
619
- const inspectedURL = await this.getInspectedURL();
620
- await resourceTreeModel.navigate(inspectedURL);
621
- }
687
+ resolve();
688
+ });
689
+ return await this.lastAction;
622
690
  }
623
691
  }
624
692
 
@@ -1,7 +1,7 @@
1
1
  // Copyright 2016 The Chromium Authors
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
- /* eslint-disable rulesdir/no-imperative-dom-api */
4
+ /* eslint-disable @devtools/no-imperative-dom-api */
5
5
 
6
6
  import '../../ui/legacy/legacy.js';
7
7
 
@@ -1,7 +1,7 @@
1
1
  // Copyright 2018 The Chromium Authors
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
- /* eslint-disable rulesdir/no-imperative-dom-api */
4
+ /* eslint-disable @devtools/no-imperative-dom-api */
5
5
 
6
6
  import * as Common from '../../core/common/common.js';
7
7
  import * as i18n from '../../core/i18n/i18n.js';
@@ -1,7 +1,7 @@
1
1
  // Copyright 2022 The Chromium Authors
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
- /* eslint-disable rulesdir/no-imperative-dom-api */
4
+ /* eslint-disable @devtools/no-imperative-dom-api */
5
5
 
6
6
  import '../../ui/legacy/legacy.js';
7
7
 
@@ -1,7 +1,7 @@
1
1
  // Copyright 2018 The Chromium Authors
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
- /* eslint-disable rulesdir/no-imperative-dom-api */
4
+ /* eslint-disable @devtools/no-imperative-dom-api */
5
5
 
6
6
  import * as Common from '../../core/common/common.js';
7
7
  import * as i18n from '../../core/i18n/i18n.js';
@@ -1,7 +1,7 @@
1
1
  // Copyright 2022 The Chromium Authors
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
- /* eslint-disable rulesdir/no-imperative-dom-api */
4
+ /* eslint-disable @devtools/no-imperative-dom-api */
5
5
 
6
6
  import * as i18n from '../../core/i18n/i18n.js';
7
7
  import * as Geometry from '../../models/geometry/geometry.js';
@@ -1,7 +1,7 @@
1
1
  // Copyright 2018 The Chromium Authors
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
- /* eslint-disable rulesdir/no-imperative-dom-api */
4
+ /* eslint-disable @devtools/no-imperative-dom-api */
5
5
 
6
6
  import type * as Common from '../../core/common/common.js';
7
7
  import * as UI from '../../ui/legacy/legacy.js';
@@ -1,7 +1,7 @@
1
1
  // Copyright 2020 The Chromium Authors
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
- /* eslint-disable rulesdir/no-imperative-dom-api */
4
+ /* eslint-disable @devtools/no-imperative-dom-api */
5
5
 
6
6
  import * as Common from '../../core/common/common.js';
7
7
  import * as i18n from '../../core/i18n/i18n.js';
@@ -1,7 +1,7 @@
1
1
  // Copyright 2022 The Chromium Authors
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
- /* eslint-disable rulesdir/no-lit-render-outside-of-view */
4
+ /* eslint-disable @devtools/no-lit-render-outside-of-view */
5
5
 
6
6
  import '../../../ui/components/icon_button/icon_button.js';
7
7
 
@@ -1,7 +1,7 @@
1
1
  // Copyright 2020 The Chromium Authors
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
- /* eslint-disable rulesdir/no-lit-render-outside-of-view */
4
+ /* eslint-disable @devtools/no-lit-render-outside-of-view */
5
5
 
6
6
  import '../../../ui/components/icon_button/icon_button.js';
7
7
 
@@ -101,7 +101,6 @@ export const enum Mode {
101
101
  }
102
102
 
103
103
  export class LinearMemoryNavigator extends HTMLElement {
104
-
105
104
  readonly #shadow = this.attachShadow({mode: 'open'});
106
105
  #address = '0';
107
106
  #error: string|undefined = undefined;
@@ -1,7 +1,7 @@
1
1
  // Copyright 2020 The Chromium Authors
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
- /* eslint-disable rulesdir/no-lit-render-outside-of-view */
4
+ /* eslint-disable @devtools/no-lit-render-outside-of-view */
5
5
 
6
6
  import '../../../ui/components/icon_button/icon_button.js';
7
7
  import './ValueInterpreterDisplay.js';
@@ -1,7 +1,7 @@
1
1
  // Copyright 2020 The Chromium Authors
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
- /* eslint-disable rulesdir/no-lit-render-outside-of-view */
4
+ /* eslint-disable @devtools/no-lit-render-outside-of-view */
5
5
 
6
6
  import * as Lit from '../../../ui/lit/lit.js';
7
7
  import * as VisualLogging from '../../../ui/visual_logging/visual_logging.js';
@@ -1,7 +1,7 @@
1
1
  // Copyright 2020 The Chromium Authors
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
- /* eslint-disable rulesdir/no-lit-render-outside-of-view */
4
+ /* eslint-disable @devtools/no-lit-render-outside-of-view */
5
5
 
6
6
  import '../../../ui/components/icon_button/icon_button.js';
7
7
 
@@ -1,7 +1,7 @@
1
1
  // Copyright 2020 The Chromium Authors
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
- /* eslint-disable rulesdir/no-lit-render-outside-of-view */
4
+ /* eslint-disable @devtools/no-lit-render-outside-of-view */
5
5
 
6
6
  import '../../../ui/legacy/legacy.js';
7
7
 
@@ -63,7 +63,6 @@ export class TypeToggleEvent extends Event {
63
63
  }
64
64
 
65
65
  export class ValueInterpreterSettings extends HTMLElement {
66
-
67
66
  readonly #shadow = this.attachShadow({mode: 'open'});
68
67
  #valueTypes = new Set<ValueType>();
69
68
 
@@ -1,7 +1,7 @@
1
1
  // Copyright 2019 The Chromium Authors
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
- /* eslint-disable rulesdir/no-imperative-dom-api */
4
+ /* eslint-disable @devtools/no-imperative-dom-api */
5
5
 
6
6
  import * as i18n from '../../core/i18n/i18n.js';
7
7
  import * as DataGrid from '../../ui/legacy/components/data_grid/data_grid.js';
@@ -1,7 +1,7 @@
1
1
  // Copyright 2019 The Chromium Authors
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
- /* eslint-disable rulesdir/no-imperative-dom-api */
4
+ /* eslint-disable @devtools/no-imperative-dom-api */
5
5
 
6
6
  import * as i18n from '../../core/i18n/i18n.js';
7
7
  import * as VisualLogging from '../../ui/visual_logging/visual_logging.js';
@@ -1,7 +1,7 @@
1
1
  // Copyright 2019 The Chromium Authors
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
- /* eslint-disable rulesdir/no-imperative-dom-api */
4
+ /* eslint-disable @devtools/no-imperative-dom-api */
5
5
 
6
6
  import type * as Common from '../../core/common/common.js';
7
7
  import * as i18n from '../../core/i18n/i18n.js';
@@ -1,7 +1,7 @@
1
1
  // Copyright 2019 The Chromium Authors
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
- /* eslint-disable rulesdir/no-imperative-dom-api */
4
+ /* eslint-disable @devtools/no-imperative-dom-api */
5
5
 
6
6
  import * as i18n from '../../core/i18n/i18n.js';
7
7
  import type * as Protocol from '../../generated/protocol.js';
@@ -1,7 +1,7 @@
1
1
  // Copyright 2020 The Chromium Authors
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
- /* eslint-disable rulesdir/no-imperative-dom-api */
4
+ /* eslint-disable @devtools/no-imperative-dom-api */
5
5
 
6
6
  import '../../ui/legacy/legacy.js';
7
7
 
@@ -1,7 +1,7 @@
1
1
  // Copyright 2019 The Chromium Authors
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
- /* eslint-disable rulesdir/no-imperative-dom-api */
4
+ /* eslint-disable @devtools/no-imperative-dom-api */
5
5
 
6
6
  import * as i18n from '../../core/i18n/i18n.js';
7
7
  import * as Platform from '../../core/platform/platform.js';
@@ -1,7 +1,7 @@
1
1
  // Copyright 2020 The Chromium Authors
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
- /* eslint-disable rulesdir/no-imperative-dom-api */
4
+ /* eslint-disable @devtools/no-imperative-dom-api */
5
5
 
6
6
  import * as Common from '../../core/common/common.js';
7
7
  import * as Host from '../../core/host/host.js';
@@ -1,7 +1,7 @@
1
1
  // Copyright 2024 The Chromium Authors
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
- /* eslint-disable rulesdir/no-imperative-dom-api */
4
+ /* eslint-disable @devtools/no-imperative-dom-api */
5
5
 
6
6
  import * as i18n from '../../core/i18n/i18n.js';
7
7
  import * as SDK from '../../core/sdk/sdk.js';
@@ -1,7 +1,7 @@
1
1
  // Copyright 2017 The Chromium Authors
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
- /* eslint-disable rulesdir/no-imperative-dom-api */
4
+ /* eslint-disable @devtools/no-imperative-dom-api */
5
5
 
6
6
  import * as Common from '../../core/common/common.js';
7
7
  import * as Host from '../../core/host/host.js';
@@ -1,7 +1,7 @@
1
1
  // Copyright 2017 The Chromium Authors
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
- /* eslint-disable rulesdir/no-imperative-dom-api */
4
+ /* eslint-disable @devtools/no-imperative-dom-api */
5
5
 
6
6
  import '../../ui/components/cards/cards.js';
7
7
 
@@ -1,7 +1,7 @@
1
1
  // Copyright 2019 The Chromium Authors
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
- /* eslint-disable rulesdir/no-imperative-dom-api */
4
+ /* eslint-disable @devtools/no-imperative-dom-api */
5
5
 
6
6
  import '../../ui/legacy/legacy.js';
7
7