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
|
@@ -5,7 +5,13 @@
|
|
|
5
5
|
|
|
6
6
|
// clang-format off
|
|
7
7
|
|
|
8
|
-
export
|
|
8
|
+
export interface NativeFunctionValue {
|
|
9
|
+
name: string;
|
|
10
|
+
signatures: string[][];
|
|
11
|
+
receivers?: string[];
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export const NativeFunctions: readonly NativeFunctionValue[] = [
|
|
9
15
|
{
|
|
10
16
|
name: "eval",
|
|
11
17
|
signatures: [["x"]]
|
|
@@ -6656,7 +6662,7 @@ export const NativeFunctions = [
|
|
|
6656
6662
|
},
|
|
6657
6663
|
{
|
|
6658
6664
|
name: "WebSocket",
|
|
6659
|
-
signatures: [["url","?
|
|
6665
|
+
signatures: [["url","?protocols"]]
|
|
6660
6666
|
},
|
|
6661
6667
|
{
|
|
6662
6668
|
name: "WebSocketError",
|
|
@@ -7000,7 +7006,7 @@ export const NativeFunctions = [
|
|
|
7000
7006
|
},
|
|
7001
7007
|
{
|
|
7002
7008
|
name: "install",
|
|
7003
|
-
signatures: [["?
|
|
7009
|
+
signatures: [["?params"]],
|
|
7004
7010
|
receivers: ["Navigator"]
|
|
7005
7011
|
},
|
|
7006
7012
|
{
|
|
@@ -7288,7 +7294,7 @@ export const NativeFunctions = [
|
|
|
7288
7294
|
},
|
|
7289
7295
|
{
|
|
7290
7296
|
name: "RTCEncodedVideoFrame",
|
|
7291
|
-
signatures: [["originalFrame","?options"]]
|
|
7297
|
+
signatures: [["init"],["originalFrame","?options"]]
|
|
7292
7298
|
},
|
|
7293
7299
|
{
|
|
7294
7300
|
name: "RTCError",
|
|
@@ -8564,7 +8570,21 @@ export const NativeFunctions = [
|
|
|
8564
8570
|
},
|
|
8565
8571
|
{
|
|
8566
8572
|
name: "getElementTransform",
|
|
8567
|
-
signatures: [["element","draw_transform"]]
|
|
8573
|
+
signatures: [["element","draw_transform"]],
|
|
8574
|
+
receivers: ["OffscreenCanvas"]
|
|
8575
|
+
},
|
|
8576
|
+
{
|
|
8577
|
+
name: "getElementTransform",
|
|
8578
|
+
signatures: [["element","?draw_transform"]],
|
|
8579
|
+
receivers: ["HTMLCanvasElement"]
|
|
8580
|
+
},
|
|
8581
|
+
{
|
|
8582
|
+
name: "updateElementGeometry",
|
|
8583
|
+
signatures: [["element","?options"]]
|
|
8584
|
+
},
|
|
8585
|
+
{
|
|
8586
|
+
name: "clearElementGeometry",
|
|
8587
|
+
signatures: [["element"]]
|
|
8568
8588
|
},
|
|
8569
8589
|
{
|
|
8570
8590
|
name: "NavigateEvent",
|
|
@@ -9126,10 +9146,6 @@ export const NativeFunctions = [
|
|
|
9126
9146
|
name: "prependHTMLUnsafe",
|
|
9127
9147
|
signatures: [["html","?options"]]
|
|
9128
9148
|
},
|
|
9129
|
-
{
|
|
9130
|
-
name: "setCanvasTransform",
|
|
9131
|
-
signatures: [["?matrix"]]
|
|
9132
|
-
},
|
|
9133
9149
|
{
|
|
9134
9150
|
name: "matchContainer",
|
|
9135
9151
|
signatures: [["query"]]
|
|
@@ -371,12 +371,18 @@ export class LiveMetrics extends Common.ObjectWrapper.ObjectWrapper<EventTypes>
|
|
|
371
371
|
// Use our own "interactionId" rather than the Chrome/web-vitals
|
|
372
372
|
// provided one, so we can group events with same start time
|
|
373
373
|
// (e.g. `pointerup` and `click` are one interaction log entry)
|
|
374
|
-
interactionId:
|
|
374
|
+
interactionId: webVitalsEvent.entryGroupId !== undefined && webVitalsEvent.startTime !== undefined ?
|
|
375
|
+
`interaction-${webVitalsEvent.entryGroupId}-${webVitalsEvent.startTime}` :
|
|
376
|
+
undefined,
|
|
375
377
|
};
|
|
376
378
|
this.#inpValue = inpEvent;
|
|
377
379
|
break;
|
|
378
380
|
}
|
|
379
381
|
case 'InteractionEntry': {
|
|
382
|
+
if (webVitalsEvent.entryGroupId === undefined || webVitalsEvent.startTime === undefined) {
|
|
383
|
+
break;
|
|
384
|
+
}
|
|
385
|
+
|
|
380
386
|
const groupInteractions =
|
|
381
387
|
Platform.MapUtilities.getWithDefault(this.#interactionsByGroupId, webVitalsEvent.entryGroupId, () => []);
|
|
382
388
|
|
|
@@ -409,7 +415,7 @@ export class LiveMetrics extends Common.ObjectWrapper.ObjectWrapper<EventTypes>
|
|
|
409
415
|
// We can get multiple instances of the first input interaction since web-vitals.js installs
|
|
410
416
|
// an extra listener for events of type `first-input`. This is a simple way to de-dupe those
|
|
411
417
|
// events without adding complexity to the injected code.
|
|
412
|
-
if (!interaction.eventNames.includes(webVitalsEvent.eventName)) {
|
|
418
|
+
if (webVitalsEvent.eventName && !interaction.eventNames.includes(webVitalsEvent.eventName)) {
|
|
413
419
|
interaction.eventNames.push(webVitalsEvent.eventName);
|
|
414
420
|
}
|
|
415
421
|
|
|
@@ -720,7 +726,7 @@ export interface LcpValue extends MetricValue {
|
|
|
720
726
|
|
|
721
727
|
export interface InpValue extends MetricValue {
|
|
722
728
|
subparts: Spec.InpSubparts;
|
|
723
|
-
interactionId
|
|
729
|
+
interactionId?: InteractionId;
|
|
724
730
|
}
|
|
725
731
|
|
|
726
732
|
export interface ClsValue extends MetricValue {
|
|
@@ -50,8 +50,8 @@ export interface InpChangeEvent {
|
|
|
50
50
|
value: Trace.Types.Timing.Milli;
|
|
51
51
|
interactionType: WebVitals.INPAttribution['interactionType'];
|
|
52
52
|
subparts: InpSubparts;
|
|
53
|
-
startTime
|
|
54
|
-
entryGroupId
|
|
53
|
+
startTime?: number;
|
|
54
|
+
entryGroupId?: InteractionEntryGroupId;
|
|
55
55
|
}
|
|
56
56
|
|
|
57
57
|
// These object keys will be user visible
|
|
@@ -96,10 +96,10 @@ export interface PerformanceLongAnimationFrameTimingJSON {
|
|
|
96
96
|
export interface InteractionEntryEvent {
|
|
97
97
|
name: 'InteractionEntry';
|
|
98
98
|
interactionType?: WebVitals.INPAttribution['interactionType'];
|
|
99
|
-
eventName
|
|
100
|
-
entryGroupId
|
|
101
|
-
startTime
|
|
102
|
-
navigationId
|
|
99
|
+
eventName?: string;
|
|
100
|
+
entryGroupId?: InteractionEntryGroupId;
|
|
101
|
+
startTime?: number;
|
|
102
|
+
navigationId?: number;
|
|
103
103
|
nextPaintTime?: number;
|
|
104
104
|
duration: Trace.Types.Timing.Milli;
|
|
105
105
|
subparts: InpSubparts;
|
|
@@ -122,5 +122,57 @@ export interface ResetEvent {
|
|
|
122
122
|
navigationType?: NavigationType;
|
|
123
123
|
}
|
|
124
124
|
|
|
125
|
+
export function limitScripts(loafs: PerformanceLongAnimationFrameTimingJSON[]):
|
|
126
|
+
PerformanceLongAnimationFrameTimingJSON[] {
|
|
127
|
+
return loafs.map(loaf => {
|
|
128
|
+
loaf.scripts = loaf.scripts.slice()
|
|
129
|
+
.sort((a, b) => b.duration - a.duration)
|
|
130
|
+
.slice(0, SCRIPTS_PER_LOAF_LIMIT)
|
|
131
|
+
.sort((a, b) => a.startTime - b.startTime);
|
|
132
|
+
return loaf;
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
export function createInteractionEntryEvent(interaction: WebVitals.INPMetricWithAttribution): InteractionEntryEvent {
|
|
137
|
+
const event: InteractionEntryEvent = {
|
|
138
|
+
name: 'InteractionEntry',
|
|
139
|
+
duration: interaction.value as Trace.Types.Timing.Milli,
|
|
140
|
+
subparts: {
|
|
141
|
+
inputDelay: interaction.attribution.inputDelay as Trace.Types.Timing.Milli,
|
|
142
|
+
processingDuration: interaction.attribution.processingDuration as Trace.Types.Timing.Milli,
|
|
143
|
+
presentationDelay: interaction.attribution.presentationDelay as Trace.Types.Timing.Milli,
|
|
144
|
+
},
|
|
145
|
+
startTime: interaction.entries?.[0]?.startTime,
|
|
146
|
+
navigationId: interaction.navigationId,
|
|
147
|
+
entryGroupId: interaction.entries?.[0]?.interactionId as InteractionEntryGroupId | undefined,
|
|
148
|
+
nextPaintTime: interaction.attribution.nextPaintTime,
|
|
149
|
+
interactionType: interaction.attribution.interactionType,
|
|
150
|
+
eventName: interaction.entries?.[0]?.name,
|
|
151
|
+
// To limit the amount of events, just get the last 5 LoAFs
|
|
152
|
+
longAnimationFrameEntries: limitScripts(
|
|
153
|
+
interaction.attribution.longAnimationFrameEntries?.slice(-LOAF_LIMIT).map(loaf => loaf.toJSON()) ?? []),
|
|
154
|
+
};
|
|
155
|
+
const target = interaction.attribution.interactionTarget;
|
|
156
|
+
if (target) {
|
|
157
|
+
event.nodeIndex = Number(target);
|
|
158
|
+
}
|
|
159
|
+
return event;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
export function createInpChangeEvent(metric: WebVitals.INPMetricWithAttribution): InpChangeEvent {
|
|
163
|
+
return {
|
|
164
|
+
name: 'INP',
|
|
165
|
+
value: metric.value as Trace.Types.Timing.Milli,
|
|
166
|
+
subparts: {
|
|
167
|
+
inputDelay: metric.attribution.inputDelay as Trace.Types.Timing.Milli,
|
|
168
|
+
processingDuration: metric.attribution.processingDuration as Trace.Types.Timing.Milli,
|
|
169
|
+
presentationDelay: metric.attribution.presentationDelay as Trace.Types.Timing.Milli,
|
|
170
|
+
},
|
|
171
|
+
startTime: metric.entries?.[0]?.startTime,
|
|
172
|
+
entryGroupId: metric.entries?.[0]?.interactionId as InteractionEntryGroupId | undefined,
|
|
173
|
+
interactionType: metric.attribution.interactionType,
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
|
|
125
177
|
export type WebVitalsEvent =
|
|
126
178
|
LcpChangeEvent|ClsChangeEvent|InpChangeEvent|InteractionEntryEvent|LayoutShiftEvent|ResetEvent;
|
|
@@ -122,29 +122,6 @@ window.getNodeForIndex = (index: number): Node|undefined => {
|
|
|
122
122
|
return nodeList[index].deref();
|
|
123
123
|
};
|
|
124
124
|
|
|
125
|
-
function limitScripts(loafs: Spec.PerformanceLongAnimationFrameTimingJSON[]):
|
|
126
|
-
Spec.PerformanceLongAnimationFrameTimingJSON[] {
|
|
127
|
-
return loafs.map(loaf => {
|
|
128
|
-
const longestScripts: Spec.PerformanceScriptTimingJSON[] = [];
|
|
129
|
-
for (const script of loaf.scripts) {
|
|
130
|
-
if (longestScripts.length < Spec.SCRIPTS_PER_LOAF_LIMIT) {
|
|
131
|
-
longestScripts.push(script);
|
|
132
|
-
continue;
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
const shorterIndex = longestScripts.findIndex(s => s.duration < script.duration);
|
|
136
|
-
if (shorterIndex === -1) {
|
|
137
|
-
continue;
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
longestScripts[shorterIndex] = script;
|
|
141
|
-
}
|
|
142
|
-
longestScripts.sort((a, b) => a.startTime - b.startTime);
|
|
143
|
-
loaf.scripts = longestScripts;
|
|
144
|
-
return loaf;
|
|
145
|
-
});
|
|
146
|
-
}
|
|
147
|
-
|
|
148
125
|
function isPrerendered(): boolean {
|
|
149
126
|
if (document.prerendering) {
|
|
150
127
|
return true;
|
|
@@ -213,48 +190,11 @@ function initialize(): void {
|
|
|
213
190
|
}, {reportAllChanges: true, reportSoftNavs: window.devToolsReportSoftNavs});
|
|
214
191
|
|
|
215
192
|
function onEachInteraction(interaction: WebVitals.INPMetricWithAttribution): void {
|
|
216
|
-
|
|
217
|
-
// However, it is easier to combine these entries in the DevTools client rather than in
|
|
218
|
-
// this injected code.
|
|
219
|
-
const event: Spec.InteractionEntryEvent = {
|
|
220
|
-
name: 'InteractionEntry',
|
|
221
|
-
duration: interaction.value as Trace.Types.Timing.Milli,
|
|
222
|
-
subparts: {
|
|
223
|
-
inputDelay: interaction.attribution.inputDelay as Trace.Types.Timing.Milli,
|
|
224
|
-
processingDuration: interaction.attribution.processingDuration as Trace.Types.Timing.Milli,
|
|
225
|
-
presentationDelay: interaction.attribution.presentationDelay as Trace.Types.Timing.Milli,
|
|
226
|
-
},
|
|
227
|
-
startTime: interaction.entries[0].startTime,
|
|
228
|
-
navigationId: interaction.navigationId,
|
|
229
|
-
entryGroupId: interaction.entries[0].interactionId as Spec.InteractionEntryGroupId,
|
|
230
|
-
nextPaintTime: interaction.attribution.nextPaintTime,
|
|
231
|
-
interactionType: interaction.attribution.interactionType,
|
|
232
|
-
eventName: interaction.entries[0].name,
|
|
233
|
-
// To limit the amount of events, just get the last 5 LoAFs
|
|
234
|
-
longAnimationFrameEntries: limitScripts(
|
|
235
|
-
interaction.attribution.longAnimationFrameEntries.slice(-Spec.LOAF_LIMIT).map(loaf => loaf.toJSON())),
|
|
236
|
-
};
|
|
237
|
-
const target = interaction.attribution.interactionTarget;
|
|
238
|
-
if (target) {
|
|
239
|
-
event.nodeIndex = Number(target);
|
|
240
|
-
}
|
|
241
|
-
sendEventToDevTools(event);
|
|
193
|
+
sendEventToDevTools(Spec.createInteractionEntryEvent(interaction));
|
|
242
194
|
}
|
|
243
195
|
|
|
244
196
|
onINP(metric => {
|
|
245
|
-
|
|
246
|
-
name: 'INP',
|
|
247
|
-
value: metric.value as Trace.Types.Timing.Milli,
|
|
248
|
-
subparts: {
|
|
249
|
-
inputDelay: metric.attribution.inputDelay as Trace.Types.Timing.Milli,
|
|
250
|
-
processingDuration: metric.attribution.processingDuration as Trace.Types.Timing.Milli,
|
|
251
|
-
presentationDelay: metric.attribution.presentationDelay as Trace.Types.Timing.Milli,
|
|
252
|
-
},
|
|
253
|
-
startTime: metric.entries[0].startTime,
|
|
254
|
-
entryGroupId: metric.entries[0].interactionId as Spec.InteractionEntryGroupId,
|
|
255
|
-
interactionType: metric.attribution.interactionType,
|
|
256
|
-
};
|
|
257
|
-
sendEventToDevTools(event);
|
|
197
|
+
sendEventToDevTools(Spec.createInpChangeEvent(metric));
|
|
258
198
|
}, {
|
|
259
199
|
reportAllChanges: true,
|
|
260
200
|
durationThreshold: 0,
|
|
@@ -25,7 +25,7 @@ export const enum RequestTimeRangeNames {
|
|
|
25
25
|
WAITING = 'waiting',
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
-
export const ServiceWorkerRangeNames = new Set<RequestTimeRangeNames>([
|
|
28
|
+
export const ServiceWorkerRangeNames: Set<RequestTimeRangeNames> = new Set<RequestTimeRangeNames>([
|
|
29
29
|
RequestTimeRangeNames.SERVICE_WORKER,
|
|
30
30
|
RequestTimeRangeNames.SERVICE_WORKER_PREPARATION,
|
|
31
31
|
RequestTimeRangeNames.SERVICE_WORKER_RESPOND_WITH,
|
|
@@ -33,7 +33,7 @@ export const ServiceWorkerRangeNames = new Set<RequestTimeRangeNames>([
|
|
|
33
33
|
RequestTimeRangeNames.SERVICE_WORKER_CACHE_LOOKUP,
|
|
34
34
|
]);
|
|
35
35
|
|
|
36
|
-
export const ConnectionSetupRangeNames = new Set<RequestTimeRangeNames>([
|
|
36
|
+
export const ConnectionSetupRangeNames: Set<RequestTimeRangeNames> = new Set<RequestTimeRangeNames>([
|
|
37
37
|
RequestTimeRangeNames.QUEUEING,
|
|
38
38
|
RequestTimeRangeNames.BLOCKING,
|
|
39
39
|
RequestTimeRangeNames.CONNECTING,
|
|
@@ -6,6 +6,7 @@ import * as Common from '../../core/common/common.js';
|
|
|
6
6
|
import * as Host from '../../core/host/host.js';
|
|
7
7
|
import type * as Platform from '../../core/platform/platform.js';
|
|
8
8
|
import * as Root from '../../core/root/root.js';
|
|
9
|
+
import type * as SDK from '../../core/sdk/sdk.js';
|
|
9
10
|
import type * as TextUtils from '../../core/text_utils/text_utils.js';
|
|
10
11
|
import * as Workspace from '../workspace/workspace.js';
|
|
11
12
|
|
|
@@ -58,6 +59,10 @@ export class FileSystem implements Workspace.Workspace.Project {
|
|
|
58
59
|
return false;
|
|
59
60
|
}
|
|
60
61
|
|
|
62
|
+
securityOrigin(): SDK.SecurityOrigin.SecurityOrigin|null {
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
|
|
61
66
|
displayName(): string {
|
|
62
67
|
const {root} = this.automaticFileSystem;
|
|
63
68
|
let slash = root.lastIndexOf('/');
|
|
@@ -595,7 +595,7 @@ const SCRIPT_EXTENSIONS = new Set<string>([
|
|
|
595
595
|
|
|
596
596
|
const IMAGE_EXTENSIONS = new Set<string>(['jpeg', 'jpg', 'svg', 'gif', 'webp', 'png', 'ico', 'tiff', 'tif', 'bmp']);
|
|
597
597
|
|
|
598
|
-
export const BinaryExtensions = new Set<string>([
|
|
598
|
+
export const BinaryExtensions: Set<string> = new Set<string>([
|
|
599
599
|
// Executable extensions, roughly taken from https://en.wikipedia.org/wiki/Comparison_of_executable_file_formats
|
|
600
600
|
'cmd',
|
|
601
601
|
'com',
|
|
@@ -231,6 +231,9 @@ export class NetworkPersistenceManager extends Common.ObjectWrapper.ObjectWrappe
|
|
|
231
231
|
if ((!this.#active && !ignoreInactive) || !this.#project) {
|
|
232
232
|
return Platform.DevToolsPath.EmptyRawPathString;
|
|
233
233
|
}
|
|
234
|
+
if (NetworkPersistenceManager.isForbiddenNetworkUrl(url)) {
|
|
235
|
+
return Platform.DevToolsPath.EmptyRawPathString;
|
|
236
|
+
}
|
|
234
237
|
let initialEncodedPath = Common.ParsedURL.ParsedURL.urlWithoutHash(url.replace(/^https?:\/\//, '')) as
|
|
235
238
|
Platform.DevToolsPath.EncodedPathString;
|
|
236
239
|
if (initialEncodedPath.endsWith('/') && initialEncodedPath.indexOf('?') === -1) {
|
|
@@ -264,6 +267,9 @@ export class NetworkPersistenceManager extends Common.ObjectWrapper.ObjectWrappe
|
|
|
264
267
|
// encodeURI() escapes all the unsafe filename characters except '/' and '*'
|
|
265
268
|
let encodedName =
|
|
266
269
|
encodeURI(pathPart).replace(/[\/\*]/g, match => '%' + match[0].charCodeAt(0).toString(16).toUpperCase());
|
|
270
|
+
if (encodedName === '..') {
|
|
271
|
+
encodedName = '%2E%2E';
|
|
272
|
+
}
|
|
267
273
|
if (Host.Platform.isWin()) {
|
|
268
274
|
// Windows does not allow ':' and '?' in filenames
|
|
269
275
|
encodedName = encodedName.replace(/[:\?]/g, match => '%' + match[0].charCodeAt(0).toString(16).toUpperCase());
|
|
@@ -302,12 +308,18 @@ export class NetworkPersistenceManager extends Common.ObjectWrapper.ObjectWrappe
|
|
|
302
308
|
if (!this.#project) {
|
|
303
309
|
return Platform.DevToolsPath.EmptyUrlString;
|
|
304
310
|
}
|
|
305
|
-
|
|
306
|
-
|
|
311
|
+
const encodedPath = this.encodedPathFromUrl(url, ignoreInactive);
|
|
312
|
+
if (!encodedPath) {
|
|
313
|
+
return Platform.DevToolsPath.EmptyUrlString;
|
|
314
|
+
}
|
|
315
|
+
return Common.ParsedURL.ParsedURL.concatenate((this.#project as FileSystem).fileSystemPath(), '/', encodedPath);
|
|
307
316
|
}
|
|
308
317
|
|
|
309
318
|
getHeadersUISourceCodeFromUrl(url: Platform.DevToolsPath.UrlString): Workspace.UISourceCode.UISourceCode|null {
|
|
310
319
|
const fileUrlFromRequest = this.fileUrlFromNetworkUrl(url, /* ignoreNoActive */ true);
|
|
320
|
+
if (!fileUrlFromRequest) {
|
|
321
|
+
return null;
|
|
322
|
+
}
|
|
311
323
|
const folderUrlFromRequest =
|
|
312
324
|
Common.ParsedURL.ParsedURL.substring(fileUrlFromRequest, 0, fileUrlFromRequest.lastIndexOf('/'));
|
|
313
325
|
const headersFileUrl = Common.ParsedURL.ParsedURL.concatenate(folderUrlFromRequest, '/', HEADERS_FILENAME);
|
|
@@ -319,6 +331,9 @@ export class NetworkPersistenceManager extends Common.ObjectWrapper.ObjectWrappe
|
|
|
319
331
|
let uiSourceCode = this.getHeadersUISourceCodeFromUrl(url);
|
|
320
332
|
if (!uiSourceCode && this.#project) {
|
|
321
333
|
const encodedFilePath = this.encodedPathFromUrl(url, /* ignoreNoActive */ true);
|
|
334
|
+
if (!encodedFilePath) {
|
|
335
|
+
return null;
|
|
336
|
+
}
|
|
322
337
|
const encodedPath = Common.ParsedURL.ParsedURL.substring(encodedFilePath, 0, encodedFilePath.lastIndexOf('/'));
|
|
323
338
|
uiSourceCode = await this.#project.createFile(encodedPath, HEADERS_FILENAME, '');
|
|
324
339
|
Host.userMetrics.actionTaken(Host.UserMetrics.Action.HeaderOverrideFileCreated);
|
|
@@ -435,6 +450,9 @@ export class NetworkPersistenceManager extends Common.ObjectWrapper.ObjectWrappe
|
|
|
435
450
|
}
|
|
436
451
|
|
|
437
452
|
async setupAndStartLocalOverrides(uiSourceCode: Workspace.UISourceCode.UISourceCode): Promise<boolean> {
|
|
453
|
+
if (!this.isUISourceCodeOverridable(uiSourceCode)) {
|
|
454
|
+
return false;
|
|
455
|
+
}
|
|
438
456
|
// No overrides folder, set it up
|
|
439
457
|
if (this.#shouldPromptSaveForOverridesDialog(uiSourceCode)) {
|
|
440
458
|
Host.userMetrics.actionTaken(Host.UserMetrics.Action.OverrideContentContextMenuSetup);
|
|
@@ -472,6 +490,10 @@ export class NetworkPersistenceManager extends Common.ObjectWrapper.ObjectWrappe
|
|
|
472
490
|
}
|
|
473
491
|
this.#savingForOverrides.add(uiSourceCode);
|
|
474
492
|
let encodedPath = this.encodedPathFromUrl(uiSourceCode.url());
|
|
493
|
+
if (!encodedPath) {
|
|
494
|
+
this.#savingForOverrides.delete(uiSourceCode);
|
|
495
|
+
return;
|
|
496
|
+
}
|
|
475
497
|
const contentDataOrError = await uiSourceCode.requestContentData();
|
|
476
498
|
const {content, isEncoded} = TextUtils.ContentData.ContentData.asDeferredContent(contentDataOrError);
|
|
477
499
|
const lastIndexOfSlash = encodedPath.lastIndexOf('/');
|
|
@@ -516,16 +538,22 @@ export class NetworkPersistenceManager extends Common.ObjectWrapper.ObjectWrappe
|
|
|
516
538
|
private isForbiddenFileUrl(uiSourceCode: Workspace.UISourceCode.UISourceCode): boolean {
|
|
517
539
|
const relativePathParts = FileSystemWorkspaceBinding.relativePath(uiSourceCode);
|
|
518
540
|
// Decode twice to handle paths generated on Windows OS.
|
|
519
|
-
const host = this.decodeLocalPathToUrlPath(this.decodeLocalPathToUrlPath(relativePathParts[0] || ''));
|
|
520
|
-
return
|
|
541
|
+
const host = this.decodeLocalPathToUrlPath(this.decodeLocalPathToUrlPath(relativePathParts[0] || '')).toLowerCase();
|
|
542
|
+
return ['chrome:', 'data:', 'blob:', 'javascript:', 'about:', 'mailto:', 'vbscript:'].includes(host) ||
|
|
543
|
+
forbiddenUrls.includes(host);
|
|
521
544
|
}
|
|
522
545
|
|
|
523
546
|
static isForbiddenNetworkUrl(urlString: Platform.DevToolsPath.UrlString): boolean {
|
|
547
|
+
const trimmedUrl = urlString.trim().toLowerCase();
|
|
548
|
+
if (trimmedUrl.startsWith('data:') || trimmedUrl.startsWith('blob:') || trimmedUrl.startsWith('javascript:') ||
|
|
549
|
+
trimmedUrl.startsWith('about:') || trimmedUrl.startsWith('mailto:') || trimmedUrl.startsWith('vbscript:')) {
|
|
550
|
+
return true;
|
|
551
|
+
}
|
|
524
552
|
const url = Common.ParsedURL.ParsedURL.fromString(urlString);
|
|
525
553
|
if (!url) {
|
|
526
554
|
return false;
|
|
527
555
|
}
|
|
528
|
-
return
|
|
556
|
+
return !['http', 'https', 'file'].includes(url.scheme) || forbiddenUrls.includes(url.host);
|
|
529
557
|
}
|
|
530
558
|
|
|
531
559
|
private async onUISourceCodeAdded(uiSourceCode: Workspace.UISourceCode.UISourceCode): Promise<void> {
|
|
@@ -534,7 +562,8 @@ export class NetworkPersistenceManager extends Common.ObjectWrapper.ObjectWrappe
|
|
|
534
562
|
}
|
|
535
563
|
|
|
536
564
|
private canHandleNetworkUISourceCode(uiSourceCode: Workspace.UISourceCode.UISourceCode): boolean {
|
|
537
|
-
return this.#active && !Common.ParsedURL.schemeIs(uiSourceCode.url(), 'snippet:')
|
|
565
|
+
return this.#active && !Common.ParsedURL.schemeIs(uiSourceCode.url(), 'snippet:') &&
|
|
566
|
+
!NetworkPersistenceManager.isForbiddenNetworkUrl(uiSourceCode.url());
|
|
538
567
|
}
|
|
539
568
|
|
|
540
569
|
private async networkUISourceCodeAdded(uiSourceCode: Workspace.UISourceCode.UISourceCode): Promise<void> {
|
|
@@ -35,10 +35,10 @@ export class StackTraceImpl<SyncFragmentT extends FragmentImpl|DebuggableFragmen
|
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
export class FragmentImpl implements StackTrace.StackTrace.Fragment {
|
|
38
|
-
static readonly EMPTY_FRAGMENT = new FragmentImpl();
|
|
38
|
+
static readonly EMPTY_FRAGMENT: FragmentImpl = new FragmentImpl();
|
|
39
39
|
|
|
40
40
|
readonly node?: FrameNode;
|
|
41
|
-
readonly stackTraces = new Set<AnyStackTraceImpl>();
|
|
41
|
+
readonly stackTraces: Set<AnyStackTraceImpl> = new Set<AnyStackTraceImpl>();
|
|
42
42
|
|
|
43
43
|
/**
|
|
44
44
|
* Fragments are deduplicated based on the node.
|
|
@@ -269,9 +269,8 @@ function linkInitiators(lanternRequests: NetworkRequest[]): void {
|
|
|
269
269
|
}
|
|
270
270
|
}
|
|
271
271
|
|
|
272
|
-
function createNetworkRequests(
|
|
273
|
-
|
|
274
|
-
endTime = Number.POSITIVE_INFINITY): NetworkRequest[] {
|
|
272
|
+
function createNetworkRequests(trace: Lantern.Types.Trace, data: Handlers.Types.HandlerData, startTime = 0,
|
|
273
|
+
endTime: number = Number.POSITIVE_INFINITY): NetworkRequest[] {
|
|
275
274
|
const workerThreads = findWorkerThreads(trace);
|
|
276
275
|
|
|
277
276
|
const lanternRequestsNoRedirects: NetworkRequest[] = [];
|
|
@@ -7,8 +7,9 @@ import type * as Handlers from '../handlers/handlers.js';
|
|
|
7
7
|
import * as Helpers from '../helpers/helpers.js';
|
|
8
8
|
import * as Types from '../types/types.js';
|
|
9
9
|
|
|
10
|
-
export const stackTraceForEventInTrace
|
|
11
|
-
|
|
10
|
+
export const stackTraceForEventInTrace:
|
|
11
|
+
Map<Handlers.Types.HandlerData, Map<Types.Events.Event, Protocol.Runtime.StackTrace>> =
|
|
12
|
+
new Map<Handlers.Types.HandlerData, Map<Types.Events.Event, Protocol.Runtime.StackTrace>>();
|
|
12
13
|
|
|
13
14
|
export function clearCacheForTrace(data: Handlers.Types.HandlerData): void {
|
|
14
15
|
stackTraceForEventInTrace.delete(data);
|
|
@@ -52,7 +52,7 @@ function collectMainThreadActivity(data: Handlers.Types.HandlerData): Types.Even
|
|
|
52
52
|
|
|
53
53
|
export function summarizeByThirdParty(
|
|
54
54
|
data: Handlers.Types.HandlerData, traceBounds: Types.Timing.TraceWindowMicro): EntitySummary[] {
|
|
55
|
-
const mainThreadEvents = collectMainThreadActivity(data)
|
|
55
|
+
const mainThreadEvents = collectMainThreadActivity(data);
|
|
56
56
|
const groupingFunction = (event: Types.Events.Event): string => {
|
|
57
57
|
const entity = data.Renderer.entityMappings.entityByEvent.get(event);
|
|
58
58
|
return entity?.name ?? '';
|
|
@@ -68,7 +68,7 @@ export function summarizeByThirdParty(
|
|
|
68
68
|
*/
|
|
69
69
|
export function summarizeByURL(
|
|
70
70
|
data: Handlers.Types.HandlerData, traceBounds: Types.Timing.TraceWindowMicro): URLSummary[] {
|
|
71
|
-
const mainThreadEvents = collectMainThreadActivity(data)
|
|
71
|
+
const mainThreadEvents = collectMainThreadActivity(data);
|
|
72
72
|
const groupingFunction = (event: Types.Events.Event): string => {
|
|
73
73
|
return Handlers.Helpers.getNonResolvedURL(event, data) ?? '';
|
|
74
74
|
};
|
|
@@ -140,20 +140,20 @@ function summarizeBottomUpByURL(root: TraceTree.BottomUpRootNode, data: Handlers
|
|
|
140
140
|
return summaries;
|
|
141
141
|
}
|
|
142
142
|
|
|
143
|
+
// Use the same filtering as front_end/panels/timeline/TimelineTreeView.ts.
|
|
144
|
+
const exclusiveNameFilter = new TraceFilter.ExclusiveNameFilter([]);
|
|
145
|
+
const visibleEventsFilter = new TraceFilter.VisibleEventsFilter(
|
|
146
|
+
[...Helpers.Trace.VISIBLE_TRACE_EVENT_TYPES.values(), Types.Events.Name.SYNTHETIC_NETWORK_REQUEST]);
|
|
147
|
+
|
|
143
148
|
function getBottomUpTree(
|
|
144
149
|
mainThreadEvents: Types.Events.Event[], tracebounds: Types.Timing.TraceWindowMicro,
|
|
145
150
|
groupingFunction: ((arg0: Types.Events.Event) => string)|null): TraceTree.BottomUpRootNode {
|
|
146
|
-
// Use the same filtering as front_end/panels/timeline/TimelineTreeView.ts.
|
|
147
|
-
const visibleEvents = Helpers.Trace.VISIBLE_TRACE_EVENT_TYPES.values().toArray();
|
|
148
|
-
const filter =
|
|
149
|
-
new TraceFilter.VisibleEventsFilter(visibleEvents.concat([Types.Events.Name.SYNTHETIC_NETWORK_REQUEST]));
|
|
150
|
-
|
|
151
151
|
// The bottom up root node handles all the "in Tracebounds" checks we need for the insight.
|
|
152
152
|
const startTime = Helpers.Timing.microToMilli(tracebounds.min);
|
|
153
153
|
const endTime = Helpers.Timing.microToMilli(tracebounds.max);
|
|
154
154
|
return new TraceTree.BottomUpRootNode(mainThreadEvents, {
|
|
155
|
-
textFilter:
|
|
156
|
-
filters: [
|
|
155
|
+
textFilter: exclusiveNameFilter,
|
|
156
|
+
filters: [visibleEventsFilter],
|
|
157
157
|
startTime,
|
|
158
158
|
endTime,
|
|
159
159
|
eventGroupIdCallback: groupingFunction,
|
|
@@ -8,13 +8,16 @@ import * as Types from '../types/types.js';
|
|
|
8
8
|
import {data as flowsHandlerData} from './FlowsHandler.js';
|
|
9
9
|
import {data as rendererHandlerData} from './RendererHandler.js';
|
|
10
10
|
|
|
11
|
-
let schedulerToRunEntryPoints
|
|
11
|
+
let schedulerToRunEntryPoints: Map<Types.Events.Event, Types.Events.Event[]> =
|
|
12
|
+
new Map<Types.Events.Event, Types.Events.Event[]>();
|
|
12
13
|
|
|
13
|
-
let taskScheduleForTaskRunEvent
|
|
14
|
-
|
|
14
|
+
let taskScheduleForTaskRunEvent: Map<Types.Events.DebuggerAsyncTaskRun, Types.Events.DebuggerAsyncTaskScheduled> =
|
|
15
|
+
new Map<Types.Events.DebuggerAsyncTaskRun, Types.Events.DebuggerAsyncTaskScheduled>();
|
|
16
|
+
let asyncCallToScheduler: Map<Types.Events.SyntheticProfileCall, {taskName: string, scheduler: Types.Events.Event}> =
|
|
15
17
|
new Map<Types.Events.SyntheticProfileCall, {taskName: string, scheduler: Types.Events.Event}>();
|
|
16
18
|
|
|
17
|
-
let runEntryPointToScheduler
|
|
19
|
+
let runEntryPointToScheduler: Map<Types.Events.Event, {taskName: string, scheduler: Types.Events.Event}> =
|
|
20
|
+
new Map<Types.Events.Event, {taskName: string, scheduler: Types.Events.Event}>();
|
|
18
21
|
|
|
19
22
|
export function reset(): void {
|
|
20
23
|
schedulerToRunEntryPoints = new Map();
|
|
@@ -390,10 +390,10 @@ class TimelineFrame implements Types.Events.LegacyTimelineFrame {
|
|
|
390
390
|
// Types.Events.Event.
|
|
391
391
|
cat = 'devtools.legacy_frame';
|
|
392
392
|
name = 'frame';
|
|
393
|
-
ph = Types.Events.Phase.COMPLETE;
|
|
393
|
+
ph: Types.Events.Phase = Types.Events.Phase.COMPLETE;
|
|
394
394
|
ts: Types.Timing.Micro;
|
|
395
|
-
pid = Types.Events.ProcessID(-1);
|
|
396
|
-
tid = Types.Events.ThreadID(-1);
|
|
395
|
+
pid: Types.Events.ProcessID = Types.Events.ProcessID(-1);
|
|
396
|
+
tid: Types.Events.ThreadID = Types.Events.ThreadID(-1);
|
|
397
397
|
|
|
398
398
|
index = -1;
|
|
399
399
|
startTime: Types.Timing.Micro;
|
|
@@ -67,13 +67,13 @@ interface RemoteFont {
|
|
|
67
67
|
* This represents the maximum #time we will allow a cluster to go before we
|
|
68
68
|
* reset it.
|
|
69
69
|
**/
|
|
70
|
-
export const MAX_CLUSTER_DURATION = Helpers.Timing.milliToMicro(Types.Timing.Milli(5000));
|
|
70
|
+
export const MAX_CLUSTER_DURATION: Types.Timing.Micro = Helpers.Timing.milliToMicro(Types.Timing.Milli(5000));
|
|
71
71
|
|
|
72
72
|
/**
|
|
73
73
|
* This represents the maximum #time we will allow between layout shift events
|
|
74
74
|
* before considering it to be the start of a new cluster.
|
|
75
75
|
**/
|
|
76
|
-
export const MAX_SHIFT_TIME_DELTA = Helpers.Timing.milliToMicro(Types.Timing.Milli(1000));
|
|
76
|
+
export const MAX_SHIFT_TIME_DELTA: Types.Timing.Micro = Helpers.Timing.milliToMicro(Types.Timing.Milli(1000));
|
|
77
77
|
|
|
78
78
|
// Layout shifts are reported globally to the developer, irrespective of which
|
|
79
79
|
// frame they originated in. However, each process does have its own individual
|
|
@@ -8,8 +8,10 @@ import * as CPUProfile from '../../cpu_profile/cpu_profile.js';
|
|
|
8
8
|
import * as Helpers from '../helpers/helpers.js';
|
|
9
9
|
import * as Types from '../types/types.js';
|
|
10
10
|
|
|
11
|
-
let profilesInProcess
|
|
12
|
-
|
|
11
|
+
let profilesInProcess: Map<Types.Events.ProcessID, Map<Types.Events.ThreadID, ProfileData>> =
|
|
12
|
+
new Map<Types.Events.ProcessID, Map<Types.Events.ThreadID, ProfileData>>();
|
|
13
|
+
let entryToNode: Map<Types.Events.Event, Helpers.TreeHelpers.TraceEntryNode> =
|
|
14
|
+
new Map<Types.Events.Event, Helpers.TreeHelpers.TraceEntryNode>();
|
|
13
15
|
|
|
14
16
|
// The profile head, containing its metadata like its start
|
|
15
17
|
// time, comes in a "Profile" event. The sample data comes in
|
|
@@ -16,7 +16,7 @@ import type {HandlerName} from './types.js';
|
|
|
16
16
|
let beginCommitCompositorFrameEvents: Types.Events.BeginCommitCompositorFrame[] = [];
|
|
17
17
|
let parseMetaViewportEvents: Types.Events.ParseMetaViewport[] = [];
|
|
18
18
|
|
|
19
|
-
export const LONG_INTERACTION_THRESHOLD = Helpers.Timing.milliToMicro(Types.Timing.Milli(200));
|
|
19
|
+
export const LONG_INTERACTION_THRESHOLD: Types.Timing.Micro = Helpers.Timing.milliToMicro(Types.Timing.Milli(200));
|
|
20
20
|
|
|
21
21
|
const INP_GOOD_TIMING = LONG_INTERACTION_THRESHOLD;
|
|
22
22
|
const INP_MEDIUM_TIMING = Helpers.Timing.milliToMicro(Types.Timing.Milli(500));
|
|
@@ -42,9 +42,9 @@ let taskReflowEvents: Types.Events.Event[] = [];
|
|
|
42
42
|
*/
|
|
43
43
|
let longTaskEvents: Types.Events.Event[] = [];
|
|
44
44
|
|
|
45
|
-
export const FORCED_REFLOW_THRESHOLD = Helpers.Timing.milliToMicro(Types.Timing.Milli(30));
|
|
45
|
+
export const FORCED_REFLOW_THRESHOLD: Types.Timing.Micro = Helpers.Timing.milliToMicro(Types.Timing.Milli(30));
|
|
46
46
|
|
|
47
|
-
export const LONG_MAIN_THREAD_TASK_THRESHOLD = Helpers.Timing.milliToMicro(Types.Timing.Milli(50));
|
|
47
|
+
export const LONG_MAIN_THREAD_TASK_THRESHOLD: Types.Timing.Micro = Helpers.Timing.milliToMicro(Types.Timing.Milli(50));
|
|
48
48
|
|
|
49
49
|
export function reset(): void {
|
|
50
50
|
warningsPerEvent = new Map();
|
|
@@ -48,10 +48,10 @@ export interface CacheControl {
|
|
|
48
48
|
'private'?: boolean;
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
-
export const CACHEABLE_STATUS_CODES = new Set([200, 203, 206]);
|
|
51
|
+
export const CACHEABLE_STATUS_CODES: Set<number> = new Set([200, 203, 206]);
|
|
52
52
|
|
|
53
53
|
/** @type {Set<LH.Crdp.Network.ResourceType>} */
|
|
54
|
-
export const STATIC_RESOURCE_TYPES = new Set([
|
|
54
|
+
export const STATIC_RESOURCE_TYPES: Set<Protocol.Network.ResourceType> = new Set([
|
|
55
55
|
Protocol.Network.ResourceType.Font,
|
|
56
56
|
Protocol.Network.ResourceType.Image,
|
|
57
57
|
Protocol.Network.ResourceType.Media,
|
|
@@ -59,7 +59,7 @@ export const STATIC_RESOURCE_TYPES = new Set([
|
|
|
59
59
|
Protocol.Network.ResourceType.Stylesheet,
|
|
60
60
|
]);
|
|
61
61
|
|
|
62
|
-
export const NON_NETWORK_SCHEMES = [
|
|
62
|
+
export const NON_NETWORK_SCHEMES: string[] = [
|
|
63
63
|
'blob', // @see https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL
|
|
64
64
|
'data', // @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs
|
|
65
65
|
'intent', // @see https://developer.chrome.com/docs/multidevice/android/intents/
|
|
@@ -838,7 +838,7 @@ export function extractSampleTraceId(event: Types.Events.Event): number|null {
|
|
|
838
838
|
* This exactly matches Trace.Styles.visibleTypes. See the runtime verification in maybeInitStylesMap.
|
|
839
839
|
* TODO(crbug.com/410884528)
|
|
840
840
|
**/
|
|
841
|
-
export const VISIBLE_TRACE_EVENT_TYPES = new Set<Types.Events.Name>([
|
|
841
|
+
export const VISIBLE_TRACE_EVENT_TYPES: Set<Types.Events.Name> = new Set<Types.Events.Name>([
|
|
842
842
|
Types.Events.Name.ABORT_POST_TASK_CALLBACK,
|
|
843
843
|
Types.Events.Name.ANIMATION,
|
|
844
844
|
Types.Events.Name.ASYNC_TASK,
|