chrome-devtools-frontend 1.0.1684555 → 1.0.1689415
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/.agents/skills/gerrit-cli/SKILL.md +29 -8
- package/.agents/skills/gerrit-cli/references/commands.md +51 -18
- package/.agents/skills/gerrit-cli/references/workflows.md +6 -6
- package/.agents/skills/gerrit-cli/scripts/import_upstream.py +43 -70
- package/config/typescript/tsconfig.base.json +1 -0
- package/config/typescript/tsconfig.eslint.json +9 -0
- package/docs/contributing/issues.md +1 -1
- package/docs/styleguide/ux/writing.md +2 -2
- package/eslint.config.mjs +18 -10
- package/front_end/core/common/Base64.ts +1 -1
- package/front_end/core/common/Color.ts +28 -6
- package/front_end/core/common/ColorConverter.ts +12 -0
- package/front_end/core/common/Console.ts +2 -1
- package/front_end/core/common/Object.ts +2 -2
- package/front_end/core/common/ResourceType.ts +12 -13
- package/front_end/core/common/Revealer.ts +1 -1
- package/front_end/core/common/Settings.ts +2 -2
- package/front_end/core/common/TextDictionary.ts +2 -2
- package/front_end/core/common/Throttler.ts +1 -1
- package/front_end/core/host/InspectorFrontendHostAPI.ts +2 -2
- package/front_end/core/host/UserMetrics.ts +51 -37
- package/front_end/core/host/host.ts +1 -1
- package/front_end/core/i18n/i18nImpl.ts +1 -1
- package/front_end/core/platform/HostRuntime.ts +3 -3
- package/front_end/core/platform/KeyboardUtilities.ts +1 -1
- package/front_end/core/protocol_client/InspectorBackend.ts +7 -6
- package/front_end/core/root/Runtime.ts +4 -2
- package/front_end/core/sdk/AnimationModel.ts +1 -1
- package/front_end/core/sdk/CPUThrottlingManager.ts +198 -0
- package/front_end/core/sdk/CSSMetadata.ts +11 -6
- package/front_end/core/sdk/CSSPropertyParser.ts +5 -3
- package/front_end/core/sdk/CSSPropertyParserMatchers.ts +90 -59
- package/front_end/core/sdk/ConsoleModel.ts +1 -1
- package/front_end/core/sdk/DOMModel.ts +3 -3
- package/front_end/core/sdk/DebuggerModel.ts +1 -1
- package/front_end/core/sdk/EmulationModel.ts +5 -0
- package/front_end/core/sdk/LayerTreeBase.ts +1 -1
- package/front_end/core/sdk/NetworkManager.ts +1 -1
- package/front_end/core/sdk/README.md +40 -0
- package/front_end/core/sdk/RehydratingConnection.ts +1 -1
- package/front_end/core/sdk/RemoteObject.ts +1 -1
- package/front_end/core/sdk/ResourceTreeModel.ts +2 -2
- package/front_end/core/sdk/SDKModel.ts +1 -1
- package/front_end/core/sdk/SDKSettings.ts +6 -0
- package/front_end/core/sdk/Script.ts +2 -1
- package/front_end/core/sdk/SecurityOrigin.ts +48 -0
- package/front_end/core/sdk/ServiceWorkerManager.ts +75 -17
- package/front_end/core/sdk/sdk.ts +2 -0
- package/front_end/core/text_utils/ContentData.ts +1 -1
- package/front_end/entrypoints/formatter_worker/FormattedContentBuilder.ts +3 -1
- package/front_end/entrypoints/formatter_worker/FormatterWorker.ts +1 -1
- package/front_end/entrypoints/formatter_worker/ScopeParser.ts +2 -2
- package/front_end/entrypoints/formatter_worker/Substitute.ts +1 -1
- package/front_end/entrypoints/formatter_worker/formatter_worker-entrypoint.ts +1 -1
- package/front_end/entrypoints/inspector_main/InspectorMain.ts +1 -1
- package/front_end/entrypoints/inspector_main/OutermostTargetSelector.ts +1 -1
- package/front_end/entrypoints/inspector_main/nodeIcon.css +1 -1
- package/front_end/entrypoints/inspector_main/outermostTargetSelector.css +3 -3
- package/front_end/entrypoints/inspector_main/renderingOptions.css +3 -3
- package/front_end/entrypoints/js_app/js_app.ts +25 -9
- package/front_end/entrypoints/node_app/app/nodeConnectionsPanel.css +5 -5
- package/front_end/entrypoints/node_app/node_app.ts +1 -1
- package/front_end/generated/ARIAProperties.ts +39 -1
- package/front_end/generated/InspectorBackendCommands.ts +2 -1
- package/front_end/generated/SupportedCSSProperties.ts +60 -119
- package/front_end/generated/protocol-mapping.d.ts +9 -0
- package/front_end/generated/protocol-proxy-api.d.ts +7 -0
- package/front_end/generated/protocol.ts +12 -2
- package/front_end/models/ai_assistance/AiAgent2.ts +13 -7
- package/front_end/models/ai_assistance/AiConversation.ts +8 -17
- package/front_end/models/ai_assistance/AiHistoryStorage.ts +2 -2
- package/front_end/models/ai_assistance/AiUtils.ts +16 -0
- package/front_end/models/ai_assistance/EvaluateAction.ts +1 -1
- package/front_end/models/ai_assistance/README.md +1 -1
- package/front_end/models/ai_assistance/agents/AccessibilityAgent.ts +2 -3
- package/front_end/models/ai_assistance/agents/AiAgent.ts +29 -6
- package/front_end/models/ai_assistance/agents/ContextSelectionAgent.ts +4 -3
- package/front_end/models/ai_assistance/agents/FileAgent.ts +2 -2
- package/front_end/models/ai_assistance/agents/NetworkAgent.ts +2 -2
- package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +1 -1
- package/front_end/models/ai_assistance/agents/StorageAgent.ts +7 -5
- package/front_end/models/ai_assistance/agents/StylingAgent.snapshot.txt +2 -2
- package/front_end/models/ai_assistance/agents/StylingAgent.ts +9 -7
- package/front_end/models/ai_assistance/ai_assistance.ts +8 -0
- package/front_end/models/ai_assistance/contexts/AccessibilityContext.ts +16 -1
- package/front_end/models/ai_assistance/contexts/FileContext.ts +6 -0
- package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.snapshot.txt +150 -325
- package/front_end/models/ai_assistance/injected.ts +5 -3
- package/front_end/models/ai_assistance/performance/AIContext.ts +1 -1
- package/front_end/models/ai_assistance/skills/README.md +1 -1
- package/front_end/models/ai_assistance/skills/accessibility.md +19 -10
- package/front_end/models/ai_assistance/skills/network.md +13 -7
- package/front_end/models/ai_assistance/skills/performance.md +22 -16
- package/front_end/models/ai_assistance/skills/sources.md +13 -7
- package/front_end/models/ai_assistance/skills/storage.md +19 -18
- package/front_end/models/ai_assistance/skills/styling.md +30 -37
- package/front_end/models/ai_assistance/tools/CookieUtils.ts +120 -0
- package/front_end/models/ai_assistance/tools/DOMStorageUtils.ts +53 -4
- package/front_end/models/ai_assistance/tools/ExecuteJavaScript.ts +8 -32
- package/front_end/models/ai_assistance/tools/GetCookieValues.ts +146 -0
- package/front_end/models/ai_assistance/tools/GetDetailedCallTree.ts +11 -9
- package/front_end/models/ai_assistance/tools/GetElementAccessibilityDetails.ts +17 -5
- package/front_end/models/ai_assistance/tools/GetFunctionCode.ts +12 -11
- package/front_end/models/ai_assistance/tools/GetInsightDetails.ts +11 -11
- package/front_end/models/ai_assistance/tools/GetLighthouseAudits.ts +3 -2
- package/front_end/models/ai_assistance/tools/GetNetworkRequestDetails.ts +3 -3
- package/front_end/models/ai_assistance/tools/GetResourceContent.ts +12 -12
- package/front_end/models/ai_assistance/tools/GetSourceContent.ts +3 -2
- package/front_end/models/ai_assistance/tools/GetStorageBreakdown.ts +132 -0
- package/front_end/models/ai_assistance/tools/GetStorageValues.ts +17 -4
- package/front_end/models/ai_assistance/tools/GetStyles.ts +3 -3
- package/front_end/models/ai_assistance/tools/GetTraceEventByKey.ts +9 -8
- package/front_end/models/ai_assistance/tools/GetTraceMainThreadSummary.ts +13 -14
- package/front_end/models/ai_assistance/tools/GetTraceNetworkSummary.ts +12 -10
- package/front_end/models/ai_assistance/tools/ListCookies.ts +93 -0
- package/front_end/models/ai_assistance/tools/ListNetworkRequests.ts +15 -6
- package/front_end/models/ai_assistance/tools/ListPageOrigins.ts +3 -3
- package/front_end/models/ai_assistance/tools/ListSources.ts +5 -3
- package/front_end/models/ai_assistance/tools/ListStorageKeys.ts +16 -4
- package/front_end/models/ai_assistance/tools/RecordPerformanceTrace.ts +3 -2
- package/front_end/models/ai_assistance/tools/ResolveDevtoolsNodePath.ts +4 -3
- package/front_end/models/ai_assistance/tools/RunLighthouse.ts +9 -9
- package/front_end/models/ai_assistance/tools/SelectTraceEventByKey.ts +9 -8
- package/front_end/models/ai_assistance/tools/Tool.ts +21 -11
- package/front_end/models/ai_assistance/tools/ToolRegistry.ts +41 -8
- package/front_end/models/badges/AiExplorerBadge.ts +3 -3
- package/front_end/models/badges/CodeWhispererBadge.ts +2 -2
- package/front_end/models/badges/DOMDetectiveBadge.ts +3 -3
- package/front_end/models/badges/SpeedsterBadge.ts +3 -3
- package/front_end/models/badges/StarterBadge.ts +4 -4
- package/front_end/models/bindings/CompilerScriptMapping.ts +11 -2
- package/front_end/models/bindings/ContentProviderBasedProject.ts +3 -2
- package/front_end/models/breakpoints/BreakpointManager.ts +1 -1
- package/front_end/models/emulation/EmulatedDevices.ts +2 -2
- package/front_end/models/formatter/FormatterWorkerPool.ts +2 -2
- package/front_end/models/formatter/ScriptFormatter.ts +1 -2
- package/front_end/models/geometry/GeometryImpl.ts +2 -2
- package/front_end/models/heap_snapshot/HeapSnapshotModel.ts +1 -1
- package/front_end/models/heap_snapshot/HeapSnapshotProxy.ts +3 -2
- package/front_end/models/issues_manager/ContentSecurityPolicyIssue.ts +5 -5
- package/front_end/models/issues_manager/GenericIssue.ts +18 -18
- package/front_end/models/issues_manager/StylesheetLoadingIssue.ts +1 -1
- package/front_end/models/javascript_metadata/{NativeFunctions.js → NativeFunctions.ts} +25 -9
- package/front_end/models/live-metrics/LiveMetrics.ts +9 -3
- package/front_end/models/live-metrics/web-vitals-injected/spec/spec.ts +58 -6
- package/front_end/models/live-metrics/web-vitals-injected/web-vitals-injected.ts +2 -62
- package/front_end/models/network_time_calculator/RequestTimeRanges.ts +2 -2
- package/front_end/models/persistence/AutomaticFileSystemWorkspaceBinding.ts +5 -0
- package/front_end/models/persistence/IsolatedFileSystem.ts +1 -1
- package/front_end/models/persistence/NetworkPersistenceManager.ts +35 -6
- package/front_end/models/stack_trace/StackTraceImpl.ts +2 -2
- package/front_end/models/trace/LanternComputationData.ts +2 -3
- package/front_end/models/trace/extras/StackTraceForEvent.ts +3 -2
- package/front_end/models/trace/extras/ThirdParties.ts +9 -9
- package/front_end/models/trace/handlers/AsyncJSCallsHandler.ts +7 -4
- package/front_end/models/trace/handlers/FramesHandler.ts +3 -3
- package/front_end/models/trace/handlers/LayoutShiftsHandler.ts +2 -2
- package/front_end/models/trace/handlers/SamplesHandler.ts +4 -2
- package/front_end/models/trace/handlers/UserInteractionsHandler.ts +1 -1
- package/front_end/models/trace/handlers/WarningsHandler.ts +2 -2
- package/front_end/models/trace/helpers/Network.ts +3 -3
- package/front_end/models/trace/helpers/Trace.ts +1 -1
- package/front_end/models/trace/insights/CLSCulprits.ts +2 -1
- package/front_end/models/trace/insights/Cache.ts +3 -1
- package/front_end/models/trace/insights/CharacterSet.ts +3 -1
- package/front_end/models/trace/insights/DOMSize.ts +3 -1
- package/front_end/models/trace/insights/DocumentLatency.ts +3 -1
- package/front_end/models/trace/insights/DuplicatedJavaScript.ts +3 -1
- package/front_end/models/trace/insights/FontDisplay.ts +2 -1
- package/front_end/models/trace/insights/ForcedReflow.ts +2 -1
- package/front_end/models/trace/insights/INPBreakdown.ts +3 -1
- package/front_end/models/trace/insights/ImageDelivery.ts +3 -1
- package/front_end/models/trace/insights/LCPBreakdown.ts +3 -1
- package/front_end/models/trace/insights/LCPDiscovery.ts +3 -1
- package/front_end/models/trace/insights/LegacyJavaScript.ts +3 -1
- package/front_end/models/trace/insights/ModernHTTP.ts +2 -1
- package/front_end/models/trace/insights/NetworkDependencyTree.ts +2 -1
- package/front_end/models/trace/insights/RenderBlocking.ts +5 -4
- package/front_end/models/trace/insights/SlowCSSSelector.ts +3 -1
- package/front_end/models/trace/insights/ThirdParties.ts +5 -3
- package/front_end/models/trace/insights/Viewport.ts +2 -1
- package/front_end/models/trace/lantern/simulation/Constants.ts +34 -2
- package/front_end/models/trace/lantern/simulation/DNSCache.ts +1 -1
- package/front_end/models/trace/types/TraceEvents.ts +8 -3
- package/front_end/models/trace_source_maps_resolver/SourceMapsResolver.ts +2 -1
- package/front_end/models/workspace/WorkspaceImpl.ts +18 -2
- package/front_end/panels/accessibility/AccessibilityAnnouncementRecordingView.ts +686 -2
- package/front_end/panels/accessibility/accessibilityNode.css +4 -4
- package/front_end/panels/accessibility/accessibilityProperties.css +1 -1
- package/front_end/panels/accessibility/accessibilitySidebarView.css +2 -2
- package/front_end/panels/accessibility/axBreadcrumbs.css +13 -13
- package/front_end/panels/ai_assistance/AiAssistancePanel.ts +14 -14
- package/front_end/panels/ai_assistance/ExternalHandler.ts +1 -1
- package/front_end/panels/ai_assistance/aiAssistancePanel.css +1 -1
- package/front_end/panels/ai_assistance/components/ChatInput.ts +3 -2
- package/front_end/panels/ai_assistance/components/ChatView.ts +1 -1
- package/front_end/panels/ai_assistance/components/DisabledWidget.ts +1 -1
- package/front_end/panels/ai_assistance/components/ExploreWidget.ts +1 -1
- package/front_end/panels/ai_assistance/components/chatInput.css +12 -12
- package/front_end/panels/ai_assistance/components/chatMessage.css +16 -16
- package/front_end/panels/ai_assistance/components/chatView.css +2 -2
- package/front_end/panels/ai_assistance/components/exploreWidget.css +1 -1
- package/front_end/panels/ai_assistance/components/exportForAgentsDialog.css +4 -0
- package/front_end/panels/ai_assistance/components/walkthroughView.css +6 -6
- package/front_end/panels/animation/animationTimeline.css +62 -62
- package/front_end/panels/application/ApplicationPanelSidebar.ts +6 -1
- package/front_end/panels/application/BackgroundServiceView.ts +290 -252
- package/front_end/panels/application/WebMCPView.ts +15 -7
- package/front_end/panels/application/appManifestView.css +5 -5
- package/front_end/panels/application/backgroundServiceView.css +18 -2
- package/front_end/panels/application/components/AdsView.ts +100 -4
- package/front_end/panels/application/components/adsView.css +8 -5
- package/front_end/panels/application/components/backForwardCacheView.css +5 -5
- package/front_end/panels/application/components/bounceTrackingMitigationsView.css +1 -1
- package/front_end/panels/application/components/endpointsGrid.css +1 -1
- package/front_end/panels/application/components/permissionsPolicySection.css +1 -1
- package/front_end/panels/application/components/protocolHandlersView.css +6 -6
- package/front_end/panels/application/components/reportsGrid.css +1 -1
- package/front_end/panels/application/components/serviceWorkerRouterView.css +4 -4
- package/front_end/panels/application/components/trustTokensView.css +7 -7
- package/front_end/panels/application/cookieItemsView.css +3 -3
- package/front_end/panels/application/deviceBoundSessionsView.css +3 -3
- package/front_end/panels/application/frameDetailsReportView.css +11 -11
- package/front_end/panels/application/indexedDBViews.css +7 -7
- package/front_end/panels/application/originTrialTokenRows.css +2 -2
- package/front_end/panels/application/originTrialTreeView.css +3 -3
- package/front_end/panels/application/preloading/components/RuleSetDetailsView.css +2 -2
- package/front_end/panels/application/preloading/components/preloadingDetailsReportView.css +1 -1
- package/front_end/panels/application/preloading/components/preloadingDisabledInfobar.css +2 -2
- package/front_end/panels/application/preloading/components/preloadingGrid.css +2 -2
- package/front_end/panels/application/preloading/components/usedPreloadingView.css +7 -7
- package/front_end/panels/application/preloading/preloadingView.css +1 -1
- package/front_end/panels/application/preloading/preloadingViewDropDown.css +3 -3
- package/front_end/panels/application/serviceWorkerCacheViews.css +5 -5
- package/front_end/panels/application/serviceWorkerUpdateCycleView.css +12 -12
- package/front_end/panels/application/serviceWorkersView.css +15 -16
- package/front_end/panels/application/storageView.css +5 -5
- package/front_end/panels/application/webMCPView.css +9 -9
- package/front_end/panels/autofill/autofillView.css +4 -4
- package/front_end/panels/browser_debugger/categorizedBreakpointsSidebarPane.css +4 -4
- package/front_end/panels/browser_debugger/domBreakpointsSidebarPane.css +5 -3
- package/front_end/panels/browser_debugger/xhrBreakpointsSidebarPane.css +4 -4
- package/front_end/panels/changes/changesSidebar.css +1 -1
- package/front_end/panels/changes/changesView.css +1 -1
- package/front_end/panels/changes/combinedDiffView.css +1 -1
- package/front_end/panels/common/CPUThrottlingOption.ts +5 -10
- package/front_end/panels/common/badgeNotification.css +2 -2
- package/front_end/panels/common/domLinkifier.css +1 -1
- package/front_end/panels/common/gdpSignUpDialog.css +3 -3
- package/front_end/panels/common/geminiRebrandPromoDialog.css +1 -1
- package/front_end/panels/console/ConsolePrompt.ts +6 -3
- package/front_end/panels/console/ConsoleView.ts +6 -3
- package/front_end/panels/console/ConsoleViewMessage.ts +3 -1
- package/front_end/panels/console/console-meta.ts +5 -24
- package/front_end/panels/console/consoleContextSelector.css +2 -2
- package/front_end/panels/console/consolePinPane.css +9 -9
- package/front_end/panels/console/consolePrompt.css +5 -5
- package/front_end/panels/console/consoleView.css +39 -39
- package/front_end/panels/coverage/coverageListView.css +2 -2
- package/front_end/panels/css_overview/cssOverviewCompletedView.css +34 -34
- package/front_end/panels/css_overview/cssOverviewProcessingView.css +5 -5
- package/front_end/panels/css_overview/cssOverviewSidebarPanel.css +1 -1
- package/front_end/panels/css_overview/cssOverviewStartView.css +17 -17
- package/front_end/panels/elements/AdoptedStyleSheetTreeElement.ts +209 -62
- package/front_end/panels/elements/ColorSwatchPopoverIcon.ts +4 -4
- package/front_end/panels/elements/DOMTreeContextMenu.ts +59 -54
- package/front_end/panels/elements/ElementsPanel.ts +1 -1
- package/front_end/panels/elements/ElementsTreeElement.ts +130 -94
- package/front_end/panels/elements/ElementsTreeOutline.ts +1751 -363
- package/front_end/panels/elements/ShortcutTreeElement.ts +6 -3
- package/front_end/panels/elements/StylePropertiesSection.ts +65 -8
- package/front_end/panels/elements/StylePropertyTreeElement.ts +6 -0
- package/front_end/panels/elements/StylesSidebarPane.ts +143 -8
- package/front_end/panels/elements/classesPaneWidget.css +6 -6
- package/front_end/panels/elements/components/stylePropertyEditor.css +7 -7
- package/front_end/panels/elements/computedStyleWidget.css +1 -1
- package/front_end/panels/elements/elementStatePaneWidget.css +8 -8
- package/front_end/panels/elements/elements-meta.ts +14 -0
- package/front_end/panels/elements/elementsPanel.css +4 -4
- package/front_end/panels/elements/elementsTreeOutline.css +222 -38
- package/front_end/panels/elements/layersWidget.css +4 -4
- package/front_end/panels/elements/layoutPane.css +18 -18
- package/front_end/panels/elements/metricsSidebarPane.css +11 -11
- package/front_end/panels/elements/platformFontsWidget.css +5 -5
- package/front_end/panels/elements/propertiesWidget.css +2 -2
- package/front_end/panels/elements/stylePropertiesTreeOutline.css +20 -20
- package/front_end/panels/elements/stylesSidebarPane.css +37 -20
- package/front_end/panels/emulation/deviceModeView.css +49 -49
- package/front_end/panels/emulation/mediaQueryInspector.css +18 -18
- package/front_end/panels/event_listeners/eventListenersView.css +1 -1
- package/front_end/panels/explain/components/consoleInsight.css +29 -29
- package/front_end/panels/issues/components/elementsPanelLink.css +2 -2
- package/front_end/panels/issues/components/hideIssuesMenu.css +1 -1
- package/front_end/panels/issues/issuesPane.css +2 -2
- package/front_end/panels/issues/issuesTree.css +50 -50
- package/front_end/panels/layer_viewer/Layers3DView.ts +9 -10
- package/front_end/panels/layer_viewer/layerDetailsView.css +1 -1
- package/front_end/panels/layer_viewer/layerTreeOutline.css +2 -2
- package/front_end/panels/layer_viewer/layers3DView.css +1 -1
- package/front_end/panels/layer_viewer/paintProfiler.css +1 -1
- package/front_end/panels/lighthouse/LighthouseReportSelector.ts +2 -2
- package/front_end/panels/media/playerListView.css +9 -9
- package/front_end/panels/media/playerMessagesView.css +8 -8
- package/front_end/panels/media/playerPropertiesView.css +6 -6
- package/front_end/panels/mobile_throttling/NetworkPanelIndicator.ts +1 -1
- package/front_end/panels/mobile_throttling/throttlingSettingsTab.css +9 -9
- package/front_end/panels/network/NetworkDataGridNode.ts +1 -0
- package/front_end/panels/network/NetworkPanel.ts +9 -4
- package/front_end/panels/network/RequestConditionsDrawer.ts +12 -12
- package/front_end/panels/network/RequestPayloadView.ts +78 -26
- package/front_end/panels/network/binaryResourceView.css +1 -1
- package/front_end/panels/network/components/EditableSpan.css +3 -3
- package/front_end/panels/network/components/HeaderSectionRow.css +14 -14
- package/front_end/panels/network/components/RequestHeaderSection.css +7 -7
- package/front_end/panels/network/components/RequestHeadersView.css +18 -18
- package/front_end/panels/network/components/RequestTrustTokensView.css +1 -1
- package/front_end/panels/network/network-meta.ts +9 -9
- package/front_end/panels/network/networkConfigView.css +11 -11
- package/front_end/panels/network/networkLogView.css +35 -35
- package/front_end/panels/network/networkManageCustomHeadersView.css +1 -1
- package/front_end/panels/network/networkPanel.css +7 -7
- package/front_end/panels/network/networkTimingTable.css +13 -13
- package/front_end/panels/network/requestConditionsDrawer.css +4 -4
- package/front_end/panels/network/requestCookiesView.css +5 -5
- package/front_end/panels/network/requestDeviceBoundSessionsView.css +1 -1
- package/front_end/panels/network/requestHTMLView.css +1 -1
- package/front_end/panels/network/requestHeadersTree.css +19 -19
- package/front_end/panels/network/requestInitiatorView.css +1 -1
- package/front_end/panels/network/requestInitiatorViewTree.css +3 -3
- package/front_end/panels/network/requestPayloadTree.css +5 -5
- package/front_end/panels/network/requestPayloadView.css +1 -1
- package/front_end/panels/network/resourceChunkView.css +3 -3
- package/front_end/panels/network/signedExchangeInfoTree.css +6 -6
- package/front_end/panels/profiler/heapProfiler.css +15 -15
- package/front_end/panels/profiler/profileLauncherView.css +10 -10
- package/front_end/panels/recorder/RecordingView.ts +1 -1
- package/front_end/panels/recorder/StepEditor.ts +86 -7
- package/front_end/panels/recorder/TimelineSection.ts +2 -1
- package/front_end/panels/recorder/createRecordingView.css +17 -17
- package/front_end/panels/recorder/extensionView.css +5 -5
- package/front_end/panels/recorder/injected/RecordingClient.ts +1 -1
- package/front_end/panels/recorder/models/SchemaUtils.ts +2 -2
- package/front_end/panels/recorder/models/ScreenshotStorage.ts +1 -1
- package/front_end/panels/recorder/recorderPanel.css +7 -7
- package/front_end/panels/recorder/recordingListView.css +12 -12
- package/front_end/panels/recorder/recordingView.css +47 -47
- package/front_end/panels/recorder/stepEditor.css +2 -2
- package/front_end/panels/recorder/stepView.css +20 -20
- package/front_end/panels/recorder/timelineSection.css +9 -9
- package/front_end/panels/screencast/screencastView.css +12 -12
- package/front_end/panels/search/searchResultsPane.css +10 -10
- package/front_end/panels/search/searchView.css +9 -9
- package/front_end/panels/security/SecurityPanel.ts +84 -54
- package/front_end/panels/security/mainView.css +26 -26
- package/front_end/panels/security/originView.css +15 -15
- package/front_end/panels/sensors/locationsSettingsTab.css +6 -6
- package/front_end/panels/sensors/sensors.css +28 -28
- package/front_end/panels/settings/components/syncSection.css +5 -5
- package/front_end/panels/settings/emulation/components/userAgentClientHintsForm.css +13 -13
- package/front_end/panels/settings/emulation/devicesSettingsTab.css +16 -16
- package/front_end/panels/settings/frameworkIgnoreListSettingsTab.css +2 -2
- package/front_end/panels/settings/keybindsSettingsTab.css +2 -2
- package/front_end/panels/settings/settingsScreen.css +5 -5
- package/front_end/panels/sources/UISourceCodeFrame.ts +1 -1
- package/front_end/panels/sources/breakpointEditDialog.css +9 -9
- package/front_end/panels/sources/breakpointsView.css +25 -25
- package/front_end/panels/sources/callStackSidebarPane.css +10 -10
- package/front_end/panels/sources/components/HeadersView.css +6 -6
- package/front_end/panels/sources/debuggerPausedMessage.css +4 -4
- package/front_end/panels/sources/dialog.css +2 -2
- package/front_end/panels/sources/navigatorTree.css +2 -2
- package/front_end/panels/sources/navigatorView.css +2 -2
- package/front_end/panels/sources/scopeChainSidebarPane.css +1 -1
- package/front_end/panels/sources/sourcesNavigator.css +1 -1
- package/front_end/panels/sources/sourcesPanel.css +2 -2
- package/front_end/panels/sources/sourcesView.css +1 -1
- package/front_end/panels/sources/threadsSidebarPane.css +5 -5
- package/front_end/panels/sources/watchExpressionsSidebarPane.css +8 -8
- package/front_end/panels/timeline/TimelineDetailsView.ts +9 -21
- package/front_end/panels/timeline/TimelineFlameChartView.ts +3 -5
- package/front_end/panels/timeline/TimelineMiniMap.ts +3 -3
- package/front_end/panels/timeline/components/LiveMetricsView.ts +1 -1
- package/front_end/panels/timeline/components/breadcrumbsUI.css +3 -3
- package/front_end/panels/timeline/components/exportTraceOptions.css +1 -1
- package/front_end/panels/timeline/components/fieldSettingsDialog.css +13 -13
- package/front_end/panels/timeline/components/ignoreListSetting.css +3 -3
- package/front_end/panels/timeline/components/liveMetricsView.css +39 -39
- package/front_end/panels/timeline/components/metricCard.css +20 -20
- package/front_end/panels/timeline/components/networkRequestDetails.css +9 -9
- package/front_end/panels/timeline/components/networkRequestTooltip.css +14 -14
- package/front_end/panels/timeline/components/networkTrackWidget.css +2 -2
- package/front_end/panels/timeline/components/originMap.css +4 -4
- package/front_end/panels/timeline/components/relatedInsightChips.css +1 -1
- package/front_end/panels/timeline/components/sidebarAnnotationsTab.css +4 -4
- package/front_end/panels/timeline/components/sidebarInsightsTab.css +5 -5
- package/front_end/panels/timeline/components/sidebarSingleInsightSet.css +1 -1
- package/front_end/panels/timeline/components/timelineSummary.css +4 -4
- package/front_end/panels/timeline/overlays/OverlaysImpl.ts +4 -4
- package/front_end/panels/timeline/overlays/components/EntriesLinkOverlay.ts +1 -1
- package/front_end/panels/timeline/overlays/components/EntryLabelOverlay.ts +6 -6
- package/front_end/panels/timeline/overlays/components/TimeRangeOverlay.ts +1 -1
- package/front_end/panels/timeline/thirdPartyTreeView.css +5 -5
- package/front_end/panels/timeline/timeline-meta.ts +0 -6
- package/front_end/panels/timeline/timelineDetailsView.css +11 -11
- package/front_end/panels/timeline/timelinePanel.css +20 -20
- package/front_end/panels/timeline/timelineTreeView.css +8 -8
- package/front_end/panels/webauthn/webauthnPane.css +6 -6
- package/front_end/panels/whats_new/ReleaseNoteText.ts +2 -2
- package/front_end/third_party/chromium/README.chromium +1 -1
- package/front_end/third_party/i18n/i18n-impl.ts +1 -1
- package/front_end/third_party/puppeteer/README.chromium +2 -2
- package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.d.ts +15 -1
- package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.js +42 -8
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Frame.d.ts +4 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Frame.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Frame.js +15 -2
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Frame.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/WebMCP.d.ts +14 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/WebMCP.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/WebMCP.js +23 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/WebMCP.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/generated/injected.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/generated/injected.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/generated/injected.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/generated/injected.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/injected/Poller.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/injected/Poller.js +77 -6
- package/front_end/third_party/puppeteer/package/lib/puppeteer/injected/Poller.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/revisions.d.ts +3 -3
- package/front_end/third_party/puppeteer/package/lib/puppeteer/revisions.js +3 -3
- package/front_end/third_party/puppeteer/package/lib/puppeteer/revisions.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/util/version.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/util/version.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/types.d.ts +15 -1
- package/front_end/third_party/puppeteer/package/package.json +2 -2
- package/front_end/third_party/puppeteer/package/src/cdp/Frame.ts +16 -2
- package/front_end/third_party/puppeteer/package/src/cdp/WebMCP.ts +36 -1
- package/front_end/third_party/puppeteer/package/src/generated/injected.ts +1 -1
- package/front_end/third_party/puppeteer/package/src/injected/Poller.ts +86 -6
- package/front_end/third_party/puppeteer/package/src/revisions.ts +3 -3
- package/front_end/third_party/puppeteer/package/src/util/version.ts +1 -1
- package/front_end/third_party/web-vitals/README.chromium +2 -2
- package/front_end/third_party/web-vitals/package/README.md +22 -7
- package/front_end/third_party/web-vitals/package/dist/modules/attribution/onINP.js +6 -2
- package/front_end/third_party/web-vitals/package/dist/modules/attribution/onLCP.d.ts +2 -2
- package/front_end/third_party/web-vitals/package/dist/modules/attribution/onLCP.js +30 -3
- package/front_end/third_party/web-vitals/package/dist/modules/lib/InteractionManager.d.ts +14 -0
- package/front_end/third_party/web-vitals/package/dist/modules/lib/InteractionManager.js +19 -13
- package/front_end/third_party/web-vitals/package/dist/modules/lib/bindReporter.d.ts +1 -1
- package/front_end/third_party/web-vitals/package/dist/modules/lib/doubleRAF.js +1 -1
- package/front_end/third_party/web-vitals/package/dist/modules/lib/initMetric.d.ts +3 -3
- package/front_end/third_party/web-vitals/package/dist/modules/lib/softNavs.js +3 -1
- package/front_end/third_party/web-vitals/package/dist/modules/types/lcp.d.ts +15 -1
- package/front_end/third_party/web-vitals/package/package.json +1 -2
- package/front_end/third_party/web-vitals/package/src/attribution/onINP.ts +9 -2
- package/front_end/third_party/web-vitals/package/src/attribution/onLCP.ts +36 -5
- package/front_end/third_party/web-vitals/package/src/lib/InteractionManager.ts +21 -15
- package/front_end/third_party/web-vitals/package/src/lib/doubleRAF.ts +1 -1
- package/front_end/third_party/web-vitals/package/src/lib/softNavs.ts +4 -1
- package/front_end/third_party/web-vitals/package/src/types/lcp.ts +16 -1
- package/front_end/third_party/web-vitals/rebuild.sh +3 -3
- package/front_end/ui/comments/CommentAnchorResolver.ts +15 -4
- package/front_end/ui/comments/commentsOverlay.css +6 -5
- package/front_end/ui/components/adorners/Adorner.ts +1 -1
- package/front_end/ui/components/adorners/adorner.css +6 -6
- package/front_end/ui/components/buttons/FloatingButton.ts +1 -1
- package/front_end/ui/components/buttons/button.css +9 -9
- package/front_end/ui/components/buttons/floatingButton.css +2 -2
- package/front_end/ui/components/buttons/textButton.css +12 -12
- package/front_end/ui/components/dialogs/Dialog.ts +1 -1
- package/front_end/ui/components/dialogs/dialog.css +1 -1
- package/front_end/ui/components/diff_view/diffView.css +3 -3
- package/front_end/ui/components/expandable_list/expandableList.css +9 -9
- package/front_end/ui/components/highlighting/HighlightElement.ts +1 -1
- package/front_end/ui/components/highlighting/HighlightManager.ts +4 -0
- package/front_end/ui/components/icon_button/iconButton.css +2 -2
- package/front_end/ui/components/input/checkbox.css +8 -8
- package/front_end/ui/components/input/textInput.css +3 -3
- package/front_end/ui/components/issue_counter/issueLinkIcon.css +2 -2
- package/front_end/ui/components/linkifier/linkifierImpl.css +1 -1
- package/front_end/ui/components/markdown_view/MarkdownImagesMap.ts +1 -1
- package/front_end/ui/components/markdown_view/MarkdownLinksMap.ts +1 -1
- package/front_end/ui/components/markdown_view/codeBlock.css +2 -2
- package/front_end/ui/components/markdown_view/markdownView.css +7 -7
- package/front_end/ui/components/menus/menuGroup.css +2 -2
- package/front_end/ui/components/menus/menuItem.css +2 -2
- package/front_end/ui/components/menus/selectMenu.css +2 -2
- package/front_end/ui/components/menus/selectMenuButton.css +4 -4
- package/front_end/ui/components/panel_feedback/panelFeedback.css +15 -15
- package/front_end/ui/components/panel_feedback/previewToggle.css +2 -2
- package/front_end/ui/components/panel_introduction_steps/panelIntroductionSteps.css +7 -7
- package/front_end/ui/components/report_view/report.css +3 -3
- package/front_end/ui/components/report_view/reportSectionDivider.css +1 -1
- package/front_end/ui/components/report_view/reportValue.css +1 -1
- package/front_end/ui/components/request_link_icon/requestLinkIcon.css +2 -2
- package/front_end/ui/components/settings/settingCheckbox.css +6 -6
- package/front_end/ui/components/text_editor/TextEditor.ts +3 -1
- package/front_end/ui/components/text_editor/config.ts +16 -4
- package/front_end/ui/kit/icons/icon.css +4 -4
- package/front_end/ui/kit/link/link.css +1 -1
- package/front_end/ui/legacy/ActionRegistration.ts +23 -23
- package/front_end/ui/legacy/Dialog.ts +1 -1
- package/front_end/ui/legacy/DockController.ts +3 -3
- package/front_end/ui/legacy/EmptyWidget.ts +13 -34
- package/front_end/ui/legacy/FilterBar.ts +4 -4
- package/front_end/ui/legacy/Infobar.ts +2 -2
- package/front_end/ui/legacy/InspectorDrawerView.ts +6 -6
- package/front_end/ui/legacy/InspectorView.ts +19 -26
- package/front_end/ui/legacy/ListWidget.ts +7 -7
- package/front_end/ui/legacy/PlusButton.ts +1 -3
- package/front_end/ui/legacy/RemoteDebuggingTerminatedScreen.ts +6 -6
- package/front_end/ui/legacy/SearchableView.ts +16 -16
- package/front_end/ui/legacy/SoftContextMenu.ts +8 -8
- package/front_end/ui/legacy/SoftDropDown.ts +1 -1
- package/front_end/ui/legacy/SuggestBox.ts +2 -2
- package/front_end/ui/legacy/TabbedPane.ts +10 -10
- package/front_end/ui/legacy/TargetCrashedScreen.ts +2 -2
- package/front_end/ui/legacy/Toolbar.ts +5 -5
- package/front_end/ui/legacy/Treeoutline.ts +1 -1
- package/front_end/ui/legacy/UIUtils.ts +80 -20
- package/front_end/ui/legacy/ViewManager.ts +1 -1
- package/front_end/ui/legacy/ViewRegistration.ts +7 -7
- package/front_end/ui/legacy/Widget.ts +5 -5
- package/front_end/ui/legacy/checkboxTextLabel.css +3 -3
- package/front_end/ui/legacy/components/color_picker/ColorFormatSpec.ts +16 -0
- package/front_end/ui/legacy/components/color_picker/FormatPickerContextMenu.ts +1 -0
- package/front_end/ui/legacy/components/color_picker/spectrum.css +90 -90
- package/front_end/ui/legacy/components/cookie_table/cookiesTable.css +1 -1
- package/front_end/ui/legacy/components/data_grid/DataGrid.ts +26 -28
- package/front_end/ui/legacy/components/data_grid/ShowMoreDataGridNode.ts +3 -7
- package/front_end/ui/legacy/components/inline_editor/bezierEditor.css +13 -13
- package/front_end/ui/legacy/components/inline_editor/colorSwatch.css +7 -7
- package/front_end/ui/legacy/components/inline_editor/cssAngleEditor.css +5 -5
- package/front_end/ui/legacy/components/inline_editor/cssShadowEditor.css +18 -18
- package/front_end/ui/legacy/components/object_ui/CustomPreviewComponent.ts +104 -86
- package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +8 -6
- package/front_end/ui/legacy/components/object_ui/objectPopover.css +4 -4
- package/front_end/ui/legacy/components/object_ui/objectPropertiesSection.css +6 -6
- package/front_end/ui/legacy/components/perf_ui/ChartViewport.ts +28 -11
- package/front_end/ui/legacy/components/perf_ui/TimelineOverviewPane.ts +0 -4
- package/front_end/ui/legacy/components/perf_ui/chartViewport.css +4 -4
- package/front_end/ui/legacy/components/perf_ui/filmStripView.css +6 -6
- package/front_end/ui/legacy/components/perf_ui/flameChart.css +7 -7
- package/front_end/ui/legacy/components/perf_ui/overviewGrid.css +11 -11
- package/front_end/ui/legacy/components/perf_ui/pieChart.css +6 -6
- package/front_end/ui/legacy/components/perf_ui/timelineGrid.css +5 -5
- package/front_end/ui/legacy/components/quick_open/filteredListWidget.css +3 -3
- package/front_end/ui/legacy/components/source_frame/ResourceSourceFrame.ts +1 -1
- package/front_end/ui/legacy/components/source_frame/imageView.css +1 -1
- package/front_end/ui/legacy/components/source_frame/jsonView.css +1 -1
- package/front_end/ui/legacy/components/source_frame/resourceSourceFrame.css +1 -1
- package/front_end/ui/legacy/components/source_frame/xmlTree.css +3 -3
- package/front_end/ui/legacy/components/utils/imagePreview.css +1 -1
- package/front_end/ui/legacy/components/utils/jsUtils.css +10 -10
- package/front_end/ui/legacy/dropTarget.css +2 -2
- package/front_end/ui/legacy/emptyWidget.css +6 -0
- package/front_end/ui/legacy/filter.css +19 -19
- package/front_end/ui/legacy/infobar.css +2 -2
- package/front_end/ui/legacy/inspectorCommon.css +67 -67
- package/front_end/ui/legacy/inspectorDrawerTabbedPane.css +1 -1
- package/front_end/ui/legacy/listWidget.css +5 -5
- package/front_end/ui/legacy/progressIndicator.css +4 -4
- package/front_end/ui/legacy/reportView.css +7 -7
- package/front_end/ui/legacy/searchableView.css +5 -5
- package/front_end/ui/legacy/smallBubble.css +3 -3
- package/front_end/ui/legacy/softContextMenu.css +4 -4
- package/front_end/ui/legacy/softDropDownButton.css +1 -1
- package/front_end/ui/legacy/splitWidget.css +9 -31
- package/front_end/ui/legacy/suggestBox.css +4 -4
- package/front_end/ui/legacy/tabbedPane.css +17 -17
- package/front_end/ui/legacy/textPrompt.css +2 -2
- package/front_end/ui/legacy/toolbar.css +4 -4
- package/front_end/ui/legacy/treeoutline.css +14 -14
- package/front_end/ui/legacy/viewContainers.css +6 -6
- package/front_end/ui/settings/ConsoleSettings.ts +34 -0
- package/front_end/ui/visual_logging/KnownContextValues.ts +12 -0
- package/inspector_overlay/common.ts +12 -12
- package/inspector_overlay/css_grid_label_helpers.ts +16 -17
- package/inspector_overlay/drag_resize_handler.ts +2 -2
- package/inspector_overlay/highlight_common.ts +11 -13
- package/inspector_overlay/highlight_container_query.ts +2 -2
- package/inspector_overlay/highlight_flex_common.ts +6 -7
- package/inspector_overlay/highlight_grid_common.ts +3 -3
- package/inspector_overlay/highlight_isolated_element.ts +12 -3
- package/inspector_overlay/highlight_scroll_snap.ts +2 -2
- package/inspector_overlay/loadCSS.rollup.js +0 -1
- package/inspector_overlay/testing/InspectorOverlayHelpers.ts +13 -13
- package/inspector_overlay/tool_green_dev_anchors.ts +3 -3
- package/inspector_overlay/tool_highlight.ts +9 -9
- package/inspector_overlay/tool_paused.ts +4 -4
- package/inspector_overlay/tool_persistent.ts +11 -11
- package/inspector_overlay/tool_screenshot.ts +7 -7
- package/inspector_overlay/tool_source_order.ts +4 -4
- package/inspector_overlay/tool_viewport_size.ts +3 -3
- package/inspector_overlay/tool_window_controls.ts +4 -4
- package/mcp/mcp.ts +1 -0
- package/package.json +2 -2
- package/front_end/generated/protocol-tsconfig.json +0 -10
- package/front_end/panels/js_timeline/DIR_METADATA +0 -3
- package/front_end/panels/js_timeline/js_timeline-meta.ts +0 -193
- package/front_end/panels/js_timeline/js_timeline.ts +0 -1
- /package/front_end/entrypoints/{formatter_worker/FormatterActions.ts → formatter_actions/formatter_actions.ts} +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { LCPMetricWithAttribution,
|
|
1
|
+
import type { LCPMetricWithAttribution, LCPAttributionReportOpts } from '../types.js';
|
|
2
2
|
/**
|
|
3
3
|
* Calculates the [LCP](https://web.dev/articles/lcp) value for the current page and
|
|
4
4
|
* calls the `callback` function once the value is ready (along with the
|
|
@@ -10,4 +10,4 @@ import type { LCPMetricWithAttribution, AttributionReportOpts } from '../types.j
|
|
|
10
10
|
* performance entry is dispatched, or once the final value of the metric has
|
|
11
11
|
* been determined.
|
|
12
12
|
*/
|
|
13
|
-
export declare const onLCP: (onReport: (metric: LCPMetricWithAttribution) => void, opts?:
|
|
13
|
+
export declare const onLCP: (onReport: (metric: LCPMetricWithAttribution) => void, opts?: LCPAttributionReportOpts) => void;
|
|
@@ -18,7 +18,27 @@ import { getSelector } from '../lib/getSelector.js';
|
|
|
18
18
|
import { initUnique } from '../lib/initUnique.js';
|
|
19
19
|
import { LCPEntryManager } from '../lib/LCPEntryManager.js';
|
|
20
20
|
import { checkSoftNavsEnabled } from '../lib/softNavs.js';
|
|
21
|
+
import { observe } from '../lib/observe.js';
|
|
21
22
|
import { onLCP as unattributedOnLCP } from '../onLCP.js';
|
|
23
|
+
/**
|
|
24
|
+
* Default resource buffer size to 50 to help attribute media LCPs to a URL and
|
|
25
|
+
* for subpart attribution. This can be increased for pages that request a
|
|
26
|
+
* large number of resources between the LCP resource and LCP candidates being
|
|
27
|
+
* processed, particularly for soft navigations where the browser default first
|
|
28
|
+
* 250 entries may not contain the LCP resource.
|
|
29
|
+
*/
|
|
30
|
+
const DEFAULT_RESOURCE_BUFFER_SIZE = 50;
|
|
31
|
+
let resourceBufferSizeLimit = DEFAULT_RESOURCE_BUFFER_SIZE;
|
|
32
|
+
const resourceBuffer = [];
|
|
33
|
+
observe(['resource'], (entries) => {
|
|
34
|
+
for (const entry of entries) {
|
|
35
|
+
resourceBuffer.push(entry);
|
|
36
|
+
// Keep only the last resourceBufferSizeLimit entries.
|
|
37
|
+
if (resourceBuffer.length > resourceBufferSizeLimit) {
|
|
38
|
+
resourceBuffer.shift();
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
});
|
|
22
42
|
/**
|
|
23
43
|
* Calculates the [LCP](https://web.dev/articles/lcp) value for the current page and
|
|
24
44
|
* calls the `callback` function once the value is ready (along with the
|
|
@@ -36,6 +56,9 @@ export const onLCP = (onReport, opts = {}) => {
|
|
|
36
56
|
// this function invocation and the `unattributedOnLCP()` invocation below
|
|
37
57
|
// (which is passed the same `opts` object).
|
|
38
58
|
opts = Object.assign({}, opts);
|
|
59
|
+
if (opts.resourceBufferSize != undefined) {
|
|
60
|
+
resourceBufferSizeLimit = opts.resourceBufferSize;
|
|
61
|
+
}
|
|
39
62
|
const lcpEntryManager = initUnique(opts, LCPEntryManager);
|
|
40
63
|
const lcpTargetMap = new WeakMap();
|
|
41
64
|
if (checkSoftNavsEnabled(opts)) {
|
|
@@ -64,10 +87,14 @@ export const onLCP = (onReport, opts = {}) => {
|
|
|
64
87
|
if (metric.entries.length) {
|
|
65
88
|
// The `metric.entries.length` check ensures there will be an entry.
|
|
66
89
|
const lcpEntry = metric.entries.at(-1);
|
|
90
|
+
// Get the Resource Timing entry checking the local buffer first
|
|
91
|
+
// Use findLast to get the latest entry in case a resource is requested
|
|
92
|
+
// multiple times (can particularly affect soft nav page views).
|
|
67
93
|
const lcpResourceEntry = lcpEntry.url &&
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
94
|
+
(resourceBuffer.findLast((e) => e.name === lcpEntry.url) ||
|
|
95
|
+
performance
|
|
96
|
+
.getEntriesByType('resource')
|
|
97
|
+
.findLast((e) => e.name === lcpEntry.url));
|
|
71
98
|
attribution.target = lcpTargetMap.get(lcpEntry);
|
|
72
99
|
attribution.lcpEntry = lcpEntry;
|
|
73
100
|
// Only attribute the URL and resource entry if they exist.
|
|
@@ -5,6 +5,15 @@ export interface Interaction {
|
|
|
5
5
|
entries: PerformanceEventTiming[];
|
|
6
6
|
}
|
|
7
7
|
export declare class InteractionManager {
|
|
8
|
+
/**
|
|
9
|
+
* The interaction count at the start of the current navigation, so p98
|
|
10
|
+
* interaction latencies only consider interactions since then.
|
|
11
|
+
*
|
|
12
|
+
* This is per-instance rather than module state: `initUnique()` gives every
|
|
13
|
+
* `onINP()` call its own manager, and a shared counter would let whichever
|
|
14
|
+
* instance resets first hide the interactions from all the others.
|
|
15
|
+
*/
|
|
16
|
+
_prevInteractionCount: number;
|
|
8
17
|
/**
|
|
9
18
|
* A list of longest interactions on the page (by latency) sorted so the
|
|
10
19
|
* longest one is first. The list is at most MAX_INTERACTIONS_TO_CONSIDER
|
|
@@ -18,6 +27,11 @@ export declare class InteractionManager {
|
|
|
18
27
|
_longestInteractionMap: Map<number, Interaction>;
|
|
19
28
|
_onBeforeProcessingEntry?: (entry: PerformanceEventTiming) => void;
|
|
20
29
|
_onAfterProcessingINPCandidate?: (interaction: Interaction) => void;
|
|
30
|
+
/**
|
|
31
|
+
* Returns the interaction count since the start of the current navigation
|
|
32
|
+
* (or the full page lifecycle if there were no soft navs / bfcache restores).
|
|
33
|
+
*/
|
|
34
|
+
_getInteractionCountForNavigation(): number;
|
|
21
35
|
_resetInteractions(): void;
|
|
22
36
|
/**
|
|
23
37
|
* Returns the estimated p98 longest interaction based on the stored
|
|
@@ -17,17 +17,16 @@ import { getInteractionCount } from './polyfills/interactionCountPolyfill.js';
|
|
|
17
17
|
// To prevent unnecessary memory usage on pages with lots of interactions,
|
|
18
18
|
// store at most 10 of the longest interactions to consider as INP candidates.
|
|
19
19
|
const MAX_INTERACTIONS_TO_CONSIDER = 10;
|
|
20
|
-
// Used to store the interaction count after a bfcache restore, since p98
|
|
21
|
-
// interaction latencies should only consider the current navigation.
|
|
22
|
-
let prevInteractionCount = 0;
|
|
23
|
-
/**
|
|
24
|
-
* Returns the interaction count since the last bfcache restore (or for the
|
|
25
|
-
* full page lifecycle if there were no bfcache restores).
|
|
26
|
-
*/
|
|
27
|
-
const getInteractionCountForNavigation = () => {
|
|
28
|
-
return getInteractionCount() - prevInteractionCount;
|
|
29
|
-
};
|
|
30
20
|
export class InteractionManager {
|
|
21
|
+
/**
|
|
22
|
+
* The interaction count at the start of the current navigation, so p98
|
|
23
|
+
* interaction latencies only consider interactions since then.
|
|
24
|
+
*
|
|
25
|
+
* This is per-instance rather than module state: `initUnique()` gives every
|
|
26
|
+
* `onINP()` call its own manager, and a shared counter would let whichever
|
|
27
|
+
* instance resets first hide the interactions from all the others.
|
|
28
|
+
*/
|
|
29
|
+
_prevInteractionCount = 0;
|
|
31
30
|
/**
|
|
32
31
|
* A list of longest interactions on the page (by latency) sorted so the
|
|
33
32
|
* longest one is first. The list is at most MAX_INTERACTIONS_TO_CONSIDER
|
|
@@ -41,8 +40,15 @@ export class InteractionManager {
|
|
|
41
40
|
_longestInteractionMap = new Map();
|
|
42
41
|
_onBeforeProcessingEntry;
|
|
43
42
|
_onAfterProcessingINPCandidate;
|
|
43
|
+
/**
|
|
44
|
+
* Returns the interaction count since the start of the current navigation
|
|
45
|
+
* (or the full page lifecycle if there were no soft navs / bfcache restores).
|
|
46
|
+
*/
|
|
47
|
+
_getInteractionCountForNavigation() {
|
|
48
|
+
return getInteractionCount() - this._prevInteractionCount;
|
|
49
|
+
}
|
|
44
50
|
_resetInteractions() {
|
|
45
|
-
|
|
51
|
+
this._prevInteractionCount = getInteractionCount();
|
|
46
52
|
this._longestInteractionList.length = 0;
|
|
47
53
|
this._longestInteractionMap.clear();
|
|
48
54
|
}
|
|
@@ -51,7 +57,7 @@ export class InteractionManager {
|
|
|
51
57
|
* interaction candidates and the interaction count for the current page.
|
|
52
58
|
*/
|
|
53
59
|
_estimateP98LongestInteraction(navigationType) {
|
|
54
|
-
const interactionCountForNavigation =
|
|
60
|
+
const interactionCountForNavigation = this._getInteractionCountForNavigation();
|
|
55
61
|
const candidateInteractionIndex = Math.min(this._longestInteractionList.length - 1, Math.floor(interactionCountForNavigation / 50));
|
|
56
62
|
// If we have a non-zero interactionCountForNavigation but no
|
|
57
63
|
// candidateInteractionIndex, then it's below the 16ms limit
|
|
@@ -79,7 +85,7 @@ export class InteractionManager {
|
|
|
79
85
|
_processEntry(entry) {
|
|
80
86
|
this._onBeforeProcessingEntry?.(entry);
|
|
81
87
|
// Skip further processing for entries that cannot be INP candidates.
|
|
82
|
-
if (!
|
|
88
|
+
if (!entry.interactionId)
|
|
83
89
|
return;
|
|
84
90
|
// The least-long of the 10 longest interactions.
|
|
85
91
|
const minLongestInteraction = this._longestInteractionList.at(-1);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { MetricType, MetricRatingThresholds } from '../types.js';
|
|
2
|
-
export declare const bindReporter: <MetricName extends MetricType[
|
|
2
|
+
export declare const bindReporter: <MetricName extends MetricType['name']>(callback: (metric: Extract<MetricType, {
|
|
3
3
|
name: MetricName;
|
|
4
4
|
}>) => void, metric: Extract<MetricType, {
|
|
5
5
|
name: MetricName;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { MetricType } from '../types.js';
|
|
2
|
-
export declare const initMetric: <MetricName extends MetricType[
|
|
2
|
+
export declare const initMetric: <MetricName extends MetricType['name']>(name: MetricName, value?: number, navigationType?: MetricType['navigationType'], navigationId?: number, navigationInteractionId?: number, navigationURL?: string, navigationStartTime?: number) => {
|
|
3
3
|
name: MetricName;
|
|
4
4
|
value: number;
|
|
5
|
-
rating:
|
|
5
|
+
rating: 'good';
|
|
6
6
|
delta: number;
|
|
7
7
|
entries: (Extract<import("../types.js").CLSMetric, {
|
|
8
8
|
name: MetricName;
|
|
@@ -16,7 +16,7 @@ export declare const initMetric: <MetricName extends MetricType["name"]>(name: M
|
|
|
16
16
|
name: MetricName;
|
|
17
17
|
}>)["entries"];
|
|
18
18
|
id: string;
|
|
19
|
-
navigationType: "
|
|
19
|
+
navigationType: "back-forward" | "back-forward-cache" | "navigate" | "prerender" | "reload" | "restore" | "soft-navigation";
|
|
20
20
|
navigationId: number;
|
|
21
21
|
navigationInteractionId: number | undefined;
|
|
22
22
|
navigationURL: string | undefined;
|
|
@@ -14,7 +14,9 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
export const checkSoftNavsEnabled = (opts) => {
|
|
17
|
-
return (
|
|
17
|
+
return (
|
|
18
|
+
// Firefox has a preference to disable this, which some people use so add a guard
|
|
19
|
+
globalThis.PerformanceObserver?.supportedEntryTypes?.includes('soft-navigation') &&
|
|
18
20
|
// Older implementations expose the value as an attribute rather than the
|
|
19
21
|
// method. We only support the newer method as that was what was launched
|
|
20
22
|
// to stable unflagged.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Metric } from './base.js';
|
|
1
|
+
import type { AttributionReportOpts, Metric } from './base.js';
|
|
2
2
|
/**
|
|
3
3
|
* An LCP-specific version of the Metric object.
|
|
4
4
|
*/
|
|
@@ -65,6 +65,20 @@ export interface LCPAttribution {
|
|
|
65
65
|
*/
|
|
66
66
|
lcpEntry?: LargestContentfulPaint;
|
|
67
67
|
}
|
|
68
|
+
/**
|
|
69
|
+
* Configuration options for `onLCP`.
|
|
70
|
+
*/
|
|
71
|
+
export interface LCPAttributionReportOpts extends AttributionReportOpts {
|
|
72
|
+
/**
|
|
73
|
+
* The maximum number of additional Resource Timing entries to keep in the
|
|
74
|
+
* buffer, in addition to the first 250 entries available in the default
|
|
75
|
+
* buffer. This is useful to help attribute media LCPs to a URL and LCP
|
|
76
|
+
* subparts. Defaults to 50 but can be increased for pages that use a lot of
|
|
77
|
+
* resources, before LCP gets a chance to emit, particularly for soft
|
|
78
|
+
* navigations.
|
|
79
|
+
*/
|
|
80
|
+
resourceBufferSize?: number;
|
|
81
|
+
}
|
|
68
82
|
/**
|
|
69
83
|
* An LCP-specific version of the Metric object with attribution.
|
|
70
84
|
*/
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "web-vitals",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.2.1",
|
|
4
4
|
"description": "Easily measure performance metrics in JavaScript",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"registry": "https://registry.npmjs.org/"
|
|
@@ -90,7 +90,6 @@
|
|
|
90
90
|
"release:alpha": "npm version prerelease --preid=alpha -m 'Release v%s' && npm publish --tag next",
|
|
91
91
|
"release:beta": "npm version prerelease --preid=beta -m 'Release v%s' && npm publish --tag next",
|
|
92
92
|
"release:rc": "npm version prerelease --preid=rc -m 'Release v%s' && npm publish --tag next",
|
|
93
|
-
"release:soft-navs": "npm run build && npm publish --tag soft-navs",
|
|
94
93
|
"test": "npm-run-all build test:unit -p -r test:e2e test:server",
|
|
95
94
|
"test:e2e": "wdio",
|
|
96
95
|
"test:server": "node test/server.js",
|
|
@@ -210,7 +210,7 @@ export const onINP = (
|
|
|
210
210
|
}
|
|
211
211
|
|
|
212
212
|
// Store the grouped render time for this entry for reference later.
|
|
213
|
-
if (entry.interactionId
|
|
213
|
+
if (entry.interactionId) {
|
|
214
214
|
entryToEntriesGroupMap.set(entry, group);
|
|
215
215
|
}
|
|
216
216
|
|
|
@@ -448,7 +448,14 @@ export const onINP = (
|
|
|
448
448
|
const firstEntry = metric.entries[0];
|
|
449
449
|
const group = entryToEntriesGroupMap.get(firstEntry)!;
|
|
450
450
|
|
|
451
|
-
|
|
451
|
+
// `group.processingStart` is the earliest processing start across *all*
|
|
452
|
+
// events presented in this frame, which can predate this interaction's
|
|
453
|
+
// `startTime` (e.g. a long `pointerover` handler that was still running
|
|
454
|
+
// when the user clicked). Clamp so `inputDelay` is never negative.
|
|
455
|
+
const processingStart = Math.max(
|
|
456
|
+
group.processingStart,
|
|
457
|
+
firstEntry.startTime,
|
|
458
|
+
);
|
|
452
459
|
|
|
453
460
|
// Due to the fact that durations can be rounded down to the nearest 8ms,
|
|
454
461
|
// we have to clamp `nextPaintTime` so it doesn't appear to occur before
|
|
@@ -19,14 +19,37 @@ import {getSelector} from '../lib/getSelector.js';
|
|
|
19
19
|
import {initUnique} from '../lib/initUnique.js';
|
|
20
20
|
import {LCPEntryManager} from '../lib/LCPEntryManager.js';
|
|
21
21
|
import {checkSoftNavsEnabled} from '../lib/softNavs.js';
|
|
22
|
+
import {observe} from '../lib/observe.js';
|
|
22
23
|
import {onLCP as unattributedOnLCP} from '../onLCP.js';
|
|
23
24
|
import type {
|
|
24
25
|
LCPAttribution,
|
|
25
26
|
LCPMetric,
|
|
26
27
|
LCPMetricWithAttribution,
|
|
27
|
-
|
|
28
|
+
LCPAttributionReportOpts,
|
|
28
29
|
} from '../types.js';
|
|
29
30
|
|
|
31
|
+
/**
|
|
32
|
+
* Default resource buffer size to 50 to help attribute media LCPs to a URL and
|
|
33
|
+
* for subpart attribution. This can be increased for pages that request a
|
|
34
|
+
* large number of resources between the LCP resource and LCP candidates being
|
|
35
|
+
* processed, particularly for soft navigations where the browser default first
|
|
36
|
+
* 250 entries may not contain the LCP resource.
|
|
37
|
+
*/
|
|
38
|
+
const DEFAULT_RESOURCE_BUFFER_SIZE = 50;
|
|
39
|
+
let resourceBufferSizeLimit = DEFAULT_RESOURCE_BUFFER_SIZE;
|
|
40
|
+
|
|
41
|
+
const resourceBuffer: PerformanceResourceTiming[] = [];
|
|
42
|
+
|
|
43
|
+
observe(['resource'], (entries) => {
|
|
44
|
+
for (const entry of entries) {
|
|
45
|
+
resourceBuffer.push(entry);
|
|
46
|
+
// Keep only the last resourceBufferSizeLimit entries.
|
|
47
|
+
if (resourceBuffer.length > resourceBufferSizeLimit) {
|
|
48
|
+
resourceBuffer.shift();
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
|
|
30
53
|
/**
|
|
31
54
|
* Calculates the [LCP](https://web.dev/articles/lcp) value for the current page and
|
|
32
55
|
* calls the `callback` function once the value is ready (along with the
|
|
@@ -40,7 +63,7 @@ import type {
|
|
|
40
63
|
*/
|
|
41
64
|
export const onLCP = (
|
|
42
65
|
onReport: (metric: LCPMetricWithAttribution) => void,
|
|
43
|
-
opts:
|
|
66
|
+
opts: LCPAttributionReportOpts = {},
|
|
44
67
|
) => {
|
|
45
68
|
// Clone the opts object to ensure it's unique, so we can initialize a
|
|
46
69
|
// single instance of the `LCPEntryManager` class that's shared only with
|
|
@@ -48,6 +71,10 @@ export const onLCP = (
|
|
|
48
71
|
// (which is passed the same `opts` object).
|
|
49
72
|
opts = Object.assign({}, opts);
|
|
50
73
|
|
|
74
|
+
if (opts.resourceBufferSize != undefined) {
|
|
75
|
+
resourceBufferSizeLimit = opts.resourceBufferSize;
|
|
76
|
+
}
|
|
77
|
+
|
|
51
78
|
const lcpEntryManager = initUnique(opts, LCPEntryManager);
|
|
52
79
|
const lcpTargetMap: WeakMap<LargestContentfulPaint, string> = new WeakMap();
|
|
53
80
|
|
|
@@ -81,11 +108,15 @@ export const onLCP = (
|
|
|
81
108
|
if (metric.entries.length) {
|
|
82
109
|
// The `metric.entries.length` check ensures there will be an entry.
|
|
83
110
|
const lcpEntry = metric.entries.at(-1)!;
|
|
111
|
+
// Get the Resource Timing entry checking the local buffer first
|
|
112
|
+
// Use findLast to get the latest entry in case a resource is requested
|
|
113
|
+
// multiple times (can particularly affect soft nav page views).
|
|
84
114
|
const lcpResourceEntry =
|
|
85
115
|
lcpEntry.url &&
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
116
|
+
(resourceBuffer.findLast((e) => e.name === lcpEntry.url) ||
|
|
117
|
+
performance
|
|
118
|
+
.getEntriesByType('resource')
|
|
119
|
+
.findLast((e) => e.name === lcpEntry.url));
|
|
89
120
|
|
|
90
121
|
attribution.target = lcpTargetMap.get(lcpEntry);
|
|
91
122
|
attribution.lcpEntry = lcpEntry;
|
|
@@ -31,19 +31,16 @@ export interface Interaction {
|
|
|
31
31
|
// store at most 10 of the longest interactions to consider as INP candidates.
|
|
32
32
|
const MAX_INTERACTIONS_TO_CONSIDER = 10;
|
|
33
33
|
|
|
34
|
-
// Used to store the interaction count after a bfcache restore, since p98
|
|
35
|
-
// interaction latencies should only consider the current navigation.
|
|
36
|
-
let prevInteractionCount = 0;
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* Returns the interaction count since the last bfcache restore (or for the
|
|
40
|
-
* full page lifecycle if there were no bfcache restores).
|
|
41
|
-
*/
|
|
42
|
-
const getInteractionCountForNavigation = () => {
|
|
43
|
-
return getInteractionCount() - prevInteractionCount;
|
|
44
|
-
};
|
|
45
|
-
|
|
46
34
|
export class InteractionManager {
|
|
35
|
+
/**
|
|
36
|
+
* The interaction count at the start of the current navigation, so p98
|
|
37
|
+
* interaction latencies only consider interactions since then.
|
|
38
|
+
*
|
|
39
|
+
* This is per-instance rather than module state: `initUnique()` gives every
|
|
40
|
+
* `onINP()` call its own manager, and a shared counter would let whichever
|
|
41
|
+
* instance resets first hide the interactions from all the others.
|
|
42
|
+
*/
|
|
43
|
+
_prevInteractionCount = 0;
|
|
47
44
|
/**
|
|
48
45
|
* A list of longest interactions on the page (by latency) sorted so the
|
|
49
46
|
* longest one is first. The list is at most MAX_INTERACTIONS_TO_CONSIDER
|
|
@@ -61,8 +58,16 @@ export class InteractionManager {
|
|
|
61
58
|
|
|
62
59
|
_onAfterProcessingINPCandidate?: (interaction: Interaction) => void;
|
|
63
60
|
|
|
61
|
+
/**
|
|
62
|
+
* Returns the interaction count since the start of the current navigation
|
|
63
|
+
* (or the full page lifecycle if there were no soft navs / bfcache restores).
|
|
64
|
+
*/
|
|
65
|
+
_getInteractionCountForNavigation() {
|
|
66
|
+
return getInteractionCount() - this._prevInteractionCount;
|
|
67
|
+
}
|
|
68
|
+
|
|
64
69
|
_resetInteractions() {
|
|
65
|
-
|
|
70
|
+
this._prevInteractionCount = getInteractionCount();
|
|
66
71
|
this._longestInteractionList.length = 0;
|
|
67
72
|
this._longestInteractionMap.clear();
|
|
68
73
|
}
|
|
@@ -72,7 +77,8 @@ export class InteractionManager {
|
|
|
72
77
|
* interaction candidates and the interaction count for the current page.
|
|
73
78
|
*/
|
|
74
79
|
_estimateP98LongestInteraction(navigationType: Metric['navigationType']) {
|
|
75
|
-
const interactionCountForNavigation =
|
|
80
|
+
const interactionCountForNavigation =
|
|
81
|
+
this._getInteractionCountForNavigation();
|
|
76
82
|
const candidateInteractionIndex = Math.min(
|
|
77
83
|
this._longestInteractionList.length - 1,
|
|
78
84
|
Math.floor(interactionCountForNavigation / 50),
|
|
@@ -109,7 +115,7 @@ export class InteractionManager {
|
|
|
109
115
|
this._onBeforeProcessingEntry?.(entry);
|
|
110
116
|
|
|
111
117
|
// Skip further processing for entries that cannot be INP candidates.
|
|
112
|
-
if (!
|
|
118
|
+
if (!entry.interactionId) return;
|
|
113
119
|
|
|
114
120
|
// The least-long of the 10 longest interactions.
|
|
115
121
|
const minLongestInteraction = this._longestInteractionList.at(-1);
|
|
@@ -18,7 +18,10 @@ import type {ReportOpts} from '../types.js';
|
|
|
18
18
|
|
|
19
19
|
export const checkSoftNavsEnabled = (opts?: ReportOpts) => {
|
|
20
20
|
return (
|
|
21
|
-
|
|
21
|
+
// Firefox has a preference to disable this, which some people use so add a guard
|
|
22
|
+
globalThis.PerformanceObserver?.supportedEntryTypes?.includes(
|
|
23
|
+
'soft-navigation',
|
|
24
|
+
) &&
|
|
22
25
|
// Older implementations expose the value as an attribute rather than the
|
|
23
26
|
// method. We only support the newer method as that was what was launched
|
|
24
27
|
// to stable unflagged.
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
-
import type {Metric} from './base.js';
|
|
17
|
+
import type {AttributionReportOpts, Metric} from './base.js';
|
|
18
18
|
|
|
19
19
|
/**
|
|
20
20
|
* An LCP-specific version of the Metric object.
|
|
@@ -84,6 +84,21 @@ export interface LCPAttribution {
|
|
|
84
84
|
lcpEntry?: LargestContentfulPaint;
|
|
85
85
|
}
|
|
86
86
|
|
|
87
|
+
/**
|
|
88
|
+
* Configuration options for `onLCP`.
|
|
89
|
+
*/
|
|
90
|
+
export interface LCPAttributionReportOpts extends AttributionReportOpts {
|
|
91
|
+
/**
|
|
92
|
+
* The maximum number of additional Resource Timing entries to keep in the
|
|
93
|
+
* buffer, in addition to the first 250 entries available in the default
|
|
94
|
+
* buffer. This is useful to help attribute media LCPs to a URL and LCP
|
|
95
|
+
* subparts. Defaults to 50 but can be increased for pages that use a lot of
|
|
96
|
+
* resources, before LCP gets a chance to emit, particularly for soft
|
|
97
|
+
* navigations.
|
|
98
|
+
*/
|
|
99
|
+
resourceBufferSize?: number;
|
|
100
|
+
}
|
|
101
|
+
|
|
87
102
|
/**
|
|
88
103
|
* An LCP-specific version of the Metric object with attribution.
|
|
89
104
|
*/
|
|
@@ -4,8 +4,8 @@ set -euo pipefail
|
|
|
4
4
|
|
|
5
5
|
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
|
|
6
6
|
|
|
7
|
-
VERSION=6.
|
|
8
|
-
GIT_SHA=
|
|
7
|
+
VERSION=6.2.1
|
|
8
|
+
GIT_SHA=582ee7450ca5c60a947edbfd95ad53e135ca5dde # web-vitals does not tag releases.
|
|
9
9
|
|
|
10
10
|
# Note: this is just to handle updating README.chromium.
|
|
11
11
|
# For the actual sources, below we checkout the repo, apply local patches, then build with tsc.
|
|
@@ -17,7 +17,7 @@ cd "$SCRIPT_DIR"
|
|
|
17
17
|
rm -rf package/src package/dist
|
|
18
18
|
|
|
19
19
|
if [ ! -d tmp-repo ]; then
|
|
20
|
-
git clone
|
|
20
|
+
git clone https://github.com/GoogleChrome/web-vitals tmp-repo
|
|
21
21
|
fi
|
|
22
22
|
|
|
23
23
|
cd tmp-repo
|
|
@@ -10,7 +10,16 @@ export type EditorAnchorSignature = CommentManager.CommentManager.EditorAnchorSi
|
|
|
10
10
|
export type CommentAnchorSignature = CommentManager.CommentManager.CommentAnchorSignature;
|
|
11
11
|
export type CommentThread = CommentManager.CommentManager.CommentThread;
|
|
12
12
|
|
|
13
|
-
const
|
|
13
|
+
const DISALLOWED_COMMENT_TARGETS = new Set<number>([
|
|
14
|
+
// Top-level containers & layout structures
|
|
15
|
+
VisualLogging.VisualElements.Panel,
|
|
16
|
+
VisualLogging.VisualElements.Drawer,
|
|
17
|
+
VisualLogging.VisualElements.Pane,
|
|
18
|
+
VisualLogging.VisualElements.Tree,
|
|
19
|
+
VisualLogging.VisualElements.PanelTabHeader,
|
|
20
|
+
VisualLogging.VisualElements.Resizer,
|
|
21
|
+
VisualLogging.VisualElements.Menu,
|
|
22
|
+
// Minor controls and toolbars
|
|
14
23
|
VisualLogging.VisualElements.Action,
|
|
15
24
|
VisualLogging.VisualElements.Toggle,
|
|
16
25
|
VisualLogging.VisualElements.Close,
|
|
@@ -158,7 +167,8 @@ function resolveCodeMirrorLineInfo(element: Element): CodeMirrorLineInfo|null {
|
|
|
158
167
|
* 3. Checks for domain IDs (`data-network-request-id` or `data-backend-node-id`) across shadow boundaries,
|
|
159
168
|
* returning the owning domain element.
|
|
160
169
|
* 4. Escalates minor controls / sub-elements up to semantic containers (e.g., TableRow, TreeItem).
|
|
161
|
-
* 5. Falls back to the nearest visual logging element if no semantic container is found
|
|
170
|
+
* 5. Falls back to the nearest visual logging element if no semantic container is found,
|
|
171
|
+
* excluding top-level containers and minor controls.
|
|
162
172
|
*
|
|
163
173
|
* @param element The source DOM element to resolve.
|
|
164
174
|
* @returns The resolved semantic anchor Element, or null if unresolvable/empty/excluded.
|
|
@@ -193,7 +203,7 @@ export function resolveCommentAnchorElement(element: Element): Element|null {
|
|
|
193
203
|
config.ve === VisualLogging.VisualElements.TreeItem) {
|
|
194
204
|
return isNonEmptyItem(target) ? target : null;
|
|
195
205
|
}
|
|
196
|
-
if (!fallbackCandidate && !
|
|
206
|
+
if (!fallbackCandidate && !DISALLOWED_COMMENT_TARGETS.has(config.ve)) {
|
|
197
207
|
fallbackCandidate = target;
|
|
198
208
|
}
|
|
199
209
|
} catch {
|
|
@@ -369,7 +379,8 @@ export function resolveCommentAnchor(
|
|
|
369
379
|
* @param limit Maximum number of matching elements to return (defaults to Infinity).
|
|
370
380
|
* @returns Array of matching Elements in document order.
|
|
371
381
|
*/
|
|
372
|
-
|
|
382
|
+
// eslint-disable-next-line @typescript-eslint/no-inferrable-types
|
|
383
|
+
export function deepQuerySelectorAll(root: Document|Element, selector: string, limit: number = Infinity): Element[] {
|
|
373
384
|
const results: Element[] = [];
|
|
374
385
|
if (limit <= 0 || Number.isNaN(limit)) {
|
|
375
386
|
return results;
|
|
@@ -10,7 +10,8 @@
|
|
|
10
10
|
position: fixed;
|
|
11
11
|
inset: 0;
|
|
12
12
|
pointer-events: none;
|
|
13
|
-
z-index
|
|
13
|
+
/* Needs to be above regular panel widgets (e.g. flame chart at z-index 2000) but below floating glass panes (which start at z-index 3000). */
|
|
14
|
+
z-index: 2500;
|
|
14
15
|
overflow: hidden;
|
|
15
16
|
width: 100vw;
|
|
16
17
|
height: 100vh;
|
|
@@ -20,8 +21,8 @@
|
|
|
20
21
|
position: absolute;
|
|
21
22
|
pointer-events: auto;
|
|
22
23
|
cursor: pointer;
|
|
23
|
-
font-size:
|
|
24
|
-
line-height:
|
|
24
|
+
font-size: var(--sys-typescale-headline1-size);
|
|
25
|
+
line-height: var(--sys-typescale-body1-line-height);
|
|
25
26
|
filter: drop-shadow(0 2px 5px rgb(0 0 0 / 35%));
|
|
26
27
|
user-select: none;
|
|
27
28
|
transition: transform 0.1s ease;
|
|
@@ -34,7 +35,7 @@
|
|
|
34
35
|
.comment-anchor-highlight {
|
|
35
36
|
position: absolute;
|
|
36
37
|
pointer-events: none;
|
|
37
|
-
border:
|
|
38
|
+
border: var(--sys-size-2) dashed var(--sys-color-primary);
|
|
38
39
|
background-color: color-mix(in srgb, var(--sys-color-primary), transparent 90%);
|
|
39
40
|
box-sizing: border-box;
|
|
40
41
|
}
|
|
@@ -42,7 +43,7 @@
|
|
|
42
43
|
.comment-hover-highlight {
|
|
43
44
|
position: absolute;
|
|
44
45
|
pointer-events: none;
|
|
45
|
-
border:
|
|
46
|
+
border: var(--sys-size-2) solid var(--sys-color-primary);
|
|
46
47
|
background-color: color-mix(in srgb, var(--sys-color-primary), transparent 85%);
|
|
47
48
|
box-sizing: border-box;
|
|
48
49
|
}
|
|
@@ -39,7 +39,7 @@ export class Adorner extends HTMLElement {
|
|
|
39
39
|
this.#render();
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
-
static readonly observedAttributes = ['active', 'toggleable'];
|
|
42
|
+
static readonly observedAttributes: string[] = ['active', 'toggleable'];
|
|
43
43
|
attributeChangedCallback(name: string, oldValue: string, newValue: string): void {
|
|
44
44
|
if (oldValue === newValue) {
|
|
45
45
|
return;
|
|
@@ -15,13 +15,13 @@
|
|
|
15
15
|
slot {
|
|
16
16
|
display: inline-flex;
|
|
17
17
|
box-sizing: border-box;
|
|
18
|
-
height:
|
|
18
|
+
height: var(--sys-size-7);
|
|
19
19
|
line-height: 13px;
|
|
20
|
-
padding: 0
|
|
20
|
+
padding: 0 var(--sys-size-4);
|
|
21
21
|
font-size: var(--override-adorner-font-size, 8.5px);
|
|
22
22
|
color: var(--override-adorner-text-color, var(--sys-color-primary));
|
|
23
23
|
background-color: var(--override-adorner-background-color, var(--sys-color-cdt-base-container));
|
|
24
|
-
border:
|
|
24
|
+
border: var(--sys-size-1) solid var(--override-adorner-border-color, var(--sys-color-tonal-outline));
|
|
25
25
|
border-radius: 10px;
|
|
26
26
|
position: relative;
|
|
27
27
|
|
|
@@ -46,15 +46,15 @@ slot {
|
|
|
46
46
|
}
|
|
47
47
|
|
|
48
48
|
:host(:focus-visible) slot {
|
|
49
|
-
outline:
|
|
50
|
-
outline-offset:
|
|
49
|
+
outline: var(--sys-size-2) solid var(--sys-color-state-focus-ring);
|
|
50
|
+
outline-offset: var(--sys-size-2);
|
|
51
51
|
z-index: 999;
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
:host([aria-pressed="true"]) slot {
|
|
55
55
|
color: var(--override-adorner-active-text-color, var(--sys-color-on-primary));
|
|
56
56
|
background-color: var(--override-adorner-active-background-color, var(--sys-color-primary));
|
|
57
|
-
border:
|
|
57
|
+
border: var(--sys-size-1) solid var(--override-adorner-active-background-color, var(--sys-color-primary));
|
|
58
58
|
|
|
59
59
|
&:hover::after {
|
|
60
60
|
background-color: var(--sys-color-state-hover-on-prominent);
|
|
@@ -38,7 +38,7 @@ const {html, Directives: {classMap}} = Lit;
|
|
|
38
38
|
* provided context.
|
|
39
39
|
*/
|
|
40
40
|
export class FloatingButton extends HTMLElement {
|
|
41
|
-
static readonly observedAttributes = ['icon-name', 'jslogcontext', 'disabled'];
|
|
41
|
+
static readonly observedAttributes: string[] = ['icon-name', 'jslogcontext', 'disabled'];
|
|
42
42
|
|
|
43
43
|
readonly #shadow = this.attachShadow({mode: 'open'});
|
|
44
44
|
|