chrome-devtools-frontend 1.0.1380117 → 1.0.1386602
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.
- package/.stylelintrc.json +2 -1
- package/config/gni/devtools_grd_files.gni +25 -4
- package/config/gni/devtools_image_files.gni +2 -0
- package/docs/README.md +4 -0
- package/docs/contributing/issues.md +13 -10
- package/docs/get_the_code.md +4 -1
- package/docs/policy/README.md +6 -0
- package/docs/policy/slow-close.md +52 -0
- package/docs/styleguide/ux/README.md +1 -0
- package/docs/styleguide/ux/numbers.md +106 -0
- package/front_end/Images/src/cookie_off.svg +3 -0
- package/front_end/Images/src/domain.svg +3 -0
- package/front_end/core/common/Color.ts +3 -3
- package/front_end/core/common/SettingRegistration.ts +7 -0
- package/front_end/core/host/AidaClient.ts +3 -3
- package/front_end/core/host/InspectorFrontendHostAPI.ts +0 -1
- package/front_end/core/host/UserMetrics.ts +0 -8
- package/front_end/core/i18n/locales/af.json +1031 -887
- package/front_end/core/i18n/locales/am.json +1036 -892
- package/front_end/core/i18n/locales/ar.json +1039 -895
- package/front_end/core/i18n/locales/as.json +1032 -888
- package/front_end/core/i18n/locales/az.json +1034 -890
- package/front_end/core/i18n/locales/be.json +1031 -887
- package/front_end/core/i18n/locales/bg.json +1031 -887
- package/front_end/core/i18n/locales/bn.json +1033 -889
- package/front_end/core/i18n/locales/bs.json +1036 -892
- package/front_end/core/i18n/locales/ca.json +1031 -887
- package/front_end/core/i18n/locales/cs.json +1030 -886
- package/front_end/core/i18n/locales/cy.json +1032 -888
- package/front_end/core/i18n/locales/da.json +1031 -887
- package/front_end/core/i18n/locales/de.json +1033 -889
- package/front_end/core/i18n/locales/el.json +1031 -887
- package/front_end/core/i18n/locales/en-GB.json +1033 -889
- package/front_end/core/i18n/locales/es-419.json +1029 -885
- package/front_end/core/i18n/locales/es.json +1032 -888
- package/front_end/core/i18n/locales/et.json +1033 -889
- package/front_end/core/i18n/locales/eu.json +1031 -887
- package/front_end/core/i18n/locales/fa.json +1035 -891
- package/front_end/core/i18n/locales/fi.json +1035 -891
- package/front_end/core/i18n/locales/fil.json +1034 -890
- package/front_end/core/i18n/locales/fr-CA.json +1031 -887
- package/front_end/core/i18n/locales/fr.json +1049 -905
- package/front_end/core/i18n/locales/gl.json +1032 -888
- package/front_end/core/i18n/locales/gu.json +1035 -891
- package/front_end/core/i18n/locales/he.json +1031 -887
- package/front_end/core/i18n/locales/hi.json +1034 -890
- package/front_end/core/i18n/locales/hr.json +1031 -887
- package/front_end/core/i18n/locales/hu.json +1033 -889
- package/front_end/core/i18n/locales/hy.json +1046 -902
- package/front_end/core/i18n/locales/id.json +1023 -879
- package/front_end/core/i18n/locales/is.json +1032 -888
- package/front_end/core/i18n/locales/it.json +1031 -887
- package/front_end/core/i18n/locales/ja.json +1042 -898
- package/front_end/core/i18n/locales/ka.json +1034 -890
- package/front_end/core/i18n/locales/kk.json +1035 -891
- package/front_end/core/i18n/locales/km.json +1035 -891
- package/front_end/core/i18n/locales/kn.json +1036 -892
- package/front_end/core/i18n/locales/ko.json +1031 -887
- package/front_end/core/i18n/locales/ky.json +1032 -888
- package/front_end/core/i18n/locales/lo.json +1030 -886
- package/front_end/core/i18n/locales/lt.json +1032 -888
- package/front_end/core/i18n/locales/lv.json +1032 -888
- package/front_end/core/i18n/locales/mk.json +1032 -888
- package/front_end/core/i18n/locales/ml.json +1033 -889
- package/front_end/core/i18n/locales/mn.json +1034 -890
- package/front_end/core/i18n/locales/mr.json +1035 -891
- package/front_end/core/i18n/locales/ms.json +1033 -889
- package/front_end/core/i18n/locales/my.json +1033 -889
- package/front_end/core/i18n/locales/ne.json +1036 -892
- package/front_end/core/i18n/locales/nl.json +1033 -889
- package/front_end/core/i18n/locales/no.json +1036 -892
- package/front_end/core/i18n/locales/or.json +1043 -899
- package/front_end/core/i18n/locales/pa.json +1030 -886
- package/front_end/core/i18n/locales/pl.json +1032 -888
- package/front_end/core/i18n/locales/pt-PT.json +1033 -889
- package/front_end/core/i18n/locales/pt.json +1033 -889
- package/front_end/core/i18n/locales/ro.json +1029 -885
- package/front_end/core/i18n/locales/ru.json +1026 -882
- package/front_end/core/i18n/locales/si.json +1031 -887
- package/front_end/core/i18n/locales/sk.json +1033 -889
- package/front_end/core/i18n/locales/sl.json +1031 -887
- package/front_end/core/i18n/locales/sq.json +1061 -917
- package/front_end/core/i18n/locales/sr-Latn.json +1033 -889
- package/front_end/core/i18n/locales/sr.json +1033 -889
- package/front_end/core/i18n/locales/sv.json +1031 -887
- package/front_end/core/i18n/locales/sw.json +1033 -889
- package/front_end/core/i18n/locales/ta.json +1058 -914
- package/front_end/core/i18n/locales/te.json +1037 -893
- package/front_end/core/i18n/locales/th.json +1032 -888
- package/front_end/core/i18n/locales/tr.json +1031 -887
- package/front_end/core/i18n/locales/uk.json +1030 -886
- package/front_end/core/i18n/locales/ur.json +1031 -887
- package/front_end/core/i18n/locales/uz.json +1023 -879
- package/front_end/core/i18n/locales/vi.json +1032 -888
- package/front_end/core/i18n/locales/zh-HK.json +1032 -888
- package/front_end/core/i18n/locales/zh-TW.json +1032 -888
- package/front_end/core/i18n/locales/zh.json +1033 -889
- package/front_end/core/i18n/locales/zu.json +1032 -888
- package/front_end/core/root/Runtime.ts +0 -1
- package/front_end/core/sdk/NetworkManager.test.ts +50 -0
- package/front_end/core/sdk/NetworkManager.ts +6 -4
- package/front_end/core/sdk/SourceMap.test.ts +5 -5
- package/front_end/core/sdk/SourceMapScopeChainEntry.test.ts +7 -2
- package/front_end/core/sdk/SourceMapScopeChainEntry.ts +2 -2
- package/front_end/core/sdk/SourceMapScopes.test.ts +112 -45
- package/front_end/core/sdk/SourceMapScopes.ts +39 -14
- package/front_end/core/sdk/SourceMapScopesInfo.test.ts +51 -50
- package/front_end/core/sdk/SourceMapScopesInfo.ts +1 -1
- package/front_end/core/sdk/sdk-meta.ts +27 -0
- package/front_end/devtools_compatibility.js +0 -1
- package/front_end/entrypoints/devtools_app/devtools_app.ts +1 -0
- package/front_end/entrypoints/inspector_main/renderingOptions.css +1 -1
- package/front_end/entrypoints/main/ExecutionContextSelector.test.ts +13 -3
- package/front_end/entrypoints/main/ExecutionContextSelector.ts +23 -1
- package/front_end/entrypoints/main/MainImpl.ts +0 -5
- package/front_end/generated/Deprecation.ts +0 -15
- package/front_end/generated/InspectorBackendCommands.js +1 -1
- package/front_end/generated/SupportedCSSProperties.js +0 -40
- package/front_end/generated/protocol.ts +1 -0
- package/front_end/models/bindings/IgnoreListManager.ts +25 -2
- package/front_end/models/crux-manager/CrUXManager.test.ts +25 -6
- package/front_end/models/crux-manager/CrUXManager.ts +23 -4
- package/front_end/models/extensions/ExtensionServer.test.ts +14 -0
- package/front_end/models/extensions/ExtensionServer.ts +28 -15
- package/front_end/models/issues_manager/CookieIssue.ts +79 -2
- package/front_end/models/issues_manager/IssuesManager.ts +1 -1
- package/front_end/models/issues_manager/descriptions/cookieExcludePortMismatch.md +8 -0
- package/front_end/models/issues_manager/descriptions/cookieExcludeSchemeMismatch.md +7 -0
- package/front_end/models/javascript_metadata/NativeFunctions.js +14 -4
- package/front_end/models/persistence/EditFileSystemView.ts +2 -2
- package/front_end/models/persistence/editFileSystemView.css +6 -3
- package/front_end/models/persistence/workspaceSettingsTab.css +2 -2
- package/front_end/models/trace/extras/Metadata.test.ts +35 -2
- package/front_end/models/trace/extras/Metadata.ts +24 -5
- package/front_end/models/trace/extras/TraceTree.ts +28 -18
- package/front_end/models/trace/extras/URLForEntry.ts +6 -5
- package/front_end/models/trace/handlers/ImagePaintingHandler.ts +12 -0
- package/front_end/models/trace/helpers/Timing.ts +8 -0
- package/front_end/models/trace/insights/CLSCulprits.ts +11 -3
- package/front_end/models/trace/insights/DocumentLatency.ts +16 -3
- package/front_end/models/trace/insights/FontDisplay.ts +10 -3
- package/front_end/models/trace/insights/ImageDelivery.test.ts +98 -0
- package/front_end/models/trace/insights/ImageDelivery.ts +183 -0
- package/front_end/models/trace/insights/InteractionToNextPaint.ts +9 -3
- package/front_end/models/trace/insights/LCPDiscovery.ts +24 -3
- package/front_end/models/trace/insights/LCPPhases.ts +25 -3
- package/front_end/models/trace/insights/Models.ts +1 -0
- package/front_end/models/trace/insights/RenderBlocking.ts +10 -2
- package/front_end/models/trace/insights/SlowCSSSelector.ts +10 -3
- package/front_end/models/trace/insights/ThirdParties.ts +11 -3
- package/front_end/models/trace/insights/Viewport.ts +16 -3
- package/front_end/models/trace/insights/types.ts +13 -2
- package/front_end/models/trace/types/File.ts +7 -0
- package/front_end/models/trace/types/TraceEvents.ts +9 -2
- package/front_end/panels/animation/AnimationTimeline.ts +2 -4
- package/front_end/panels/application/ApplicationPanelSidebar.test.ts +0 -5
- package/front_end/panels/application/ApplicationPanelSidebar.ts +15 -21
- package/front_end/panels/application/IndexedDBViews.ts +4 -1
- package/front_end/panels/application/ServiceWorkerCacheViews.ts +4 -1
- package/front_end/panels/application/StorageView.test.ts +1 -1
- package/front_end/panels/application/resourcesSidebar.css +1 -1
- package/front_end/panels/browser_debugger/CategorizedBreakpointsSidebarPane.ts +1 -1
- package/front_end/panels/browser_debugger/DOMBreakpointsSidebarPane.ts +1 -1
- package/front_end/panels/browser_debugger/XHRBreakpointsSidebarPane.ts +1 -1
- package/front_end/panels/browser_debugger/categorizedBreakpointsSidebarPane.css +1 -1
- package/front_end/panels/browser_debugger/xhrBreakpointsSidebarPane.css +1 -1
- package/front_end/panels/console/ConsoleViewMessage.test.ts +25 -0
- package/front_end/panels/console/ConsoleViewMessage.ts +23 -0
- package/front_end/panels/coverage/CoverageListView.ts +1 -1
- package/front_end/panels/developer_resources/DeveloperResourcesListView.ts +1 -1
- package/front_end/panels/elements/ClassesPaneWidget.ts +1 -1
- package/front_end/panels/elements/ElementStatePaneWidget.test.ts +3 -2
- package/front_end/panels/elements/ElementStatePaneWidget.ts +7 -2
- package/front_end/panels/elements/ElementsSidebarPane.ts +3 -3
- package/front_end/panels/elements/ElementsTreeElement.ts +1 -0
- package/front_end/panels/elements/LayersWidget.ts +1 -1
- package/front_end/panels/elements/PropertyMatchers.test.ts +7 -0
- package/front_end/panels/elements/PropertyMatchers.ts +3 -0
- package/front_end/panels/elements/classesPaneWidget.css +1 -1
- package/front_end/panels/emulation/DeviceModeView.ts +1 -1
- package/front_end/panels/emulation/DeviceModeWrapper.ts +1 -1
- package/front_end/panels/emulation/InspectedPagePlaceholder.ts +1 -1
- package/front_end/panels/freestyler/AiAgent.test.ts +319 -50
- package/front_end/panels/freestyler/AiAgent.ts +193 -141
- package/front_end/panels/freestyler/AiHistoryStorage.test.ts +159 -0
- package/front_end/panels/freestyler/AiHistoryStorage.ts +73 -0
- package/front_end/panels/freestyler/DrJonesFileAgent.test.ts +14 -15
- package/front_end/panels/freestyler/DrJonesFileAgent.ts +3 -14
- package/front_end/panels/freestyler/DrJonesNetworkAgent.test.ts +14 -13
- package/front_end/panels/freestyler/DrJonesNetworkAgent.ts +3 -3
- package/front_end/panels/freestyler/DrJonesPerformanceAgent.test.ts +38 -36
- package/front_end/panels/freestyler/DrJonesPerformanceAgent.ts +3 -14
- package/front_end/panels/freestyler/FreestylerAgent.test.ts +195 -14
- package/front_end/panels/freestyler/FreestylerAgent.ts +13 -18
- package/front_end/panels/freestyler/FreestylerPanel.test.ts +71 -0
- package/front_end/panels/freestyler/FreestylerPanel.ts +99 -74
- package/front_end/panels/freestyler/components/FreestylerChatUi.ts +128 -29
- package/front_end/panels/freestyler/components/UserActionRow.ts +1 -0
- package/front_end/panels/freestyler/components/freestylerChatUi.css +21 -1
- package/front_end/panels/freestyler/components/userActionRow.css +2 -1
- package/front_end/panels/freestyler/freestyler.ts +1 -0
- package/front_end/panels/issues/IssueAggregator.test.ts +50 -0
- package/front_end/panels/issues/IssueAggregator.ts +10 -10
- package/front_end/panels/issues/issuesTree.css +1 -1
- package/front_end/panels/layer_viewer/LayerDetailsView.ts +1 -1
- package/front_end/panels/layer_viewer/Layers3DView.ts +1 -1
- package/front_end/panels/layer_viewer/PaintProfilerView.ts +1 -1
- package/front_end/panels/layers/LayersPanel.ts +1 -1
- package/front_end/panels/lighthouse/lighthouseStartView.css +1 -1
- package/front_end/panels/media/TickingFlameChart.ts +1 -1
- package/front_end/panels/mobile_throttling/ThrottlingSettingsTab.ts +1 -1
- package/front_end/panels/network/BlockedURLsPane.ts +1 -1
- package/front_end/panels/network/NetworkDataGridNode.ts +1 -0
- package/front_end/panels/network/NetworkLogView.test.ts +1 -1
- package/front_end/panels/network/NetworkPanel.ts +40 -32
- package/front_end/panels/network/NetworkWaterfallColumn.ts +1 -1
- package/front_end/panels/profiler/HeapProfileView.ts +9 -9
- package/front_end/panels/profiler/HeapTimelineOverview.ts +1 -1
- package/front_end/panels/profiler/IsolateSelector.ts +1 -1
- package/front_end/panels/profiler/LiveHeapProfileView.ts +3 -1
- package/front_end/panels/profiler/ProfileFlameChartDataProvider.ts +3 -3
- package/front_end/panels/profiler/ProfileView.ts +2 -2
- package/front_end/panels/profiler/profileLauncherView.css +1 -1
- package/front_end/panels/profiler/profilesSidebarTree.css +1 -1
- package/front_end/panels/recorder/recorderController.css +1 -1
- package/front_end/panels/security/CookieControlsTreeElement.ts +18 -0
- package/front_end/panels/security/CookieControlsView.test.ts +29 -0
- package/front_end/panels/security/CookieControlsView.ts +265 -0
- package/front_end/panels/security/CookieReportView.test.ts +157 -0
- package/front_end/panels/security/CookieReportView.ts +208 -12
- package/front_end/panels/security/SecurityPanel.ts +5 -3
- package/front_end/panels/security/SecurityPanelSidebar.ts +6 -1
- package/front_end/panels/security/cookieControlsView.css +101 -0
- package/front_end/panels/security/cookieReportView.css +26 -3
- package/front_end/panels/security/security.ts +4 -0
- package/front_end/panels/security/sidebar.css +1 -1
- package/front_end/panels/settings/KeybindsSettingsTab.ts +3 -2
- package/front_end/panels/settings/SettingsScreen.ts +5 -1
- package/front_end/panels/settings/frameworkIgnoreListSettingsTab.css +1 -1
- package/front_end/panels/settings/keybindsSettingsTab.css +6 -1
- package/front_end/panels/settings/settings-meta.ts +3 -1
- package/front_end/panels/settings/settingsScreen.css +10 -0
- package/front_end/panels/sources/CallStackSidebarPane.ts +2 -2
- package/front_end/panels/sources/NavigatorView.ts +1 -0
- package/front_end/panels/sources/navigatorTree.css +1 -1
- package/front_end/panels/sources/sourcesPanel.css +2 -2
- package/front_end/panels/timeline/AnimationsTrackAppender.ts +1 -7
- package/front_end/panels/timeline/AppenderUtils.ts +1 -1
- package/front_end/panels/timeline/CompatibilityTracksAppender.ts +38 -41
- package/front_end/panels/timeline/ExtensionTrackAppender.ts +4 -13
- package/front_end/panels/timeline/InteractionsTrackAppender.ts +3 -4
- package/front_end/panels/timeline/LayoutShiftsTrackAppender.ts +6 -12
- package/front_end/panels/timeline/ServerTimingsTrackAppender.ts +1 -10
- package/front_end/panels/timeline/ThreadAppender.ts +9 -12
- package/front_end/panels/timeline/TimelineController.ts +1 -1
- package/front_end/panels/timeline/TimelineDetailsView.test.ts +3 -2
- package/front_end/panels/timeline/TimelineDetailsView.ts +18 -17
- package/front_end/panels/timeline/TimelineFlameChartDataProvider.ts +55 -36
- package/front_end/panels/timeline/TimelineFlameChartNetworkDataProvider.ts +1 -1
- package/front_end/panels/timeline/TimelineFlameChartView.ts +33 -14
- package/front_end/panels/timeline/TimelineHistoryManager.test.ts +20 -15
- package/front_end/panels/timeline/TimelineHistoryManager.ts +46 -58
- package/front_end/panels/timeline/TimelineLayersView.ts +1 -1
- package/front_end/panels/timeline/TimelineLoader.ts +16 -0
- package/front_end/panels/timeline/TimelineMiniMap.ts +2 -2
- package/front_end/panels/timeline/TimelinePaintProfilerView.ts +1 -1
- package/front_end/panels/timeline/TimelinePanel.ts +145 -28
- package/front_end/panels/timeline/TimelineTreeView.ts +65 -16
- package/front_end/panels/timeline/TimelineUIUtils.ts +44 -0
- package/front_end/panels/timeline/TimingsTrackAppender.ts +6 -13
- package/front_end/panels/timeline/components/FieldSettingsDialog.test.ts +1 -0
- package/front_end/panels/timeline/components/FieldSettingsDialog.ts +6 -1
- package/front_end/panels/timeline/components/LiveMetricsView.test.ts +12 -0
- package/front_end/panels/timeline/components/LiveMetricsView.ts +13 -18
- package/front_end/panels/timeline/components/Sidebar.ts +1 -4
- package/front_end/panels/timeline/components/SidebarAnnotationsTab.test.ts +1 -1
- package/front_end/panels/timeline/components/SidebarInsightsTab.ts +1 -1
- package/front_end/panels/timeline/components/SidebarSingleInsightSet.test.ts +21 -35
- package/front_end/panels/timeline/components/SidebarSingleInsightSet.ts +16 -9
- package/front_end/panels/timeline/components/TimelineSummary.test.ts +75 -0
- package/front_end/panels/timeline/components/TimelineSummary.ts +101 -0
- package/front_end/panels/timeline/components/Utils.test.ts +49 -0
- package/front_end/panels/timeline/components/Utils.ts +2 -2
- package/front_end/panels/timeline/components/components.ts +2 -0
- package/front_end/panels/timeline/components/insights/BaseInsightComponent.test.ts +84 -0
- package/front_end/panels/timeline/components/insights/BaseInsightComponent.ts +291 -0
- package/front_end/panels/timeline/components/insights/CLSCulprits.ts +17 -41
- package/front_end/panels/timeline/components/insights/DocumentLatency.ts +28 -46
- package/front_end/panels/timeline/components/insights/EventRef.ts +70 -2
- package/front_end/panels/timeline/components/insights/FontDisplay.ts +28 -46
- package/front_end/panels/timeline/components/insights/Helpers.ts +5 -208
- package/front_end/panels/timeline/components/insights/ImageDelivery.ts +142 -0
- package/front_end/panels/timeline/components/insights/InteractionToNextPaint.ts +30 -53
- package/front_end/panels/timeline/components/insights/LCPDiscovery.ts +36 -75
- package/front_end/panels/timeline/components/insights/LCPPhases.ts +15 -49
- package/front_end/panels/timeline/components/insights/RenderBlocking.ts +27 -44
- package/front_end/panels/timeline/components/insights/SidebarInsight.ts +3 -197
- package/front_end/panels/timeline/components/insights/SlowCSSSelector.ts +51 -74
- package/front_end/panels/timeline/components/insights/Table.ts +6 -5
- package/front_end/panels/timeline/components/insights/ThirdParties.ts +41 -61
- package/front_end/panels/timeline/components/insights/Viewport.ts +20 -31
- package/front_end/panels/timeline/components/insights/{sidebarInsight.css → baseInsightComponent.css} +9 -9
- package/front_end/panels/timeline/components/insights/insights.ts +4 -0
- package/front_end/panels/timeline/components/insights/types.ts +0 -7
- package/front_end/panels/timeline/components/liveMetricsView.css +5 -5
- package/front_end/panels/timeline/components/timelineSummary.css +67 -0
- package/front_end/panels/timeline/docs/flame_chart_migration.md +1 -1
- package/front_end/panels/timeline/fixtures/traces/README.md +4 -0
- package/front_end/panels/timeline/fixtures/traces/image-delivery.json.gz +0 -0
- package/front_end/panels/timeline/overlays/OverlaysImpl.ts +22 -0
- package/front_end/panels/timeline/timeline-meta.ts +1 -1
- package/front_end/panels/timeline/timelineFlamechartPopover.css +14 -4
- package/front_end/panels/timeline/timelineHistoryManager.css +7 -3
- package/front_end/panels/timeline/timelinePanel.css +0 -1
- package/front_end/panels/timeline/track_appenders/CompatibilityTracksAppender.test.ts +5 -5
- package/front_end/panels/timeline/track_appenders/ExtensionTrackAppender.test.ts +5 -6
- package/front_end/panels/timeline/track_appenders/LayoutShiftsTrackAppender.test.ts +11 -2
- package/front_end/panels/timeline/track_appenders/ServerTimingsTrackAppender.test.ts +0 -9
- package/front_end/panels/timeline/track_appenders/ThreadAppender.test.ts +37 -44
- package/front_end/panels/timeline/track_appenders/TimingsTrackAppender.test.ts +44 -30
- package/front_end/panels/timeline/utils/EntryName.ts +1 -2
- package/front_end/panels/timeline/utils/Helpers.ts +19 -0
- package/front_end/panels/timeline/utils/IgnoreList.test.ts +52 -0
- package/front_end/panels/timeline/utils/IgnoreList.ts +68 -7
- package/front_end/panels/timeline/utils/SourceMapsResolver.ts +2 -0
- package/front_end/panels/webauthn/webauthnPane.css +1 -1
- package/front_end/panels/whats_new/ReleaseNote.test.ts +90 -0
- package/front_end/panels/whats_new/ReleaseNoteText.ts +52 -0
- package/front_end/panels/whats_new/ReleaseNoteView.ts +157 -0
- package/front_end/panels/whats_new/WhatsNewImpl.ts +102 -0
- package/front_end/panels/whats_new/releaseNoteView.css +121 -0
- package/front_end/panels/whats_new/resources/WNDT.md +6 -0
- package/front_end/panels/whats_new/resources/whatsnew.avif +0 -0
- package/front_end/panels/whats_new/whats_new-meta.ts +142 -0
- package/front_end/panels/whats_new/whats_new.ts +13 -0
- package/front_end/services/puppeteer/PuppeteerConnection.ts +4 -3
- package/front_end/testing/EnvironmentHelpers.ts +1 -2
- package/front_end/testing/SourceMapEncoder.ts +27 -11
- package/front_end/testing/TraceHelpers.ts +2 -1
- package/front_end/testing/TraceLoader.ts +6 -2
- package/front_end/third_party/lighthouse/README.chromium +2 -2
- package/front_end/third_party/lighthouse/lighthouse-dt-bundle.js +1380 -1369
- package/front_end/third_party/lighthouse/locales/ar-XB.json +88 -85
- package/front_end/third_party/lighthouse/locales/ar.json +98 -95
- package/front_end/third_party/lighthouse/locales/bg.json +88 -85
- package/front_end/third_party/lighthouse/locales/ca.json +91 -88
- package/front_end/third_party/lighthouse/locales/cs.json +91 -88
- package/front_end/third_party/lighthouse/locales/da.json +94 -91
- package/front_end/third_party/lighthouse/locales/de.json +92 -89
- package/front_end/third_party/lighthouse/locales/el.json +92 -89
- package/front_end/third_party/lighthouse/locales/en-GB.json +89 -86
- package/front_end/third_party/lighthouse/locales/en-US.json +23 -20
- package/front_end/third_party/lighthouse/locales/en-XA.json +88 -85
- package/front_end/third_party/lighthouse/locales/en-XL.json +23 -20
- package/front_end/third_party/lighthouse/locales/es-419.json +92 -89
- package/front_end/third_party/lighthouse/locales/es.json +91 -88
- package/front_end/third_party/lighthouse/locales/fi.json +92 -89
- package/front_end/third_party/lighthouse/locales/fil.json +93 -90
- package/front_end/third_party/lighthouse/locales/fr.json +94 -91
- package/front_end/third_party/lighthouse/locales/he.json +97 -94
- package/front_end/third_party/lighthouse/locales/hi.json +92 -89
- package/front_end/third_party/lighthouse/locales/hr.json +90 -87
- package/front_end/third_party/lighthouse/locales/hu.json +90 -87
- package/front_end/third_party/lighthouse/locales/id.json +91 -88
- package/front_end/third_party/lighthouse/locales/it.json +90 -87
- package/front_end/third_party/lighthouse/locales/ja.json +90 -87
- package/front_end/third_party/lighthouse/locales/ko.json +90 -87
- package/front_end/third_party/lighthouse/locales/lt.json +90 -87
- package/front_end/third_party/lighthouse/locales/lv.json +91 -88
- package/front_end/third_party/lighthouse/locales/nl.json +90 -87
- package/front_end/third_party/lighthouse/locales/no.json +92 -89
- package/front_end/third_party/lighthouse/locales/pl.json +90 -87
- package/front_end/third_party/lighthouse/locales/pt-PT.json +111 -108
- package/front_end/third_party/lighthouse/locales/pt.json +97 -94
- package/front_end/third_party/lighthouse/locales/ro.json +94 -91
- package/front_end/third_party/lighthouse/locales/ru.json +93 -90
- package/front_end/third_party/lighthouse/locales/sk.json +93 -90
- package/front_end/third_party/lighthouse/locales/sl.json +91 -88
- package/front_end/third_party/lighthouse/locales/sr-Latn.json +91 -88
- package/front_end/third_party/lighthouse/locales/sr.json +91 -88
- package/front_end/third_party/lighthouse/locales/sv.json +92 -89
- package/front_end/third_party/lighthouse/locales/ta.json +101 -98
- package/front_end/third_party/lighthouse/locales/te.json +92 -89
- package/front_end/third_party/lighthouse/locales/th.json +95 -92
- package/front_end/third_party/lighthouse/locales/tr.json +91 -88
- package/front_end/third_party/lighthouse/locales/uk.json +93 -90
- package/front_end/third_party/lighthouse/locales/vi.json +95 -92
- package/front_end/third_party/lighthouse/locales/zh-HK.json +92 -89
- package/front_end/third_party/lighthouse/locales/zh-TW.json +98 -95
- package/front_end/third_party/lighthouse/locales/zh.json +96 -93
- package/front_end/third_party/puppeteer/README.chromium +2 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.d.ts +8 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Frame.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Frame.js +3 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Frame.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/HTTPRequest.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/HTTPRequest.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/HTTPRequest.js +1 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/HTTPRequest.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.d.ts +4 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.js +3 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.d.ts +3 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.js +10 -4
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserConnector.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserConnector.js +2 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserConnector.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserContext.d.ts +2 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserContext.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserContext.js +7 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserContext.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/HTTPRequest.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/HTTPRequest.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/HTTPRequest.js +3 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/HTTPRequest.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/HTTPResponse.d.ts +1 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/HTTPResponse.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/HTTPResponse.js +4 -4
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/HTTPResponse.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/NetworkManager.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/NetworkManager.js +24 -12
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/NetworkManager.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.js +3 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ConnectOptions.d.ts +5 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ConnectOptions.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/DownloadBehavior.d.ts +30 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/DownloadBehavior.d.ts.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/DownloadBehavior.js +8 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/DownloadBehavior.js.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/common.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/common.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/generated/version.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/generated/version.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/injected/injected.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/BrowserLauncher.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/BrowserLauncher.js +2 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/BrowserLauncher.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.d.ts +3 -3
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js +3 -3
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/Mutex.d.ts +2 -2
- package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.d.ts +49 -0
- package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.js +118 -88
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.d.ts +8 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Frame.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Frame.js +3 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Frame.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/HTTPRequest.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/HTTPRequest.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/HTTPRequest.js +1 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/HTTPRequest.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.d.ts +4 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.js +3 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.d.ts +3 -2
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.js +10 -4
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserConnector.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserConnector.js +2 -2
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserConnector.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserContext.d.ts +2 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserContext.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserContext.js +7 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserContext.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/HTTPRequest.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/HTTPRequest.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/HTTPRequest.js +3 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/HTTPRequest.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/HTTPResponse.d.ts +1 -2
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/HTTPResponse.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/HTTPResponse.js +4 -4
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/HTTPResponse.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/NetworkManager.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/NetworkManager.js +24 -12
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/NetworkManager.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.js +3 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ConnectOptions.d.ts +5 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ConnectOptions.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/DownloadBehavior.d.ts +30 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/DownloadBehavior.d.ts.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/DownloadBehavior.js +7 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/DownloadBehavior.js.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/common.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/common.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/generated/version.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/generated/version.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserLauncher.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserLauncher.js +2 -2
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserLauncher.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.d.ts +3 -3
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js +3 -3
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/types.d.ts +49 -0
- package/front_end/third_party/puppeteer/package/package.json +3 -3
- package/front_end/third_party/puppeteer/package/src/api/Browser.ts +8 -0
- package/front_end/third_party/puppeteer/package/src/api/Frame.ts +3 -1
- package/front_end/third_party/puppeteer/package/src/api/HTTPRequest.ts +1 -0
- package/front_end/third_party/puppeteer/package/src/api/Page.ts +5 -0
- package/front_end/third_party/puppeteer/package/src/bidi/Page.ts +4 -0
- package/front_end/third_party/puppeteer/package/src/cdp/Browser.ts +11 -3
- package/front_end/third_party/puppeteer/package/src/cdp/BrowserConnector.ts +2 -0
- package/front_end/third_party/puppeteer/package/src/cdp/BrowserContext.ts +11 -0
- package/front_end/third_party/puppeteer/package/src/cdp/HTTPRequest.ts +4 -0
- package/front_end/third_party/puppeteer/package/src/cdp/HTTPResponse.ts +3 -5
- package/front_end/third_party/puppeteer/package/src/cdp/NetworkManager.ts +34 -17
- package/front_end/third_party/puppeteer/package/src/cdp/Page.ts +4 -0
- package/front_end/third_party/puppeteer/package/src/common/ConnectOptions.ts +5 -0
- package/front_end/third_party/puppeteer/package/src/common/DownloadBehavior.ts +31 -0
- package/front_end/third_party/puppeteer/package/src/common/common.ts +1 -0
- package/front_end/third_party/puppeteer/package/src/generated/version.ts +1 -1
- package/front_end/third_party/puppeteer/package/src/node/BrowserLauncher.ts +2 -0
- package/front_end/third_party/puppeteer/package/src/revisions.ts +3 -3
- package/front_end/third_party/puppeteer/puppeteer-tsconfig.json +1 -0
- package/front_end/ui/components/data_grid/DataGridControllerIntegrator.ts +4 -1
- package/front_end/ui/components/dialogs/ButtonDialog.test.ts +78 -0
- package/front_end/ui/components/dialogs/ButtonDialog.ts +131 -0
- package/front_end/ui/components/dialogs/Dialog.test.ts +43 -0
- package/front_end/ui/components/dialogs/Dialog.ts +64 -2
- package/front_end/ui/components/dialogs/ShortcutDialog.test.ts +15 -1
- package/front_end/ui/components/dialogs/ShortcutDialog.ts +28 -20
- package/front_end/ui/components/dialogs/buttonDialog.css +9 -0
- package/front_end/ui/components/dialogs/dialog.css +15 -0
- package/front_end/ui/components/dialogs/dialogs.ts +2 -0
- package/front_end/ui/components/dialogs/shortcutDialog.css +34 -6
- package/front_end/ui/components/docs/dialog/button_dialog.html +28 -0
- package/front_end/ui/components/docs/dialog/button_dialog.ts +29 -0
- package/front_end/ui/components/docs/performance_panel/basic.ts +1 -1
- package/front_end/ui/components/docs/performance_panel/timeline_history_manager.ts +6 -4
- package/front_end/ui/components/floating_button/FloatingButton.ts +3 -2
- package/front_end/ui/components/icon_button/fileSourceIcon.css +7 -3
- package/front_end/ui/components/issue_counter/IssueCounter.ts +15 -2
- package/front_end/ui/components/legacy_wrapper/LegacyWrapper.ts +1 -1
- package/front_end/ui/components/markdown_view/MarkdownView.ts +15 -0
- package/front_end/ui/components/markdown_view/markdownView.css +1 -1
- package/front_end/ui/components/render_coordinator/RenderCoordinator.ts +24 -18
- package/front_end/ui/components/switch/SwitchImpl.ts +2 -2
- package/front_end/ui/legacy/Infobar.ts +6 -0
- package/front_end/ui/legacy/InspectorView.ts +40 -0
- package/front_end/ui/legacy/ListWidget.ts +4 -2
- package/front_end/ui/legacy/ThrottledWidget.ts +2 -2
- package/front_end/ui/legacy/Toolbar.ts +3 -3
- package/front_end/ui/legacy/UIUtils.ts +8 -6
- package/front_end/ui/legacy/Widget.ts +32 -0
- package/front_end/ui/legacy/components/data_grid/DataGrid.test.ts +6 -9
- package/front_end/ui/legacy/components/data_grid/DataGrid.ts +35 -34
- package/front_end/ui/legacy/components/data_grid/ViewportDataGrid.ts +1 -1
- package/front_end/ui/legacy/components/perf_ui/ChartViewport.ts +2 -2
- package/front_end/ui/legacy/components/perf_ui/FilmStripView.ts +1 -1
- package/front_end/ui/legacy/components/perf_ui/FlameChart.ts +32 -25
- package/front_end/ui/legacy/components/perf_ui/TimelineOverviewCalculator.ts +18 -4
- package/front_end/ui/legacy/components/perf_ui/TimelineOverviewPane.ts +80 -39
- package/front_end/ui/legacy/components/perf_ui/perf_ui-meta.ts +4 -4
- package/front_end/ui/legacy/components/utils/jsUtils.css +8 -0
- package/front_end/ui/legacy/filter.css +1 -1
- package/front_end/ui/legacy/inspectorCommon.css +1 -1
- package/front_end/ui/legacy/listWidget.css +4 -1
- package/front_end/ui/legacy/reportView.css +1 -1
- package/front_end/ui/legacy/toolbar.css +3 -6
- package/front_end/ui/legacy/treeoutline.css +3 -1
- package/front_end/ui/visual_logging/KnownContextValues.ts +12 -1
- package/front_end/ui/visual_logging/LoggingDriver.test.ts +27 -1
- package/front_end/ui/visual_logging/LoggingDriver.ts +7 -4
- package/package.json +2 -3
- package/scripts/build/wasm-as.py +1 -1
- package/scripts/freestyler/auto_freestyler.js +12 -4
- package/scripts/freestyler/to_tsv.mjs +40 -0
- package/scripts/tools/update_goldens.py +11 -13
- package/front_end/panels/timeline/components/insights/SidebarInsight.test.ts +0 -72
- package/front_end/ui/components/docs/two_states_counter/basic.html +0 -27
- package/front_end/ui/components/docs/two_states_counter/basic.ts +0 -45
- package/front_end/ui/components/two_states_counter/TwoStatesCounter.test.ts +0 -73
- package/front_end/ui/components/two_states_counter/TwoStatesCounter.ts +0 -104
- package/front_end/ui/components/two_states_counter/twoStatesCounter.css +0 -37
- package/front_end/ui/components/two_states_counter/two_states_counter.ts +0 -9
@@ -7,7 +7,13 @@ import * as Handlers from '../handlers/handlers.js';
|
|
7
7
|
import * as Helpers from '../helpers/helpers.js';
|
8
8
|
import * as Types from '../types/types.js';
|
9
9
|
|
10
|
-
import {
|
10
|
+
import {
|
11
|
+
InsightCategory,
|
12
|
+
type InsightModel,
|
13
|
+
type InsightSetContext,
|
14
|
+
InsightWarning,
|
15
|
+
type RequiredData,
|
16
|
+
} from './types.js';
|
11
17
|
|
12
18
|
const UIStrings = {
|
13
19
|
/**
|
@@ -110,8 +116,24 @@ function breakdownPhases(
|
|
110
116
|
};
|
111
117
|
}
|
112
118
|
|
113
|
-
function finalize(partialModel: Omit<LCPPhasesInsightModel, 'title'|'description'>):
|
114
|
-
|
119
|
+
function finalize(partialModel: Omit<LCPPhasesInsightModel, 'title'|'description'|'category'|'shouldShow'>):
|
120
|
+
LCPPhasesInsightModel {
|
121
|
+
const relatedEvents = [];
|
122
|
+
if (partialModel.lcpEvent) {
|
123
|
+
relatedEvents.push(partialModel.lcpEvent);
|
124
|
+
}
|
125
|
+
if (partialModel.lcpRequest) {
|
126
|
+
relatedEvents.push(partialModel.lcpRequest);
|
127
|
+
}
|
128
|
+
return {
|
129
|
+
title: i18nString(UIStrings.title),
|
130
|
+
description: i18nString(UIStrings.description),
|
131
|
+
category: InsightCategory.LCP,
|
132
|
+
// TODO: should move the component's "getPhaseData" to model.
|
133
|
+
shouldShow: Boolean(partialModel.phases) && (partialModel.lcpMs ?? 0) > 0,
|
134
|
+
...partialModel,
|
135
|
+
relatedEvents,
|
136
|
+
};
|
115
137
|
}
|
116
138
|
|
117
139
|
export function generateInsight(
|
@@ -5,6 +5,7 @@
|
|
5
5
|
export * as CLSCulprits from './CLSCulprits.js';
|
6
6
|
export * as DocumentLatency from './DocumentLatency.js';
|
7
7
|
export * as FontDisplay from './FontDisplay.js';
|
8
|
+
export * as ImageDelivery from './ImageDelivery.js';
|
8
9
|
export * as InteractionToNextPaint from './InteractionToNextPaint.js';
|
9
10
|
export * as LCPDiscovery from './LCPDiscovery.js';
|
10
11
|
export * as LCPPhases from './LCPPhases.js';
|
@@ -10,6 +10,7 @@ import type * as Lantern from '../lantern/lantern.js';
|
|
10
10
|
import type * as Types from '../types/types.js';
|
11
11
|
|
12
12
|
import {
|
13
|
+
InsightCategory,
|
13
14
|
type InsightModel,
|
14
15
|
type InsightSetContext,
|
15
16
|
type InsightSetContextWithNavigation,
|
@@ -150,8 +151,15 @@ function computeSavings(
|
|
150
151
|
return {metricSavings, requestIdToWastedMs};
|
151
152
|
}
|
152
153
|
|
153
|
-
function finalize(partialModel: Omit<RenderBlockingInsightModel, 'title'|'description'>):
|
154
|
-
|
154
|
+
function finalize(partialModel: Omit<RenderBlockingInsightModel, 'title'|'description'|'category'|'shouldShow'>):
|
155
|
+
RenderBlockingInsightModel {
|
156
|
+
return {
|
157
|
+
title: i18nString(UIStrings.title),
|
158
|
+
description: i18nString(UIStrings.description),
|
159
|
+
category: InsightCategory.LCP,
|
160
|
+
shouldShow: partialModel.renderBlockingRequests.length > 0,
|
161
|
+
...partialModel,
|
162
|
+
};
|
155
163
|
}
|
156
164
|
|
157
165
|
export function generateInsight(
|
@@ -7,7 +7,7 @@ import * as Helpers from '../helpers/helpers.js';
|
|
7
7
|
import {type SelectorTiming, SelectorTimingsKey} from '../types/TraceEvents.js';
|
8
8
|
import * as Types from '../types/types.js';
|
9
9
|
|
10
|
-
import type
|
10
|
+
import {InsightCategory, type InsightModel, type InsightSetContext, type RequiredData} from './types.js';
|
11
11
|
|
12
12
|
const UIStrings = {
|
13
13
|
/**
|
@@ -68,8 +68,15 @@ function aggregateSelectorStats(
|
|
68
68
|
return [...selectorMap.values()];
|
69
69
|
}
|
70
70
|
|
71
|
-
function finalize(partialModel: Omit<SlowCSSSelectorInsightModel, 'title'|'description'>):
|
72
|
-
|
71
|
+
function finalize(partialModel: Omit<SlowCSSSelectorInsightModel, 'title'|'description'|'category'|'shouldShow'>):
|
72
|
+
SlowCSSSelectorInsightModel {
|
73
|
+
return {
|
74
|
+
title: i18nString(UIStrings.title),
|
75
|
+
description: i18nString(UIStrings.description),
|
76
|
+
category: InsightCategory.ALL,
|
77
|
+
shouldShow: partialModel.topElapsedMs.length !== 0 && partialModel.topMatchAttempts.length !== 0,
|
78
|
+
...partialModel,
|
79
|
+
};
|
73
80
|
}
|
74
81
|
|
75
82
|
export function generateInsight(
|
@@ -9,7 +9,7 @@ import type * as Handlers from '../handlers/handlers.js';
|
|
9
9
|
import * as Helpers from '../helpers/helpers.js';
|
10
10
|
import type * as Types from '../types/types.js';
|
11
11
|
|
12
|
-
import type
|
12
|
+
import {InsightCategory, type InsightModel, type InsightSetContext, type RequiredData} from './types.js';
|
13
13
|
|
14
14
|
const UIStrings = {
|
15
15
|
/** Title of an insight that provides details about the code on a web page that the user doesn't control (referred to as "third-party code"). */
|
@@ -52,8 +52,16 @@ function getRelatedEvents(
|
|
52
52
|
return events;
|
53
53
|
}
|
54
54
|
|
55
|
-
function finalize(partialModel: Omit<ThirdPartiesInsightModel, 'title'|'description'>):
|
56
|
-
|
55
|
+
function finalize(partialModel: Omit<ThirdPartiesInsightModel, 'title'|'description'|'category'|'shouldShow'>):
|
56
|
+
ThirdPartiesInsightModel {
|
57
|
+
return {
|
58
|
+
title: i18nString(UIStrings.title),
|
59
|
+
description: i18nString(UIStrings.description),
|
60
|
+
category: InsightCategory.ALL,
|
61
|
+
shouldShow:
|
62
|
+
Boolean([...partialModel.summaryByEntity.entries()].find(kv => kv[0] !== partialModel.firstPartyEntity)),
|
63
|
+
...partialModel,
|
64
|
+
};
|
57
65
|
}
|
58
66
|
|
59
67
|
export function generateInsight(
|
@@ -6,7 +6,13 @@ import * as i18n from '../../../core/i18n/i18n.js';
|
|
6
6
|
import * as Helpers from '../helpers/helpers.js';
|
7
7
|
import type * as Types from '../types/types.js';
|
8
8
|
|
9
|
-
import {
|
9
|
+
import {
|
10
|
+
InsightCategory,
|
11
|
+
type InsightModel,
|
12
|
+
type InsightSetContext,
|
13
|
+
InsightWarning,
|
14
|
+
type RequiredData,
|
15
|
+
} from './types.js';
|
10
16
|
|
11
17
|
const UIStrings = {
|
12
18
|
/** Title of an insight that provides details about if the page's viewport is optimized for mobile viewing. */
|
@@ -30,8 +36,15 @@ export type ViewportInsightModel = InsightModel<{
|
|
30
36
|
viewportEvent?: Types.Events.ParseMetaViewport,
|
31
37
|
}>;
|
32
38
|
|
33
|
-
function finalize(partialModel: Omit<ViewportInsightModel, 'title'|'description'>):
|
34
|
-
|
39
|
+
function finalize(partialModel: Omit<ViewportInsightModel, 'title'|'description'|'category'|'shouldShow'>):
|
40
|
+
ViewportInsightModel {
|
41
|
+
return {
|
42
|
+
title: i18nString(UIStrings.title),
|
43
|
+
description: i18nString(UIStrings.description),
|
44
|
+
category: InsightCategory.INP,
|
45
|
+
shouldShow: partialModel.mobileOptimized === false,
|
46
|
+
...partialModel,
|
47
|
+
};
|
35
48
|
}
|
36
49
|
|
37
50
|
export function generateInsight(
|
@@ -2,6 +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
6
|
import type * as Handlers from '../handlers/handlers.js';
|
6
7
|
import type * as Lantern from '../lantern/lantern.js';
|
7
8
|
import type * as Types from '../types/types.js';
|
@@ -53,9 +54,19 @@ export interface MetricSavings {
|
|
53
54
|
/* eslint-enable @typescript-eslint/naming-convention */
|
54
55
|
}
|
55
56
|
|
57
|
+
export enum InsightCategory {
|
58
|
+
ALL = 'All',
|
59
|
+
INP = 'INP',
|
60
|
+
LCP = 'LCP',
|
61
|
+
CLS = 'CLS',
|
62
|
+
}
|
63
|
+
|
56
64
|
export type InsightModel<R extends Record<string, unknown>> = R&{
|
57
|
-
title:
|
58
|
-
description:
|
65
|
+
title: Common.UIString.LocalizedString,
|
66
|
+
description: Common.UIString.LocalizedString,
|
67
|
+
category: InsightCategory,
|
68
|
+
/** True if there is anything of interest to display to the user. */
|
69
|
+
shouldShow: boolean,
|
59
70
|
relatedEvents?: Types.Events.Event[],
|
60
71
|
warnings?: InsightWarning[],
|
61
72
|
metricSavings?: MetricSavings,
|
@@ -1,6 +1,8 @@
|
|
1
1
|
// Copyright 2023 The Chromium Authors. All rights reserved.
|
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
|
+
|
5
|
+
import type * as SDK from '../../../core/sdk/sdk.js';
|
4
6
|
import type * as Protocol from '../../../generated/protocol.js';
|
5
7
|
|
6
8
|
import type {TraceWindowMicroSeconds} from './Timing.js';
|
@@ -177,7 +179,12 @@ export interface Modifications {
|
|
177
179
|
export interface MetaData {
|
178
180
|
source?: 'DevTools';
|
179
181
|
startTime?: string;
|
182
|
+
emulatedDeviceTitle?: string;
|
183
|
+
// Only set if network throttling is active.
|
180
184
|
networkThrottling?: string;
|
185
|
+
// Only set if network throttling is active.
|
186
|
+
networkThrottlingConditions?: Omit<SDK.NetworkManager.Conditions, 'title'>;
|
187
|
+
// Only set if CPU throttling is active.
|
181
188
|
cpuThrottling?: number;
|
182
189
|
hardwareConcurrency?: number;
|
183
190
|
dataOrigin?: DataOrigin;
|
@@ -677,7 +677,10 @@ export interface MarkerEvent extends Event {
|
|
677
677
|
}
|
678
678
|
|
679
679
|
export function isMarkerEvent(event: Event): event is MarkerEvent {
|
680
|
-
|
680
|
+
if (event.ph === Phase.INSTANT || event.ph === Phase.MARK) {
|
681
|
+
return markerTypeGuards.some(fn => fn(event));
|
682
|
+
}
|
683
|
+
return false;
|
681
684
|
}
|
682
685
|
|
683
686
|
const pageLoadEventTypeGuards = [
|
@@ -686,7 +689,10 @@ const pageLoadEventTypeGuards = [
|
|
686
689
|
];
|
687
690
|
|
688
691
|
export function eventIsPageLoadEvent(event: Event): event is PageLoadEvent {
|
689
|
-
|
692
|
+
if (event.ph === Phase.INSTANT || event.ph === Phase.MARK) {
|
693
|
+
return pageLoadEventTypeGuards.some(fn => fn(event));
|
694
|
+
}
|
695
|
+
return false;
|
690
696
|
}
|
691
697
|
|
692
698
|
export interface LargestContentfulPaintCandidate extends Mark {
|
@@ -2635,6 +2641,7 @@ export function isJSInvocationEvent(event: Event): boolean {
|
|
2635
2641
|
switch (event.name) {
|
2636
2642
|
case Name.RUN_MICROTASKS:
|
2637
2643
|
case Name.FUNCTION_CALL:
|
2644
|
+
// TODO(paulirish): Define types for these Evaluate* events
|
2638
2645
|
case Name.EVALUATE_SCRIPT:
|
2639
2646
|
case Name.EVALUATE_MODULE:
|
2640
2647
|
case Name.EVENT_DISPATCH:
|
@@ -860,7 +860,7 @@ export class AnimationTimeline extends UI.Widget.VBox implements
|
|
860
860
|
this.#pauseButton.setEnabled(false);
|
861
861
|
}
|
862
862
|
} else {
|
863
|
-
this.setDuration(
|
863
|
+
this.setDuration(group.finiteDuration());
|
864
864
|
this.#playbackRateButtons.forEach(button => {
|
865
865
|
button.removeAttribute('disabled');
|
866
866
|
});
|
@@ -966,7 +966,7 @@ export class AnimationTimeline extends UI.Widget.VBox implements
|
|
966
966
|
lastDraw = gridWidth;
|
967
967
|
const label = UI.UIUtils.createSVGChild(this.#grid, 'text', 'animation-timeline-grid-label');
|
968
968
|
label.textContent = isScrollDriven ? `${time.toFixed(0)}px` : i18n.TimeUtilities.millisToString(time);
|
969
|
-
label.setAttribute('x', (gridWidth +
|
969
|
+
label.setAttribute('x', (gridWidth + 12).toString());
|
970
970
|
label.setAttribute('y', '16');
|
971
971
|
}
|
972
972
|
}
|
@@ -1053,8 +1053,6 @@ export class AnimationTimeline extends UI.Widget.VBox implements
|
|
1053
1053
|
this.setCurrentTimeText(this.#scrubberCurrentTime());
|
1054
1054
|
if (this.#scrubberPlayer.playState.toString() === 'pending' || this.#scrubberPlayer.playState === 'running') {
|
1055
1055
|
this.element.window().requestAnimationFrame(this.updateScrubber.bind(this));
|
1056
|
-
} else if (this.#scrubberPlayer.playState === 'finished') {
|
1057
|
-
this.clearCurrentTimeText();
|
1058
1056
|
}
|
1059
1057
|
}
|
1060
1058
|
|
@@ -4,7 +4,6 @@
|
|
4
4
|
|
5
5
|
import type * as Common from '../../core/common/common.js';
|
6
6
|
import type * as Platform from '../../core/platform/platform.js';
|
7
|
-
import * as Root from '../../core/root/root.js';
|
8
7
|
import * as SDK from '../../core/sdk/sdk.js';
|
9
8
|
import * as Protocol from '../../generated/protocol.js';
|
10
9
|
import {createTarget, stubNoopSettings} from '../../testing/EnvironmentHelpers.js';
|
@@ -196,8 +195,6 @@ describeWithMockConnection('ApplicationPanelSidebar', () => {
|
|
196
195
|
});
|
197
196
|
|
198
197
|
it('shows extension storage based on added models', async () => {
|
199
|
-
Root.Runtime.experiments.enableForTest(Root.Runtime.ExperimentName.EXTENSION_STORAGE_VIEWER);
|
200
|
-
|
201
198
|
for (const useTreeView of [false, true]) {
|
202
199
|
Application.ResourcesPanel.ResourcesPanel.instance({forceNew: true});
|
203
200
|
const sidebar = await Application.ResourcesPanel.ResourcesPanel.showAndGetSidebar();
|
@@ -241,8 +238,6 @@ describeWithMockConnection('ApplicationPanelSidebar', () => {
|
|
241
238
|
});
|
242
239
|
|
243
240
|
it('does not add extension storage if already added by another model', async () => {
|
244
|
-
Root.Runtime.experiments.enableForTest(Root.Runtime.ExperimentName.EXTENSION_STORAGE_VIEWER);
|
245
|
-
|
246
241
|
Application.ResourcesPanel.ResourcesPanel.instance({forceNew: true});
|
247
242
|
const sidebar = await Application.ResourcesPanel.ResourcesPanel.showAndGetSidebar();
|
248
243
|
|
@@ -36,7 +36,6 @@ import * as Common from '../../core/common/common.js';
|
|
36
36
|
import * as Host from '../../core/host/host.js';
|
37
37
|
import * as i18n from '../../core/i18n/i18n.js';
|
38
38
|
import * as Platform from '../../core/platform/platform.js';
|
39
|
-
import * as Root from '../../core/root/root.js';
|
40
39
|
import * as SDK from '../../core/sdk/sdk.js';
|
41
40
|
import * as Protocol from '../../generated/protocol.js';
|
42
41
|
import * as IssuesManager from '../../models/issues_manager/issues_manager.js';
|
@@ -281,7 +280,7 @@ export class ApplicationPanelSidebar extends UI.Widget.VBox implements SDK.Targe
|
|
281
280
|
serviceWorkersTreeElement: ServiceWorkersTreeElement;
|
282
281
|
localStorageListTreeElement: ExpandableApplicationPanelTreeElement;
|
283
282
|
sessionStorageListTreeElement: ExpandableApplicationPanelTreeElement;
|
284
|
-
extensionStorageListTreeElement: ExpandableApplicationPanelTreeElement
|
283
|
+
extensionStorageListTreeElement: ExpandableApplicationPanelTreeElement;
|
285
284
|
indexedDBListTreeElement: IndexedDBTreeElement;
|
286
285
|
interestGroupTreeElement: InterestGroupTreeElement;
|
287
286
|
cookieListTreeElement: ExpandableApplicationPanelTreeElement;
|
@@ -364,17 +363,15 @@ export class ApplicationPanelSidebar extends UI.Widget.VBox implements SDK.Targe
|
|
364
363
|
|
365
364
|
storageTreeElement.appendChild(this.sessionStorageListTreeElement);
|
366
365
|
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
this.extensionStorageListTreeElement.setLeadingIcons([extensionStorageIcon]);
|
366
|
+
this.extensionStorageListTreeElement =
|
367
|
+
new ExpandableApplicationPanelTreeElement(panel, i18nString(UIStrings.extensionStorage), 'extension-storage');
|
368
|
+
this.extensionStorageListTreeElement.setLink(
|
369
|
+
'https://developer.chrome.com/docs/extensions/reference/api/storage/?utm_source=devtools' as
|
370
|
+
Platform.DevToolsPath.UrlString);
|
371
|
+
const extensionStorageIcon = IconButton.Icon.create('table');
|
372
|
+
this.extensionStorageListTreeElement.setLeadingIcons([extensionStorageIcon]);
|
375
373
|
|
376
|
-
|
377
|
-
}
|
374
|
+
storageTreeElement.appendChild(this.extensionStorageListTreeElement);
|
378
375
|
|
379
376
|
this.indexedDBListTreeElement = new IndexedDBTreeElement(panel);
|
380
377
|
this.indexedDBListTreeElement.setLink(
|
@@ -472,14 +469,12 @@ export class ApplicationPanelSidebar extends UI.Widget.VBox implements SDK.Targe
|
|
472
469
|
},
|
473
470
|
{scoped: true});
|
474
471
|
|
475
|
-
|
476
|
-
|
477
|
-
ExtensionStorageModel,
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
{scoped: true});
|
482
|
-
}
|
472
|
+
SDK.TargetManager.TargetManager.instance().observeModels(
|
473
|
+
ExtensionStorageModel, {
|
474
|
+
modelAdded: (model: ExtensionStorageModel) => this.extensionStorageModelAdded(model),
|
475
|
+
modelRemoved: (model: ExtensionStorageModel) => this.extensionStorageModelRemoved(model),
|
476
|
+
},
|
477
|
+
{scoped: true});
|
483
478
|
|
484
479
|
SDK.TargetManager.TargetManager.instance().observeModels(
|
485
480
|
IndexedDBModel, {
|
@@ -1190,7 +1185,6 @@ export class ManifestChildTreeElement extends ApplicationPanelTreeElement {
|
|
1190
1185
|
(this.parent as AppManifestTreeElement)?.showManifestView();
|
1191
1186
|
this.#sectionElement.scrollIntoView();
|
1192
1187
|
UI.ARIAUtils.alert(i18nString(UIStrings.onInvokeAlert, {PH1: this.listItemElement.title}));
|
1193
|
-
Host.userMetrics.manifestSectionSelected(this.listItemElement.title);
|
1194
1188
|
}
|
1195
1189
|
// direct focus to the corresponding element
|
1196
1190
|
onInvokeElementKeydown(event: KeyboardEvent): void {
|
@@ -473,7 +473,10 @@ export class IDBDataView extends UI.View.SimpleView {
|
|
473
473
|
this.updateData(true);
|
474
474
|
}
|
475
475
|
|
476
|
-
update(objectStore: ObjectStore, index: Index|null): void {
|
476
|
+
override update(objectStore: ObjectStore|null = null, index: Index|null = null): void {
|
477
|
+
if (!objectStore) {
|
478
|
+
return;
|
479
|
+
}
|
477
480
|
this.objectStore = objectStore;
|
478
481
|
this.index = index;
|
479
482
|
|
@@ -285,7 +285,10 @@ export class ServiceWorkerCacheView extends UI.View.SimpleView {
|
|
285
285
|
node.remove();
|
286
286
|
}
|
287
287
|
|
288
|
-
update(cache: SDK.ServiceWorkerCacheModel.Cache): void {
|
288
|
+
override update(cache: SDK.ServiceWorkerCacheModel.Cache|null = null): void {
|
289
|
+
if (!cache) {
|
290
|
+
return;
|
291
|
+
}
|
289
292
|
this.cache = cache;
|
290
293
|
this.resetDataGrid();
|
291
294
|
void this.updateData(true);
|
@@ -73,7 +73,7 @@ describeWithMockConnection('StorageView', () => {
|
|
73
73
|
const container = view.element.shadowRoot?.querySelector('.clear-storage-header') || null;
|
74
74
|
assert.instanceOf(container, HTMLDivElement);
|
75
75
|
const customQuotaCheckbox =
|
76
|
-
container.shadowRoot!.querySelector('.quota-override-row
|
76
|
+
container.shadowRoot!.querySelector('.quota-override-row dt-checkbox')!.shadowRoot!.querySelector(
|
77
77
|
'[title="Simulate custom storage quota"]');
|
78
78
|
assert.instanceOf(customQuotaCheckbox, HTMLInputElement);
|
79
79
|
customQuotaCheckbox.checked = true;
|
@@ -249,7 +249,7 @@ export abstract class CategorizedBreakpointsSidebarPane extends UI.Widget.VBox {
|
|
249
249
|
return null;
|
250
250
|
}
|
251
251
|
|
252
|
-
|
252
|
+
override update(): void {
|
253
253
|
const target = UI.Context.Context.instance().flavor(SDK.Target.Target);
|
254
254
|
const debuggerModel = target ? target.model(SDK.DebuggerModel.DebuggerModel) : null;
|
255
255
|
const details = debuggerModel ? debuggerModel.debuggerPausedDetails() : null;
|
@@ -349,7 +349,7 @@ export class DOMBreakpointsSidebarPane extends UI.Widget.VBox implements
|
|
349
349
|
this.update();
|
350
350
|
}
|
351
351
|
|
352
|
-
|
352
|
+
override update(): void {
|
353
353
|
const details = UI.Context.Context.instance().flavor(SDK.DebuggerModel.DebuggerPausedDetails);
|
354
354
|
if (this.#highlightedBreakpoint) {
|
355
355
|
const oldHighlightedBreakpoint = this.#highlightedBreakpoint;
|
@@ -372,7 +372,7 @@ export class XHRBreakpointsSidebarPane extends UI.Widget.VBox implements UI.Cont
|
|
372
372
|
this.update();
|
373
373
|
}
|
374
374
|
|
375
|
-
|
375
|
+
override update(): void {
|
376
376
|
const isEmpty = this.#breakpoints.length === 0;
|
377
377
|
this.#list.element.classList.toggle('hidden', isEmpty);
|
378
378
|
this.#emptyElement.classList.toggle('hidden', !isEmpty);
|
@@ -16,10 +16,35 @@ import {describeWithMockConnection} from '../../testing/MockConnection.js';
|
|
16
16
|
import * as Components from '../../ui/legacy/components/utils/utils.js';
|
17
17
|
import * as UI from '../../ui/legacy/legacy.js';
|
18
18
|
|
19
|
+
import * as Console from './console.js';
|
19
20
|
// The css files aren't exported by the bundle, so we need to import it directly.
|
20
21
|
// eslint-disable-next-line rulesdir/es_modules_import
|
21
22
|
import consoleViewStyles from './consoleView.css.js';
|
22
23
|
|
24
|
+
describe('ConsoleViewMessage', () => {
|
25
|
+
describe('concatErrorDescriptionAndIssueSummary', () => {
|
26
|
+
const {concatErrorDescriptionAndIssueSummary} = Console.ConsoleViewMessage;
|
27
|
+
|
28
|
+
it('correctly appends the issue summary in case of single line error descriptions', () => {
|
29
|
+
assert.strictEqual(
|
30
|
+
concatErrorDescriptionAndIssueSummary(
|
31
|
+
'TypeError: Failed to fetch',
|
32
|
+
'Access blocked by CORS policy: Cross origin requests are not allowed by request mode.'),
|
33
|
+
'TypeError: Failed to fetch. Access blocked by CORS policy: Cross origin requests are not allowed by request mode.',
|
34
|
+
);
|
35
|
+
});
|
36
|
+
|
37
|
+
it('correctly inserts the issue summary in case of multi-line error descriptions', () => {
|
38
|
+
assert.strictEqual(
|
39
|
+
concatErrorDescriptionAndIssueSummary(
|
40
|
+
'TypeError: Failed to fetch\n at (index):25:5',
|
41
|
+
'Access blocked by CORS policy: Cross origin requests are not allowed by request mode.'),
|
42
|
+
'TypeError: Failed to fetch. Access blocked by CORS policy: Cross origin requests are not allowed by request mode.\n at (index):25:5',
|
43
|
+
);
|
44
|
+
});
|
45
|
+
});
|
46
|
+
});
|
47
|
+
|
23
48
|
describeWithMockConnection('ConsoleViewMessage', () => {
|
24
49
|
describe('anchor rendering', () => {
|
25
50
|
it('links to the top frame for normal console message', () => {
|
@@ -221,6 +221,24 @@ export const getMessageForElement = (element: Element): ConsoleViewMessage|undef
|
|
221
221
|
return elementToMessage.get(element);
|
222
222
|
};
|
223
223
|
|
224
|
+
/**
|
225
|
+
* Combines the error description (essentially the `Error#stack` property value)
|
226
|
+
* with the `issueSummary`.
|
227
|
+
*
|
228
|
+
* @param description the `description` property of the `Error` remote object.
|
229
|
+
* @param issueSummary the optional `issueSummary` of the `exceptionMetaData`.
|
230
|
+
* @returns the enriched description.
|
231
|
+
* @see https://goo.gle/devtools-reduce-network-noise-design
|
232
|
+
*/
|
233
|
+
export const concatErrorDescriptionAndIssueSummary = (description: string, issueSummary: string): string => {
|
234
|
+
// Insert the issue summary right after the error message.
|
235
|
+
const pos = description.indexOf('\n');
|
236
|
+
const prefix = pos === -1 ? description : description.substring(0, pos);
|
237
|
+
const suffix = pos === -1 ? '' : description.substring(pos);
|
238
|
+
description = `${prefix}. ${issueSummary}${suffix}`;
|
239
|
+
return description;
|
240
|
+
};
|
241
|
+
|
224
242
|
// This value reflects the 18px min-height of .console-message, plus the
|
225
243
|
// 1px border of .console-message-wrapper. Keep in sync with consoleView.css.
|
226
244
|
const defaultConsoleRowHeight = 19;
|
@@ -1704,6 +1722,11 @@ export class ConsoleViewMessage implements ConsoleViewportElement {
|
|
1704
1722
|
return null;
|
1705
1723
|
}
|
1706
1724
|
|
1725
|
+
const issueSummary = exceptionDetails?.exceptionMetaData?.issueSummary;
|
1726
|
+
if (typeof issueSummary === 'string') {
|
1727
|
+
string = concatErrorDescriptionAndIssueSummary(string, issueSummary);
|
1728
|
+
}
|
1729
|
+
|
1707
1730
|
const linkInfos = parseSourcePositionsFromErrorStack(runtimeModel, string);
|
1708
1731
|
if (!linkInfos?.length) {
|
1709
1732
|
return null;
|
@@ -195,7 +195,7 @@ export class CoverageListView extends UI.Widget.VBox {
|
|
195
195
|
this.setDefaultFocusedChild(dataGridWidget);
|
196
196
|
}
|
197
197
|
|
198
|
-
update(coverageInfo: URLCoverageInfo[]): void {
|
198
|
+
override update(coverageInfo: URLCoverageInfo[] = []): void {
|
199
199
|
let hadUpdates = false;
|
200
200
|
const maxSize = coverageInfo.reduce((acc, entry) => Math.max(acc, entry.size()), 0);
|
201
201
|
const rootNode = this.dataGrid.rootNode();
|
@@ -145,7 +145,7 @@ export class DeveloperResourcesListView extends UI.Widget.VBox {
|
|
145
145
|
}
|
146
146
|
}
|
147
147
|
|
148
|
-
update(items: Iterable<SDK.PageResourceLoader.PageResource>): void {
|
148
|
+
override update(items: Iterable<SDK.PageResourceLoader.PageResource> = []): void {
|
149
149
|
let hadUpdates = false;
|
150
150
|
const rootNode = this.dataGrid.rootNode();
|
151
151
|
for (const item of items) {
|
@@ -29,6 +29,7 @@ describeWithMockConnection('ElementStatePaneWidget', () => {
|
|
29
29
|
'in-range',
|
30
30
|
'out-of-range',
|
31
31
|
'visited',
|
32
|
+
'link',
|
32
33
|
'checked',
|
33
34
|
'indeterminate',
|
34
35
|
'placeholder-shown',
|
@@ -292,14 +293,14 @@ describeWithMockConnection('ElementStatePaneWidget', () => {
|
|
292
293
|
it('Shows the specific pseudo-classes for a and area with href', async () => {
|
293
294
|
await assertExpectedPseudoClasses(
|
294
295
|
'a',
|
295
|
-
['visited', 'read-write'],
|
296
|
+
['visited', 'link', 'read-write'],
|
296
297
|
false,
|
297
298
|
['href', 'www.google.com'],
|
298
299
|
);
|
299
300
|
|
300
301
|
await assertExpectedPseudoClasses(
|
301
302
|
'area',
|
302
|
-
['visited', 'read-write'],
|
303
|
+
['visited', 'link', 'read-write'],
|
303
304
|
false,
|
304
305
|
['href', 'www.google.com'],
|
305
306
|
);
|