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
@@ -56,13 +56,13 @@
|
|
56
56
|
margin-top: 0;
|
57
57
|
}
|
58
58
|
|
59
|
-
.scripts-debug-toolbar-drawer >
|
59
|
+
.scripts-debug-toolbar-drawer > dt-checkbox {
|
60
60
|
display: none;
|
61
61
|
padding-left: 3px;
|
62
62
|
height: 28px;
|
63
63
|
}
|
64
64
|
|
65
|
-
.scripts-debug-toolbar-drawer.expanded >
|
65
|
+
.scripts-debug-toolbar-drawer.expanded > dt-checkbox {
|
66
66
|
display: flex;
|
67
67
|
}
|
68
68
|
|
@@ -7,10 +7,9 @@ import * as Trace from '../../models/trace/trace.js';
|
|
7
7
|
import * as PerfUI from '../../ui/legacy/components/perf_ui/perf_ui.js';
|
8
8
|
import * as ThemeSupport from '../../ui/legacy/theme_support/theme_support.js';
|
9
9
|
|
10
|
-
import {addDecorationToEvent, buildGroupStyle, buildTrackHeader
|
10
|
+
import {addDecorationToEvent, buildGroupStyle, buildTrackHeader} from './AppenderUtils.js';
|
11
11
|
import {
|
12
12
|
type CompatibilityTracksAppender,
|
13
|
-
type HighlightedEntryInfo,
|
14
13
|
type TrackAppender,
|
15
14
|
type TrackAppenderName,
|
16
15
|
VisualLoggingTrackName,
|
@@ -75,9 +74,4 @@ export class AnimationsTrackAppender implements TrackAppender {
|
|
75
74
|
const {displayName} = event.args.data.beginEvent.args.data;
|
76
75
|
return displayName || event.name;
|
77
76
|
}
|
78
|
-
|
79
|
-
highlightedEntryInfo(event: Trace.Types.Events.SyntheticAnimationPair): HighlightedEntryInfo {
|
80
|
-
const title = this.titleForEvent(event);
|
81
|
-
return {title, formattedTime: getFormattedTime(event.dur)};
|
82
|
-
}
|
83
77
|
}
|
@@ -81,7 +81,7 @@ export function buildTrackHeader(
|
|
81
81
|
* Returns the time info shown when an event is hovered in the timeline.
|
82
82
|
* @param totalTime the total time of the hovered event.
|
83
83
|
* @param selfTime the self time of the hovered event.
|
84
|
-
* @returns the formatted time string for
|
84
|
+
* @returns the formatted time string for popoverInfo
|
85
85
|
*/
|
86
86
|
export function getFormattedTime(
|
87
87
|
totalTime?: Trace.Types.Timing.MicroSeconds, selfTime?: Trace.Types.Timing.MicroSeconds): string {
|
@@ -3,6 +3,7 @@
|
|
3
3
|
// found in the LICENSE file.
|
4
4
|
|
5
5
|
import * as Common from '../../core/common/common.js';
|
6
|
+
import * as Platform from '../../core/platform/platform.js';
|
6
7
|
import * as Root from '../../core/root/root.js';
|
7
8
|
import * as Trace from '../../models/trace/trace.js';
|
8
9
|
import type * as PerfUI from '../../ui/legacy/components/perf_ui/perf_ui.js';
|
@@ -25,11 +26,12 @@ import {
|
|
25
26
|
import {TimingsTrackAppender} from './TimingsTrackAppender.js';
|
26
27
|
import * as TimelineUtils from './utils/utils.js';
|
27
28
|
|
28
|
-
export type
|
29
|
+
export type PopoverInfo = {
|
29
30
|
title: string,
|
30
31
|
formattedTime: string,
|
31
|
-
|
32
|
-
|
32
|
+
url: string|null,
|
33
|
+
warningElements: HTMLSpanElement[],
|
34
|
+
additionalElements: HTMLElement[],
|
33
35
|
};
|
34
36
|
|
35
37
|
let showPostMessageEvents: boolean|undefined;
|
@@ -124,9 +126,9 @@ export interface TrackAppender {
|
|
124
126
|
*/
|
125
127
|
titleForEvent?(event: Trace.Types.Events.Event): string;
|
126
128
|
/**
|
127
|
-
*
|
129
|
+
* Updates the standard popover (AKA tooltip) some appender specific details.
|
128
130
|
*/
|
129
|
-
|
131
|
+
setPopoverInfo?(event: Trace.Types.Events.Event, info: PopoverInfo): void;
|
130
132
|
/**
|
131
133
|
* Returns the a callback function to draw an event to overrides the normal rectangle draw operation.
|
132
134
|
*/
|
@@ -645,47 +647,42 @@ export class CompatibilityTracksAppender {
|
|
645
647
|
/**
|
646
648
|
* Returns the info shown when an event in the timeline is hovered.
|
647
649
|
*/
|
648
|
-
|
650
|
+
popoverInfo(event: Trace.Types.Events.Event, level: number): PopoverInfo {
|
649
651
|
const track = this.#trackForLevel.get(level);
|
650
652
|
if (!track) {
|
651
653
|
throw new Error('Track not found for level');
|
652
654
|
}
|
653
655
|
|
654
|
-
//
|
655
|
-
|
656
|
-
|
657
|
-
|
658
|
-
|
659
|
-
|
660
|
-
|
661
|
-
let title = this.titleForEvent(event, level);
|
662
|
-
let formattedTime = getFormattedTime(event.dur);
|
663
|
-
let additionalElement;
|
664
|
-
|
665
|
-
// If the track defines a custom highlight, call it and use its values.
|
666
|
-
if (track.highlightedEntryInfo) {
|
667
|
-
const {
|
668
|
-
title: customTitle,
|
669
|
-
formattedTime: customFormattedTime,
|
670
|
-
warningElements: extraWarningElements,
|
671
|
-
additionalElement: element,
|
672
|
-
} = track.highlightedEntryInfo(event);
|
673
|
-
if (customTitle) {
|
674
|
-
title = customTitle;
|
675
|
-
}
|
676
|
-
if (customFormattedTime) {
|
677
|
-
formattedTime = customFormattedTime;
|
678
|
-
}
|
679
|
-
if (extraWarningElements) {
|
680
|
-
warningElements.push(...extraWarningElements);
|
681
|
-
}
|
682
|
-
additionalElement = element;
|
683
|
-
}
|
684
|
-
return {
|
685
|
-
title,
|
686
|
-
formattedTime,
|
687
|
-
warningElements,
|
688
|
-
additionalElement,
|
656
|
+
// Defaults here, though tracks may chose to redefine title/formattedTime
|
657
|
+
const info: PopoverInfo = {
|
658
|
+
title: this.titleForEvent(event, level),
|
659
|
+
formattedTime: getFormattedTime(event.dur),
|
660
|
+
warningElements: TimelineComponents.DetailsView.buildWarningElementsForEvent(event, this.#parsedTrace),
|
661
|
+
additionalElements: [],
|
662
|
+
url: null,
|
689
663
|
};
|
664
|
+
|
665
|
+
// If the track defines its own popoverInfo(), it'll update values within
|
666
|
+
if (track.setPopoverInfo) {
|
667
|
+
track.setPopoverInfo(event, info);
|
668
|
+
}
|
669
|
+
|
670
|
+
// If there's a url associated, add into additionalElements
|
671
|
+
const url = URL.parse(
|
672
|
+
info.url ?? TimelineUtils.SourceMapsResolver.SourceMapsResolver.resolvedURLForEntry(this.#parsedTrace, event) ??
|
673
|
+
'');
|
674
|
+
if (url) {
|
675
|
+
const MAX_PATH_LENGTH = 45;
|
676
|
+
const MAX_ORIGIN_LENGTH = 30;
|
677
|
+
const path = Platform.StringUtilities.trimMiddle(url.href.replace(url.origin, ''), MAX_PATH_LENGTH);
|
678
|
+
const origin =
|
679
|
+
Platform.StringUtilities.trimEndWithMaxLength(url.origin.replace('https://', ''), MAX_ORIGIN_LENGTH);
|
680
|
+
const urlElems = document.createElement('div');
|
681
|
+
urlElems.createChild('span', 'popoverinfo-url-path').textContent = path;
|
682
|
+
urlElems.createChild('span', 'popoverinfo-url-origin').textContent = `(${origin})`;
|
683
|
+
info.additionalElements.push(urlElems);
|
684
|
+
}
|
685
|
+
|
686
|
+
return info;
|
690
687
|
}
|
691
688
|
}
|
@@ -5,10 +5,9 @@ import * as i18n from '../../core/i18n/i18n.js';
|
|
5
5
|
import * as Trace from '../../models/trace/trace.js';
|
6
6
|
import * as ThemeSupport from '../../ui/legacy/theme_support/theme_support.js';
|
7
7
|
|
8
|
-
import {buildGroupStyle, buildTrackHeader
|
8
|
+
import {buildGroupStyle, buildTrackHeader} from './AppenderUtils.js';
|
9
9
|
import {
|
10
10
|
type CompatibilityTracksAppender,
|
11
|
-
type HighlightedEntryInfo,
|
12
11
|
type TrackAppender,
|
13
12
|
type TrackAppenderName,
|
14
13
|
VisualLoggingTrackName,
|
@@ -100,17 +99,9 @@ export class ExtensionTrackAppender implements TrackAppender {
|
|
100
99
|
}
|
101
100
|
|
102
101
|
titleForEvent(event: Trace.Types.Events.Event): string {
|
102
|
+
if (Trace.Types.Extensions.isSyntheticExtensionEntry(event) && event.args.tooltipText) {
|
103
|
+
return event.args.tooltipText;
|
104
|
+
}
|
103
105
|
return event.name;
|
104
106
|
}
|
105
|
-
|
106
|
-
/**
|
107
|
-
* Returns the info shown when an event added by this appender
|
108
|
-
* is hovered in the timeline.
|
109
|
-
*/
|
110
|
-
highlightedEntryInfo(event: Trace.Types.Events.Event): HighlightedEntryInfo {
|
111
|
-
const title = Trace.Types.Extensions.isSyntheticExtensionEntry(event) && event.args.tooltipText ?
|
112
|
-
event.args.tooltipText :
|
113
|
-
this.titleForEvent(event);
|
114
|
-
return {title, formattedTime: getFormattedTime(event.dur)};
|
115
|
-
}
|
116
107
|
}
|
@@ -9,7 +9,7 @@ import * as PerfUI from '../../ui/legacy/components/perf_ui/perf_ui.js';
|
|
9
9
|
import {buildGroupStyle, buildTrackHeader} from './AppenderUtils.js';
|
10
10
|
import {
|
11
11
|
type CompatibilityTracksAppender,
|
12
|
-
type
|
12
|
+
type PopoverInfo,
|
13
13
|
type TrackAppender,
|
14
14
|
type TrackAppenderName,
|
15
15
|
VisualLoggingTrackName,
|
@@ -148,12 +148,11 @@ export class InteractionsTrackAppender implements TrackAppender {
|
|
148
148
|
return this.#colorGenerator.colorForID(idForColorGeneration);
|
149
149
|
}
|
150
150
|
|
151
|
-
|
151
|
+
setPopoverInfo(event: Trace.Types.Events.Event, info: PopoverInfo): void {
|
152
152
|
if (Trace.Types.Events.isSyntheticInteraction(event)) {
|
153
153
|
const breakdown = new Components.InteractionBreakdown.InteractionBreakdown();
|
154
154
|
breakdown.entry = event;
|
155
|
-
|
155
|
+
info.additionalElements.push(breakdown);
|
156
156
|
}
|
157
|
-
return {title: '', formattedTime: ''};
|
158
157
|
}
|
159
158
|
}
|
@@ -13,7 +13,7 @@ import {buildGroupStyle, buildTrackHeader} from './AppenderUtils.js';
|
|
13
13
|
import {
|
14
14
|
type CompatibilityTracksAppender,
|
15
15
|
type DrawOverride,
|
16
|
-
type
|
16
|
+
type PopoverInfo,
|
17
17
|
type TrackAppender,
|
18
18
|
type TrackAppenderName,
|
19
19
|
VisualLoggingTrackName,
|
@@ -143,31 +143,25 @@ export class LayoutShiftsTrackAppender implements TrackAppender {
|
|
143
143
|
return '';
|
144
144
|
}
|
145
145
|
|
146
|
-
|
147
|
-
* Returns the info shown when an event added by this appender
|
148
|
-
* is hovered in the timeline.
|
149
|
-
*/
|
150
|
-
highlightedEntryInfo(event: Trace.Types.Events.Event): HighlightedEntryInfo {
|
146
|
+
setPopoverInfo(event: Trace.Types.Events.Event, info: PopoverInfo): void {
|
151
147
|
const score = Trace.Types.Events.isLayoutShift(event) ? event.args.data?.weighted_score_delta ?? 0 :
|
152
148
|
Trace.Types.Events.isSyntheticLayoutShiftCluster(event) ? event.clusterCumulativeScore :
|
153
149
|
-1;
|
154
|
-
|
150
|
+
// Score isn't a duration, but the UI works anyhow.
|
151
|
+
info.formattedTime = score.toFixed(4);
|
152
|
+
info.title = Trace.Types.Events.isLayoutShift(event) ? i18nString(UIStrings.layoutShift) :
|
155
153
|
Trace.Types.Events.isSyntheticLayoutShiftCluster(event) ? i18nString(UIStrings.layoutShiftCluster) :
|
156
154
|
event.name;
|
157
155
|
|
158
|
-
let additionalElement;
|
159
156
|
if (Trace.Types.Events.isSyntheticLayoutShift(event)) {
|
160
157
|
// Screenshots are max 500x500 naturally, but on a laptop in dock-to-right, 500px tall usually doesn't fit.
|
161
158
|
// In the future, we may investigate a way to dynamically scale this tooltip content per available space.
|
162
159
|
const maxSize = new UI.Geometry.Size(510, 400);
|
163
160
|
const vizElem = LayoutShiftsTrackAppender.createShiftViz(event, this.#parsedTrace, maxSize);
|
164
161
|
if (vizElem) {
|
165
|
-
|
162
|
+
info.additionalElements.push(vizElem);
|
166
163
|
}
|
167
164
|
}
|
168
|
-
|
169
|
-
// Score isn't a duration, but the UI works anyhow.
|
170
|
-
return {title, formattedTime: score.toFixed(4), additionalElement};
|
171
165
|
}
|
172
166
|
|
173
167
|
getDrawOverride(event: Trace.Types.Events.Event): DrawOverride|undefined {
|
@@ -6,10 +6,9 @@ import * as Root from '../../core/root/root.js';
|
|
6
6
|
import type * as Trace from '../../models/trace/trace.js';
|
7
7
|
import * as ThemeSupport from '../../ui/legacy/theme_support/theme_support.js';
|
8
8
|
|
9
|
-
import {buildGroupStyle, buildTrackHeader
|
9
|
+
import {buildGroupStyle, buildTrackHeader} from './AppenderUtils.js';
|
10
10
|
import {
|
11
11
|
type CompatibilityTracksAppender,
|
12
|
-
type HighlightedEntryInfo,
|
13
12
|
type TrackAppender,
|
14
13
|
type TrackAppenderName,
|
15
14
|
VisualLoggingTrackName,
|
@@ -90,12 +89,4 @@ export class ServerTimingsTrackAppender implements TrackAppender {
|
|
90
89
|
titleForEvent(event: Trace.Types.Events.Event): string {
|
91
90
|
return event.name;
|
92
91
|
}
|
93
|
-
|
94
|
-
/**
|
95
|
-
* Returns the info shown when an event added by this appender
|
96
|
-
* is hovered in the timeline.
|
97
|
-
*/
|
98
|
-
highlightedEntryInfo(event: Trace.Types.Events.Event): HighlightedEntryInfo {
|
99
|
-
return {title: event.name, formattedTime: getFormattedTime(event.dur)};
|
100
|
-
}
|
101
92
|
}
|
@@ -19,7 +19,7 @@ import {
|
|
19
19
|
import {
|
20
20
|
type CompatibilityTracksAppender,
|
21
21
|
entryIsVisibleInTimeline,
|
22
|
-
type
|
22
|
+
type PopoverInfo,
|
23
23
|
type TrackAppender,
|
24
24
|
type TrackAppenderName,
|
25
25
|
VisualLoggingTrackName,
|
@@ -29,10 +29,11 @@ import * as Utils from './utils/utils.js';
|
|
29
29
|
|
30
30
|
const UIStrings = {
|
31
31
|
/**
|
32
|
-
|
32
|
+
* @description Text shown for an entry in the flame chart that is ignored because it matches
|
33
33
|
* a predefined ignore list.
|
34
|
+
* @example {/analytics\.js$} rule
|
34
35
|
*/
|
35
|
-
onIgnoreList: 'On ignore list',
|
36
|
+
onIgnoreList: 'On ignore list ({rule})',
|
36
37
|
/**
|
37
38
|
* @description Refers to the "Main frame", meaning the top level frame. See https://www.w3.org/TR/html401/present/frames.html
|
38
39
|
* @example{example.com} PH1
|
@@ -571,26 +572,22 @@ export class ThreadAppender implements TrackAppender {
|
|
571
572
|
*/
|
572
573
|
titleForEvent(entry: Trace.Types.Events.Event): string {
|
573
574
|
if (Utils.IgnoreList.isIgnoreListedEntry(entry)) {
|
574
|
-
|
575
|
+
const rule = Utils.IgnoreList.getIgnoredReasonString(entry);
|
576
|
+
return i18nString(UIStrings.onIgnoreList, {rule});
|
575
577
|
}
|
576
578
|
return Utils.EntryName.nameForEntry(entry, this.#parsedTrace);
|
577
579
|
}
|
578
580
|
|
579
|
-
|
580
|
-
* Returns the info shown when an event added by this appender
|
581
|
-
* is hovered in the timeline.
|
582
|
-
*/
|
583
|
-
highlightedEntryInfo(event: Trace.Types.Events.Event): HighlightedEntryInfo {
|
584
|
-
let title = this.titleForEvent(event);
|
581
|
+
setPopoverInfo(event: Trace.Types.Events.Event, info: PopoverInfo): void {
|
585
582
|
if (Trace.Types.Events.isParseHTML(event)) {
|
586
583
|
const startLine = event.args['beginData']['startLine'];
|
587
584
|
const endLine = event.args['endData'] && event.args['endData']['endLine'];
|
588
585
|
const eventURL = event.args['beginData']['url'] as Platform.DevToolsPath.UrlString;
|
589
586
|
const url = Bindings.ResourceUtils.displayNameForURL(eventURL);
|
590
587
|
const range = (endLine !== -1 || endLine === startLine) ? `${startLine}...${endLine}` : startLine;
|
591
|
-
title += ` - ${url} [${range}]`;
|
588
|
+
info.title += ` - ${url} [${range}]`;
|
592
589
|
}
|
593
590
|
const selfTime = this.#parsedTrace.Renderer.entryToNode.get(event)?.selfTime;
|
594
|
-
|
591
|
+
info.formattedTime = getFormattedTime(event.dur, selfTime);
|
595
592
|
}
|
596
593
|
}
|
@@ -155,10 +155,10 @@ export class TimelineController implements Trace.TracingManager.TracingManagerCl
|
|
155
155
|
|
156
156
|
this.client.loadingStarted();
|
157
157
|
await this.waitForTracingToStop();
|
158
|
-
await this.allSourcesFinished();
|
159
158
|
|
160
159
|
// Now we re-enable throttling again to maintain the setting being persistent.
|
161
160
|
throttlingManager.setCPUThrottlingRate(rateDuringRecording);
|
161
|
+
await this.allSourcesFinished();
|
162
162
|
|
163
163
|
await LiveMetrics.LiveMetrics.instance().enable();
|
164
164
|
}
|
@@ -122,7 +122,8 @@ describeWithEnvironment('TimelineDetailsView', function() {
|
|
122
122
|
);
|
123
123
|
await detailsView.setSelection(selection);
|
124
124
|
const detailsContentElement = detailsView.getDetailsContentElementForTest();
|
125
|
-
const
|
126
|
-
|
125
|
+
const component = detailsContentElement.querySelector<HTMLElement>('devtools-performance-timeline-summary');
|
126
|
+
const range = component?.shadowRoot?.querySelector<HTMLElement>('.summary-range');
|
127
|
+
assert.strictEqual(range?.innerText, 'Range: 0 ms – 5.39 s');
|
127
128
|
});
|
128
129
|
});
|
@@ -27,8 +27,8 @@ import {
|
|
27
27
|
type TimelineSelection,
|
28
28
|
} from './TimelineSelection.js';
|
29
29
|
import {TimelineSelectorStatsView} from './TimelineSelectorStatsView.js';
|
30
|
-
import {BottomUpTimelineTreeView, CallTreeTimelineTreeView,
|
31
|
-
import {
|
30
|
+
import {BottomUpTimelineTreeView, CallTreeTimelineTreeView, TimelineTreeView} from './TimelineTreeView.js';
|
31
|
+
import {TimelineUIUtils} from './TimelineUIUtils.js';
|
32
32
|
|
33
33
|
const UIStrings = {
|
34
34
|
/**
|
@@ -55,12 +55,6 @@ const UIStrings = {
|
|
55
55
|
*@description Title of the Layers tool
|
56
56
|
*/
|
57
57
|
layers: 'Layers',
|
58
|
-
/**
|
59
|
-
*@description Text in Timeline Details View of the Performance panel
|
60
|
-
*@example {1ms} PH1
|
61
|
-
*@example {10ms} PH2
|
62
|
-
*/
|
63
|
-
rangeSS: 'Range: {PH1} – {PH2}',
|
64
58
|
/**
|
65
59
|
*@description Title of the selector stats tab
|
66
60
|
*/
|
@@ -68,7 +62,8 @@ const UIStrings = {
|
|
68
62
|
};
|
69
63
|
const str_ = i18n.i18n.registerUIStrings('panels/timeline/TimelineDetailsView.ts', UIStrings);
|
70
64
|
const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
|
71
|
-
export class TimelineDetailsView extends
|
65
|
+
export class TimelineDetailsView extends
|
66
|
+
Common.ObjectWrapper.eventMixin<TimelineTreeView.EventTypes, typeof UI.Widget.VBox>(UI.Widget.VBox) {
|
72
67
|
private readonly detailsLinkifier: Components.Linkifier.Linkifier;
|
73
68
|
private tabbedPane: UI.TabbedPane.TabbedPane;
|
74
69
|
private readonly defaultDetailsWidget: UI.Widget.VBox;
|
@@ -126,6 +121,12 @@ export class TimelineDetailsView extends UI.Widget.VBox {
|
|
126
121
|
this.appendTab(Tab.EventLog, i18nString(UIStrings.eventLog), eventsView);
|
127
122
|
this.rangeDetailViews.set(Tab.EventLog, eventsView);
|
128
123
|
|
124
|
+
this.rangeDetailViews.values().forEach(view => {
|
125
|
+
view.addEventListener(
|
126
|
+
TimelineTreeView.Events.TREE_ROW_HOVERED,
|
127
|
+
node => this.dispatchEventToListeners(TimelineTreeView.Events.TREE_ROW_HOVERED, node.data));
|
128
|
+
});
|
129
|
+
|
129
130
|
this.#networkRequestDetails =
|
130
131
|
new TimelineComponents.NetworkRequestDetails.NetworkRequestDetails(this.detailsLinkifier);
|
131
132
|
|
@@ -153,6 +154,12 @@ export class TimelineDetailsView extends UI.Widget.VBox {
|
|
153
154
|
return this.defaultDetailsContentElement;
|
154
155
|
}
|
155
156
|
|
157
|
+
revealEventInTreeView(event: Trace.Types.Events.Event|null): void {
|
158
|
+
if (this.tabbedPane.visibleView instanceof TimelineTreeView) {
|
159
|
+
this.tabbedPane.visibleView.highlightEventInTree(event);
|
160
|
+
}
|
161
|
+
}
|
162
|
+
|
156
163
|
async #onTraceBoundsChange(event: TraceBounds.TraceBounds.StateChangedEvent): Promise<void> {
|
157
164
|
if (event.updateType === 'MINIMAP_BOUNDS') {
|
158
165
|
// If new minimap bounds are set, we might need to update the selected entry summary because
|
@@ -475,14 +482,8 @@ export class TimelineDetailsView extends UI.Widget.VBox {
|
|
475
482
|
const aggregatedStats = TimelineUIUtils.statsForTimeRange(this.#selectedEvents, startTime, endTime);
|
476
483
|
const startOffset = startTime - minBoundsMilli;
|
477
484
|
const endOffset = endTime - minBoundsMilli;
|
478
|
-
|
479
|
-
|
480
|
-
contentHelper.addSection(i18nString(
|
481
|
-
UIStrings.rangeSS,
|
482
|
-
{PH1: i18n.TimeUtilities.millisToString(startOffset), PH2: i18n.TimeUtilities.millisToString(endOffset)}));
|
483
|
-
const pieChart = TimelineUIUtils.generatePieChart(aggregatedStats);
|
484
|
-
contentHelper.appendElementRow('', pieChart);
|
485
|
-
this.setContent(contentHelper.fragment);
|
485
|
+
const summaryDetails = TimelineUIUtils.generateSummaryDetails(aggregatedStats, startOffset, endOffset);
|
486
|
+
this.setContent(summaryDetails);
|
486
487
|
|
487
488
|
// Find all recalculate style events data from range
|
488
489
|
const isSelectorStatsEnabled =
|
@@ -184,6 +184,22 @@ export class TimelineFlameChartDataProvider extends Common.ObjectWrapper.ObjectW
|
|
184
184
|
});
|
185
185
|
Utils.ImageCache.emitter.addEventListener(
|
186
186
|
'screenshot-loaded', () => this.dispatchEventToListeners(Events.DATA_CHANGED));
|
187
|
+
|
188
|
+
Common.Settings.Settings.instance()
|
189
|
+
.moduleSetting('skip-stack-frames-pattern')
|
190
|
+
.addChangeListener(this.#onIgnoreListChanged.bind(this));
|
191
|
+
Common.Settings.Settings.instance()
|
192
|
+
.moduleSetting('skip-content-scripts')
|
193
|
+
.addChangeListener(this.#onIgnoreListChanged.bind(this));
|
194
|
+
Common.Settings.Settings.instance()
|
195
|
+
.moduleSetting('automatically-ignore-list-known-third-party-scripts')
|
196
|
+
.addChangeListener(this.#onIgnoreListChanged.bind(this));
|
197
|
+
Common.Settings.Settings.instance()
|
198
|
+
.moduleSetting('enable-ignore-listing')
|
199
|
+
.addChangeListener(this.#onIgnoreListChanged.bind(this));
|
200
|
+
Common.Settings.Settings.instance()
|
201
|
+
.moduleSetting('skip-anonymous-scripts')
|
202
|
+
.addChangeListener(this.#onIgnoreListChanged.bind(this));
|
187
203
|
}
|
188
204
|
|
189
205
|
hasTrackConfigurationMode(): boolean {
|
@@ -292,16 +308,14 @@ export class TimelineFlameChartDataProvider extends Common.ObjectWrapper.ObjectW
|
|
292
308
|
if (Utils.IgnoreList.isIgnoreListedEntry(entry)) {
|
293
309
|
contextMenu.defaultSection().appendItem(i18nString(UIStrings.removeScriptFromIgnoreList), () => {
|
294
310
|
Bindings.IgnoreListManager.IgnoreListManager.instance().unIgnoreListURL(url);
|
295
|
-
this
|
296
|
-
this.dispatchEventToListeners(Events.DATA_CHANGED);
|
311
|
+
this.#onIgnoreListChanged();
|
297
312
|
}, {
|
298
313
|
jslogContext: 'remove-from-ignore-list',
|
299
314
|
});
|
300
315
|
} else {
|
301
316
|
contextMenu.defaultSection().appendItem(i18nString(UIStrings.addScriptToIgnoreList), () => {
|
302
317
|
Bindings.IgnoreListManager.IgnoreListManager.instance().ignoreListURL(url);
|
303
|
-
this
|
304
|
-
this.dispatchEventToListeners(Events.DATA_CHANGED);
|
318
|
+
this.#onIgnoreListChanged();
|
305
319
|
}, {
|
306
320
|
jslogContext: 'add-to-ignore-list',
|
307
321
|
});
|
@@ -310,6 +324,11 @@ export class TimelineFlameChartDataProvider extends Common.ObjectWrapper.ObjectW
|
|
310
324
|
return contextMenu;
|
311
325
|
}
|
312
326
|
|
327
|
+
#onIgnoreListChanged(): void {
|
328
|
+
this.timelineData(/* rebuild= */ true);
|
329
|
+
this.dispatchEventToListeners(Events.DATA_CHANGED);
|
330
|
+
}
|
331
|
+
|
313
332
|
entryHasAnnotations(entryIndex: number): boolean {
|
314
333
|
const event = this.eventByIndex(entryIndex);
|
315
334
|
if (!event) {
|
@@ -734,11 +753,11 @@ export class TimelineFlameChartDataProvider extends Common.ObjectWrapper.ObjectW
|
|
734
753
|
return this.entryTypeByLevel[level];
|
735
754
|
}
|
736
755
|
|
737
|
-
|
756
|
+
preparePopoverElement(entryIndex: number): Element|null {
|
738
757
|
let time = '';
|
739
758
|
let title;
|
740
759
|
let warningElements: Element[] = [];
|
741
|
-
let
|
760
|
+
let timeElementClassName = 'popoverinfo-time';
|
742
761
|
const additionalContent: HTMLElement[] = [];
|
743
762
|
|
744
763
|
const entryType = this.#entryTypeForIndex(entryIndex);
|
@@ -749,14 +768,16 @@ export class TimelineFlameChartDataProvider extends Common.ObjectWrapper.ObjectW
|
|
749
768
|
const event = (this.entryData[entryIndex] as Trace.Types.Events.Event);
|
750
769
|
const timelineData = (this.timelineDataInternal as PerfUI.FlameChart.FlameChartTimelineData);
|
751
770
|
const eventLevel = timelineData.entryLevels[entryIndex];
|
752
|
-
const
|
753
|
-
title =
|
754
|
-
time =
|
755
|
-
warningElements =
|
756
|
-
if (
|
757
|
-
additionalContent.push(
|
771
|
+
const popoverInfo = this.compatibilityTracksAppender.popoverInfo(event, eventLevel);
|
772
|
+
title = popoverInfo.title;
|
773
|
+
time = popoverInfo.formattedTime;
|
774
|
+
warningElements = popoverInfo.warningElements || warningElements;
|
775
|
+
if (popoverInfo.additionalElements?.length) {
|
776
|
+
additionalContent.push(...popoverInfo.additionalElements);
|
758
777
|
}
|
759
778
|
|
779
|
+
this.dispatchEventToListeners(Events.FLAME_CHART_ITEM_HOVERED, event);
|
780
|
+
|
760
781
|
} else if (entryType === EntryType.FRAME) {
|
761
782
|
const frame = (this.entryData[entryIndex] as Trace.Types.Events.LegacyTimelineFrame);
|
762
783
|
time =
|
@@ -765,40 +786,35 @@ export class TimelineFlameChartDataProvider extends Common.ObjectWrapper.ObjectW
|
|
765
786
|
if (frame.idle) {
|
766
787
|
title = i18nString(UIStrings.idleFrame);
|
767
788
|
} else if (frame.dropped) {
|
768
|
-
|
769
|
-
|
770
|
-
} else {
|
771
|
-
title = i18nString(UIStrings.droppedFrame);
|
772
|
-
}
|
773
|
-
nameSpanTimelineInfoTime = 'timeline-info-warning';
|
789
|
+
title = frame.isPartial ? i18nString(UIStrings.partiallyPresentedFrame) : i18nString(UIStrings.droppedFrame);
|
790
|
+
timeElementClassName = 'popoverinfo-warning';
|
774
791
|
} else {
|
775
792
|
title = i18nString(UIStrings.frame);
|
776
793
|
}
|
777
794
|
} else {
|
795
|
+
this.dispatchEventToListeners(Events.FLAME_CHART_ITEM_HOVERED, null);
|
778
796
|
return null;
|
779
797
|
}
|
780
798
|
|
781
|
-
const
|
782
|
-
const root = UI.UIUtils.createShadowRootWithCoreStyles(
|
799
|
+
const popoverElement = document.createElement('div');
|
800
|
+
const root = UI.UIUtils.createShadowRootWithCoreStyles(popoverElement, {
|
783
801
|
cssFile: [timelineFlamechartPopoverStyles],
|
784
802
|
delegatesFocus: undefined,
|
785
803
|
});
|
786
|
-
const
|
787
|
-
|
788
|
-
|
789
|
-
|
790
|
-
|
791
|
-
|
792
|
-
contents.appendChild(warningElement);
|
793
|
-
}
|
804
|
+
const popoverContents = root.createChild('div', 'timeline-flamechart-popover');
|
805
|
+
popoverContents.createChild('span', timeElementClassName).textContent = time;
|
806
|
+
popoverContents.createChild('span', 'popoverinfo-title').textContent = title;
|
807
|
+
for (const warningElement of warningElements) {
|
808
|
+
warningElement.classList.add('popoverinfo-warning');
|
809
|
+
popoverContents.appendChild(warningElement);
|
794
810
|
}
|
795
811
|
for (const elem of additionalContent) {
|
796
|
-
|
812
|
+
popoverContents.appendChild(elem);
|
797
813
|
}
|
798
|
-
return
|
814
|
+
return popoverElement;
|
799
815
|
}
|
800
816
|
|
801
|
-
|
817
|
+
preparePopoverForCollapsedArrow(entryIndex: number): Element|null {
|
802
818
|
const element = document.createElement('div');
|
803
819
|
const root = UI.UIUtils.createShadowRootWithCoreStyles(element, {
|
804
820
|
cssFile: [timelineFlamechartPopoverStyles],
|
@@ -813,7 +829,7 @@ export class TimelineFlameChartDataProvider extends Common.ObjectWrapper.ObjectW
|
|
813
829
|
return null;
|
814
830
|
}
|
815
831
|
const contents = root.createChild('div', 'timeline-flamechart-popover');
|
816
|
-
contents.createChild('span', '
|
832
|
+
contents.createChild('span', 'popoverinfo-title').textContent = hiddenEntriesAmount + ' hidden';
|
817
833
|
|
818
834
|
return element;
|
819
835
|
}
|
@@ -900,12 +916,12 @@ export class TimelineFlameChartDataProvider extends Common.ObjectWrapper.ObjectW
|
|
900
916
|
|
901
917
|
private drawFrame(
|
902
918
|
entryIndex: number, context: CanvasRenderingContext2D, barX: number, barY: number, barWidth: number,
|
903
|
-
barHeight: number): void {
|
919
|
+
barHeight: number, transformColor: (color: string) => string): void {
|
904
920
|
const hPadding = 1;
|
905
921
|
const frame = this.entryData[entryIndex] as Trace.Types.Events.LegacyTimelineFrame;
|
906
922
|
barX += hPadding;
|
907
923
|
barWidth -= 2 * hPadding;
|
908
|
-
context.fillStyle = this.entryColor(entryIndex);
|
924
|
+
context.fillStyle = transformColor(this.entryColor(entryIndex));
|
909
925
|
|
910
926
|
if (frame.dropped) {
|
911
927
|
if (frame.isPartial) {
|
@@ -960,11 +976,12 @@ export class TimelineFlameChartDataProvider extends Common.ObjectWrapper.ObjectW
|
|
960
976
|
|
961
977
|
decorateEntry(
|
962
978
|
entryIndex: number, context: CanvasRenderingContext2D, text: string|null, barX: number, barY: number,
|
963
|
-
barWidth: number, barHeight: number, unclippedBarX: number, timeToPixelRatio: number
|
979
|
+
barWidth: number, barHeight: number, unclippedBarX: number, timeToPixelRatio: number,
|
980
|
+
transformColor: (color: string) => string): boolean {
|
964
981
|
const entryType = this.#entryTypeForIndex(entryIndex);
|
965
982
|
|
966
983
|
if (entryType === EntryType.FRAME) {
|
967
|
-
this.drawFrame(entryIndex, context, barX, barY, barWidth, barHeight);
|
984
|
+
this.drawFrame(entryIndex, context, barX, barY, barWidth, barHeight, transformColor);
|
968
985
|
return true;
|
969
986
|
}
|
970
987
|
|
@@ -1304,10 +1321,12 @@ export const InstantEventVisibleDurationMs = Trace.Types.Timing.MilliSeconds(0.0
|
|
1304
1321
|
|
1305
1322
|
export const enum Events {
|
1306
1323
|
DATA_CHANGED = 'DataChanged',
|
1324
|
+
FLAME_CHART_ITEM_HOVERED = 'FlameChartItemHovered',
|
1307
1325
|
}
|
1308
1326
|
|
1309
1327
|
export type EventTypes = {
|
1310
1328
|
[Events.DATA_CHANGED]: void,
|
1329
|
+
[Events.FLAME_CHART_ITEM_HOVERED]: Trace.Types.Events.Event|null,
|
1311
1330
|
};
|
1312
1331
|
|
1313
1332
|
// an entry is a trace event, they are classified into "entry types"
|
@@ -402,7 +402,7 @@ export class TimelineFlameChartNetworkDataProvider implements PerfUI.FlameChart.
|
|
402
402
|
return this.#networkTrackAppender?.webSocketIdToLevel.has(levelIndex) || false;
|
403
403
|
}
|
404
404
|
|
405
|
-
|
405
|
+
preparePopoverElement(index: number): Element|null {
|
406
406
|
const event = this.#events[index];
|
407
407
|
if (Trace.Types.Events.isSyntheticNetworkRequest(event)) {
|
408
408
|
const element = document.createElement('div');
|