chrome-devtools-frontend 1.0.1675430 → 1.0.1678416
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/AUTHORS +1 -0
- package/WATCHLISTS +0 -4
- package/front_end/core/common/EventTarget.ts +0 -5
- package/front_end/core/common/Settings.ts +0 -66
- package/front_end/core/host/InspectorFrontendHostAPI.ts +1 -0
- package/front_end/core/host/UserMetrics.ts +5 -0
- package/front_end/core/root/Runtime.ts +5 -5
- package/front_end/core/sdk/CSSMetadata.ts +5 -9
- package/front_end/core/sdk/CSSPropertyParserMatchers.ts +16 -34
- package/front_end/core/sdk/DebuggerModel.ts +92 -57
- package/front_end/core/sdk/EmulationModel.ts +2 -1
- package/front_end/core/sdk/NetworkManager.ts +16 -2
- package/front_end/core/sdk/OverlayModel.ts +19 -9
- package/front_end/core/sdk/OverlayPersistentHighlighter.ts +10 -4
- package/front_end/core/sdk/ResourceTreeModel.ts +20 -1
- package/front_end/core/sdk/SDKSettings.ts +117 -0
- package/front_end/core/sdk/Script.ts +9 -53
- package/front_end/core/sdk/sdk-meta.ts +0 -431
- package/front_end/devtools_compatibility.js +1 -0
- package/front_end/entrypoints/heap_snapshot_worker/HeapSnapshot.ts +213 -23
- package/front_end/entrypoints/inspector_main/InspectorMain.ts +6 -5
- package/front_end/entrypoints/inspector_main/RenderingOptions.ts +14 -15
- package/front_end/entrypoints/inspector_main/inspector_main-meta.ts +157 -0
- package/front_end/entrypoints/main/MainImpl.ts +32 -0
- package/front_end/entrypoints/shell/shell.ts +0 -1
- package/front_end/foundation/Universe.ts +8 -0
- package/front_end/generated/InspectorBackendCommands.ts +8 -8
- package/front_end/generated/SupportedCSSProperties.ts +53 -4
- package/front_end/generated/protocol-mapping.d.ts +27 -21
- package/front_end/generated/protocol-proxy-api.d.ts +22 -17
- package/front_end/generated/protocol.ts +43 -18
- package/front_end/models/ai_assistance/AiAgent2.ts +47 -2
- package/front_end/models/ai_assistance/AiConversation.ts +22 -5
- package/front_end/models/ai_assistance/README.md +52 -26
- package/front_end/models/ai_assistance/agents/AiAgent.ts +54 -8
- package/front_end/models/ai_assistance/agents/ContextSelectionAgent.ts +1 -1
- package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +7 -194
- package/front_end/models/ai_assistance/agents/StorageAgent.ts +21 -87
- package/front_end/models/ai_assistance/agents/StylingAgent.snapshot.txt +2 -1
- package/front_end/models/ai_assistance/ai_assistance.ts +24 -0
- package/front_end/models/ai_assistance/contexts/PerformanceTraceContext.ts +124 -0
- package/front_end/models/ai_assistance/contexts/StorageContext.ts +100 -0
- package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.ts +69 -1
- package/front_end/models/ai_assistance/skills/README.md +63 -1
- package/front_end/models/ai_assistance/skills/Skill.ts +1 -1
- package/front_end/models/ai_assistance/skills/SkillRegistry.ts +4 -0
- package/front_end/models/ai_assistance/skills/accessibility.md +7 -0
- package/front_end/models/ai_assistance/skills/performance.md +15 -1
- package/front_end/models/ai_assistance/skills/sources.md +16 -0
- package/front_end/models/ai_assistance/skills/storage.md +31 -0
- package/front_end/models/ai_assistance/tools/GetDetailedCallTree.ts +107 -0
- package/front_end/models/ai_assistance/tools/GetFunctionCode.ts +122 -0
- package/front_end/models/ai_assistance/tools/GetResourceContent.ts +127 -0
- package/front_end/models/ai_assistance/tools/GetSourceContent.ts +101 -0
- package/front_end/models/ai_assistance/tools/GetTraceEventByKey.ts +83 -0
- package/front_end/models/ai_assistance/tools/GetTraceMainThreadSummary.ts +106 -0
- package/front_end/models/ai_assistance/tools/GetTraceNetworkSummary.ts +104 -0
- package/front_end/models/ai_assistance/tools/ListPageOrigins.ts +95 -0
- package/front_end/models/ai_assistance/tools/ListSources.ts +116 -0
- package/front_end/models/ai_assistance/tools/RunLighthouse.ts +89 -0
- package/front_end/models/ai_assistance/tools/SelectTraceEventByKey.ts +90 -0
- package/front_end/models/ai_assistance/tools/Tool.ts +26 -1
- package/front_end/models/ai_assistance/tools/ToolRegistry.ts +22 -0
- package/front_end/models/bindings/CSSWorkspaceBinding.ts +4 -0
- package/front_end/models/bindings/CompilerScriptMapping.ts +4 -0
- package/front_end/models/bindings/DebuggerWorkspaceBinding.ts +8 -0
- package/front_end/models/bindings/ResourceScriptMapping.ts +3 -201
- package/front_end/models/bindings/SASSSourceMapping.ts +6 -0
- package/front_end/models/breakpoints/BreakpointManager.ts +2 -49
- package/front_end/models/comment_manager/CommentManager.ts +141 -0
- package/front_end/models/comment_manager/comment_manager.ts +9 -0
- package/front_end/models/heap_snapshot/HeapSnapshotModel.ts +27 -0
- package/front_end/models/heap_snapshot/HeapSnapshotProxy.ts +10 -2
- package/front_end/models/issues_manager/descriptions/connectionAllowlistEmbeddingRequirementNotSatisfied.md +26 -0
- package/front_end/models/issues_manager/descriptions/connectionAllowlistIFrameAttributeLoosensEmbeddingRequirement.md +19 -0
- package/front_end/models/issues_manager/descriptions/connectionAllowlistInvalidAllowConnectionAllowlistFrom.md +21 -0
- package/front_end/models/javascript_metadata/NativeFunctions.js +6 -6
- package/front_end/models/persistence/IsolatedFileSystem.ts +7 -8
- package/front_end/models/persistence/IsolatedFileSystemManager.ts +2 -2
- package/front_end/models/persistence/PlatformFileSystem.ts +1 -1
- package/front_end/models/persistence/persistence-meta.ts +9 -9
- package/front_end/models/trace/types/TraceEvents.ts +36 -0
- package/front_end/panels/accessibility/ARIAAttributesView.ts +3 -3
- package/front_end/panels/accessibility/AccessibilityAnnouncementRecordingView.ts +25 -0
- package/front_end/panels/accessibility/AccessibilityNodeView.ts +36 -36
- package/front_end/panels/accessibility/AccessibilitySidebarView.ts +9 -0
- package/front_end/panels/accessibility/AccessibilityStrings.ts +168 -168
- package/front_end/panels/accessibility/SourceOrderView.ts +7 -7
- package/front_end/panels/accessibility/accessibility-meta.ts +2 -2
- package/front_end/panels/accessibility/accessibility.ts +2 -0
- package/front_end/panels/ai_assistance/AiAssistancePanel.ts +5 -5
- package/front_end/panels/ai_assistance/components/AIv2MarkdownRenderer.ts +2 -3
- package/front_end/panels/ai_assistance/components/ChatInput.ts +2 -2
- package/front_end/panels/ai_assistance/components/ChatMessage.ts +92 -12
- package/front_end/panels/ai_assistance/components/chatMessage.css +6 -0
- package/front_end/panels/application/ApplicationPanelSidebar.ts +10 -4
- package/front_end/panels/application/IndexedDBViews.ts +65 -63
- package/front_end/panels/application/StorageView.ts +116 -45
- package/front_end/panels/application/WebMCPView.ts +16 -7
- package/front_end/panels/application/application-meta.ts +11 -0
- package/front_end/panels/application/components/AdsView.ts +1 -1
- package/front_end/panels/common/AiCodeCompletionSummaryToolbar.ts +5 -5
- package/front_end/panels/common/BadgeNotification.ts +8 -8
- package/front_end/panels/common/ExtensionPanel.ts +9 -8
- package/front_end/panels/common/ExtensionServer.ts +21 -1
- package/front_end/panels/common/GdpSignUpDialog.ts +16 -16
- package/front_end/panels/common/GeminiRebrandPromoDialog.ts +5 -6
- package/front_end/panels/common/PersistenceUtils.ts +2 -2
- package/front_end/panels/common/common.ts +0 -97
- package/front_end/panels/console/ConsoleInsightTeaser.ts +2 -2
- package/front_end/panels/console/ConsolePanel.ts +4 -0
- package/front_end/panels/console/ConsolePinPane.ts +2 -2
- package/front_end/panels/console/ConsolePrompt.ts +12 -0
- package/front_end/panels/console/ConsoleView.ts +31 -20
- package/front_end/panels/console/ConsoleViewMessage.ts +37 -13
- package/front_end/panels/css_overview/CSSOverviewCompletedView.ts +2 -2
- package/front_end/panels/css_overview/CSSOverviewModel.ts +1 -1
- package/front_end/panels/elements/ElementStatePaneWidget.ts +2 -1
- package/front_end/panels/elements/ElementsTreeElement.ts +455 -372
- package/front_end/panels/elements/LayoutPane.ts +2 -8
- package/front_end/panels/elements/StylePropertyTreeElement.ts +16 -15
- package/front_end/panels/elements/elements-meta.ts +152 -10
- package/front_end/panels/elements/elements.ts +0 -2
- package/front_end/panels/emulation/DeviceModeView.ts +9 -1
- package/front_end/panels/event_listeners/EventListenersView.ts +8 -4
- package/front_end/panels/issues/AffectedTrackingSitesView.ts +25 -14
- package/front_end/panels/lighthouse/LighthouseController.ts +3 -2
- package/front_end/panels/media/PlayerMessagesView.ts +149 -68
- package/front_end/panels/network/BinaryResourceView.ts +134 -81
- package/front_end/panels/network/EventSourceMessagesView.ts +10 -10
- package/front_end/panels/network/FetchHeaderCommenting.ts +291 -0
- package/front_end/panels/network/NetworkConfigView.ts +10 -10
- package/front_end/panels/network/NetworkDataGridNode.ts +14 -14
- package/front_end/panels/network/NetworkItemView.ts +27 -28
- package/front_end/panels/network/NetworkLogView.ts +137 -38
- package/front_end/panels/network/NetworkLogViewColumns.ts +35 -35
- package/front_end/panels/network/NetworkManageCustomHeadersView.ts +1 -1
- package/front_end/panels/network/NetworkPanel.ts +2 -2
- package/front_end/panels/network/RequestConditionsDrawer.ts +5 -5
- package/front_end/panels/network/RequestCookiesView.ts +4 -4
- package/front_end/panels/network/RequestHeadersView.ts +5 -5
- package/front_end/panels/network/RequestPayloadView.ts +4 -3
- package/front_end/panels/network/RequestTimingView.ts +8 -8
- package/front_end/panels/network/ResourceChunkView.ts +1 -1
- package/front_end/panels/network/ResourceDirectSocketChunkView.ts +1 -1
- package/front_end/panels/network/ResourceWebSocketFrameView.ts +16 -16
- package/front_end/panels/network/binaryResourceView.css +14 -12
- package/front_end/panels/network/components/DirectSocketConnectionView.ts +2 -2
- package/front_end/panels/network/components/HeaderSectionRow.ts +1 -1
- package/front_end/panels/network/components/RequestTrustTokensView.ts +2 -2
- package/front_end/panels/network/network-meta.ts +1 -1
- package/front_end/panels/network/network.ts +2 -0
- package/front_end/panels/profiler/HeapDetachedElementsDataGrid.ts +0 -1
- package/front_end/panels/profiler/HeapSnapshotView.ts +0 -2
- package/front_end/panels/profiler/heapProfiler.css +0 -9
- package/front_end/panels/recorder/RecorderPanel.ts +2 -3
- package/front_end/panels/screencast/ScreencastView.ts +148 -138
- package/front_end/panels/sources/AiCodeCompletionPlugin.ts +2 -2
- package/front_end/panels/sources/BreakpointsView.ts +2 -2
- package/front_end/panels/sources/DebuggerPlugin.ts +10 -59
- package/front_end/panels/sources/NavigatorView.ts +2 -1
- package/front_end/panels/sources/ScopeChainSidebarPane.ts +1 -1
- package/front_end/panels/sources/SourcesPanel.ts +23 -73
- package/front_end/panels/sources/SourcesView.ts +248 -157
- package/front_end/panels/sources/TabbedEditorContainer.ts +118 -23
- package/front_end/panels/sources/UISourceCodeFrame.ts +5 -9
- package/front_end/panels/sources/WatchExpressionsSidebarPane.ts +4 -2
- package/front_end/panels/sources/sources-meta.ts +52 -0
- package/front_end/panels/timeline/TimelineController.ts +36 -64
- package/front_end/panels/timeline/TimelinePanel.ts +11 -8
- package/front_end/panels/timeline/TimelineUIUtils.ts +5 -2
- package/front_end/panels/timeline/overlays/components/EntryLabelOverlay.ts +2 -2
- package/front_end/panels/timeline/timelinePanel.css +0 -10
- package/front_end/panels/utils/utils.ts +7 -7
- package/front_end/services/tracing/PerformanceTracing.ts +5 -17
- package/front_end/third_party/chromium/README.chromium +1 -1
- package/front_end/third_party/codemirror.next/chunk/codemirror.js +1 -1
- package/front_end/third_party/codemirror.next/chunk/codemirror.js.map +1 -1
- package/front_end/third_party/codemirror.next/package.json +2 -2
- package/front_end/third_party/codemirror.next/rebuild.sh +4 -1
- package/front_end/ui/comments/CommentAnchorResolver.ts +430 -35
- package/front_end/ui/comments/CommentOverlayManager.ts +635 -0
- package/front_end/ui/comments/CommentsOverlayWidget.ts +134 -0
- package/front_end/ui/comments/comments.ts +4 -0
- package/front_end/ui/comments/commentsOverlay.css +49 -0
- package/front_end/{panels/common → ui/components/dialogs}/FreDialog.ts +6 -6
- package/front_end/ui/components/dialogs/TypeToAllowDialog.ts +96 -0
- package/front_end/ui/components/dialogs/dialogs.ts +4 -0
- package/front_end/ui/components/settings/SettingCheckbox.ts +3 -3
- package/front_end/{panels/common → ui/components/text_editor}/AiCodeCompletionDisclaimer.ts +13 -13
- package/front_end/ui/components/text_editor/AiCodeCompletionProvider.ts +7 -6
- package/front_end/{panels/common → ui/components/text_editor}/AiCodeCompletionTeaser.ts +43 -46
- package/front_end/ui/components/text_editor/AiCodeGenerationProvider.ts +22 -26
- package/front_end/{panels/common → ui/components/text_editor}/AiCodeGenerationTeaser.ts +10 -10
- package/front_end/{panels/common → ui/components/text_editor}/AiCodeGenerationUpgradeDialog.ts +5 -5
- package/front_end/ui/components/text_editor/text_editor.ts +4 -0
- package/front_end/ui/legacy/Toolbar.ts +1 -1
- package/front_end/ui/legacy/UIUtils.ts +0 -56
- package/front_end/ui/legacy/View.ts +10 -4
- package/front_end/ui/legacy/Widget.ts +10 -1
- package/front_end/ui/legacy/components/color_picker/ContrastDetails.ts +2 -1
- package/front_end/ui/legacy/components/color_picker/ContrastOverlay.ts +5 -4
- package/front_end/ui/legacy/components/object_ui/CustomPreviewComponent.ts +11 -3
- package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +507 -209
- package/front_end/ui/legacy/components/object_ui/objectPropertiesSection.css +5 -0
- package/front_end/ui/legacy/components/quick_open/CommandMenu.ts +11 -16
- package/front_end/ui/legacy/components/settings_ui/SettingsUI.ts +5 -12
- package/front_end/ui/legacy/components/source_frame/BinaryResourceViewFactory.ts +38 -20
- package/front_end/ui/legacy/components/source_frame/JSONView.ts +12 -2
- package/front_end/ui/legacy/components/source_frame/ResourceSourceFrame.ts +3 -3
- package/front_end/ui/legacy/components/source_frame/SourceFrame.ts +37 -6
- package/front_end/ui/legacy/components/source_frame/StreamingContentHexView.ts +22 -4
- package/front_end/ui/settings/SettingUIRegistration.ts +55 -6
- package/front_end/ui/visual_logging/KnownContextValues.ts +3 -0
- package/mcp/mcp.ts +6 -1
- package/package.json +6 -6
- package/front_end/Images/toolbarResizerVertical.png +0 -0
- package/front_end/emulated_devices/MotoG4-landscape.svg +0 -155
- package/front_end/emulated_devices/MotoG4-portrait.svg +0 -155
- package/front_end/emulated_devices/Nexus5X-landscape.svg +0 -19
- package/front_end/emulated_devices/Nexus5X-portrait.svg +0 -19
- package/front_end/emulated_devices/Nexus6P-landscape.svg +0 -50
- package/front_end/emulated_devices/Nexus6P-portrait.svg +0 -54
- package/front_end/emulated_devices/google-nest-hub-horizontal.png +0 -0
- package/front_end/emulated_devices/google-nest-hub-max-horizontal.png +0 -0
- package/front_end/emulated_devices/google-nexus-5-horizontal-default-1x.png +0 -0
- package/front_end/emulated_devices/google-nexus-5-horizontal-default-2x.png +0 -0
- package/front_end/emulated_devices/google-nexus-5-horizontal-keyboard-1x.png +0 -0
- package/front_end/emulated_devices/google-nexus-5-horizontal-keyboard-2x.png +0 -0
- package/front_end/emulated_devices/google-nexus-5-horizontal-navigation-1x.png +0 -0
- package/front_end/emulated_devices/google-nexus-5-horizontal-navigation-2x.png +0 -0
- package/front_end/emulated_devices/google-nexus-5-vertical-default-1x.png +0 -0
- package/front_end/emulated_devices/google-nexus-5-vertical-default-2x.png +0 -0
- package/front_end/emulated_devices/google-nexus-5-vertical-keyboard-1x.png +0 -0
- package/front_end/emulated_devices/google-nexus-5-vertical-keyboard-2x.png +0 -0
- package/front_end/emulated_devices/google-nexus-5-vertical-navigation-1x.png +0 -0
- package/front_end/emulated_devices/google-nexus-5-vertical-navigation-2x.png +0 -0
- package/front_end/emulated_devices/google-nexus-5x-horizontal-default-1x.png +0 -0
- package/front_end/emulated_devices/google-nexus-5x-horizontal-default-2x.png +0 -0
- package/front_end/emulated_devices/google-nexus-5x-horizontal-keyboard-1x.png +0 -0
- package/front_end/emulated_devices/google-nexus-5x-horizontal-keyboard-2x.png +0 -0
- package/front_end/emulated_devices/google-nexus-5x-horizontal-navigation-1x.png +0 -0
- package/front_end/emulated_devices/google-nexus-5x-horizontal-navigation-2x.png +0 -0
- package/front_end/emulated_devices/google-nexus-5x-vertical-default-1x.png +0 -0
- package/front_end/emulated_devices/google-nexus-5x-vertical-default-2x.png +0 -0
- package/front_end/emulated_devices/google-nexus-5x-vertical-keyboard-1x.png +0 -0
- package/front_end/emulated_devices/google-nexus-5x-vertical-keyboard-2x.png +0 -0
- package/front_end/emulated_devices/google-nexus-5x-vertical-navigation-1x.png +0 -0
- package/front_end/emulated_devices/google-nexus-5x-vertical-navigation-2x.png +0 -0
- package/front_end/emulated_devices/iPad-landscape.svg +0 -73
- package/front_end/emulated_devices/iPad-portrait.svg +0 -76
- package/front_end/emulated_devices/iPhone5-landscape.svg +0 -99
- package/front_end/emulated_devices/iPhone5-portrait.svg +0 -83
- package/front_end/emulated_devices/iPhone6-landscape.svg +0 -111
- package/front_end/emulated_devices/iPhone6-portrait.svg +0 -116
- package/front_end/emulated_devices/iPhone6Plus-landscape.svg +0 -118
- package/front_end/emulated_devices/iPhone6Plus-portrait.svg +0 -116
- package/front_end/emulated_devices/optimized/MotoG4-landscape.avif +0 -0
- package/front_end/emulated_devices/optimized/MotoG4-portrait.avif +0 -0
- package/front_end/emulated_devices/optimized/Nexus5X-landscape.avif +0 -0
- package/front_end/emulated_devices/optimized/Nexus5X-portrait.avif +0 -0
- package/front_end/emulated_devices/optimized/Nexus6P-landscape.avif +0 -0
- package/front_end/emulated_devices/optimized/Nexus6P-portrait.avif +0 -0
- package/front_end/emulated_devices/optimized/README.md +0 -9
- package/front_end/emulated_devices/optimized/google-nest-hub-horizontal.avif +0 -0
- package/front_end/emulated_devices/optimized/google-nest-hub-max-horizontal.avif +0 -0
- package/front_end/emulated_devices/optimized/google-nexus-5-horizontal-default-1x.avif +0 -0
- package/front_end/emulated_devices/optimized/google-nexus-5-horizontal-default-2x.avif +0 -0
- package/front_end/emulated_devices/optimized/google-nexus-5-horizontal-keyboard-1x.avif +0 -0
- package/front_end/emulated_devices/optimized/google-nexus-5-horizontal-keyboard-2x.avif +0 -0
- package/front_end/emulated_devices/optimized/google-nexus-5-horizontal-navigation-1x.avif +0 -0
- package/front_end/emulated_devices/optimized/google-nexus-5-horizontal-navigation-2x.avif +0 -0
- package/front_end/emulated_devices/optimized/google-nexus-5-vertical-default-1x.avif +0 -0
- package/front_end/emulated_devices/optimized/google-nexus-5-vertical-default-2x.avif +0 -0
- package/front_end/emulated_devices/optimized/google-nexus-5-vertical-keyboard-1x.avif +0 -0
- package/front_end/emulated_devices/optimized/google-nexus-5-vertical-keyboard-2x.avif +0 -0
- package/front_end/emulated_devices/optimized/google-nexus-5-vertical-navigation-1x.avif +0 -0
- package/front_end/emulated_devices/optimized/google-nexus-5-vertical-navigation-2x.avif +0 -0
- package/front_end/emulated_devices/optimized/google-nexus-5x-horizontal-default-1x.avif +0 -0
- package/front_end/emulated_devices/optimized/google-nexus-5x-horizontal-default-2x.avif +0 -0
- package/front_end/emulated_devices/optimized/google-nexus-5x-horizontal-keyboard-1x.avif +0 -0
- package/front_end/emulated_devices/optimized/google-nexus-5x-horizontal-keyboard-2x.avif +0 -0
- package/front_end/emulated_devices/optimized/google-nexus-5x-horizontal-navigation-1x.avif +0 -0
- package/front_end/emulated_devices/optimized/google-nexus-5x-horizontal-navigation-2x.avif +0 -0
- package/front_end/emulated_devices/optimized/google-nexus-5x-vertical-default-1x.avif +0 -0
- package/front_end/emulated_devices/optimized/google-nexus-5x-vertical-default-2x.avif +0 -0
- package/front_end/emulated_devices/optimized/google-nexus-5x-vertical-keyboard-1x.avif +0 -0
- package/front_end/emulated_devices/optimized/google-nexus-5x-vertical-keyboard-2x.avif +0 -0
- package/front_end/emulated_devices/optimized/google-nexus-5x-vertical-navigation-1x.avif +0 -0
- package/front_end/emulated_devices/optimized/google-nexus-5x-vertical-navigation-2x.avif +0 -0
- package/front_end/emulated_devices/optimized/iPad-landscape.avif +0 -0
- package/front_end/emulated_devices/optimized/iPad-portrait.avif +0 -0
- package/front_end/emulated_devices/optimized/iPhone5-landscape.avif +0 -0
- package/front_end/emulated_devices/optimized/iPhone5-portrait.avif +0 -0
- package/front_end/emulated_devices/optimized/iPhone6-landscape.avif +0 -0
- package/front_end/emulated_devices/optimized/iPhone6-portrait.avif +0 -0
- package/front_end/emulated_devices/optimized/iPhone6Plus-landscape.avif +0 -0
- package/front_end/emulated_devices/optimized/iPhone6Plus-portrait.avif +0 -0
- package/front_end/emulated_devices/optimized/optimized_images.gni +0 -53
- package/front_end/models/ai_assistance/agents/README.md +0 -136
- package/front_end/panels/elements/ElementsTreeOutlineRenderer.ts +0 -89
- package/front_end/ui/legacy/components/object_ui/object_ui-meta.ts +0 -27
- /package/front_end/{panels/common → ui/components/dialogs}/freDialog.css +0 -0
- /package/front_end/{panels/common/common.css → ui/components/dialogs/typeToAllowDialog.css} +0 -0
- /package/front_end/{panels/common → ui/components/text_editor}/aiCodeCompletionDisclaimer.css +0 -0
- /package/front_end/{panels/common → ui/components/text_editor}/aiCodeCompletionTeaser.css +0 -0
- /package/front_end/{panels/common → ui/components/text_editor}/aiCodeGenerationTeaser.css +0 -0
- /package/front_end/{panels/common → ui/components/text_editor}/aiCodeGenerationUpgradeDialog.css +0 -0
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
// found in the LICENSE file.
|
|
4
4
|
|
|
5
5
|
import * as Common from '../../core/common/common.js';
|
|
6
|
+
import * as Host from '../../core/host/host.js';
|
|
6
7
|
import * as i18n from '../../core/i18n/i18n.js';
|
|
7
8
|
import * as Platform from '../../core/platform/platform.js';
|
|
8
9
|
import * as TextUtils from '../../core/text_utils/text_utils.js';
|
|
@@ -14,7 +15,7 @@ import * as uiI18n from '../../ui/i18n/i18n.js';
|
|
|
14
15
|
import {Icon, Link} from '../../ui/kit/kit.js';
|
|
15
16
|
import * as SourceFrame from '../../ui/legacy/components/source_frame/source_frame.js';
|
|
16
17
|
import * as UI from '../../ui/legacy/legacy.js';
|
|
17
|
-
import {html} from '../../ui/lit/lit.js';
|
|
18
|
+
import {html, render} from '../../ui/lit/lit.js';
|
|
18
19
|
import * as VisualLogging from '../../ui/visual_logging/visual_logging.js';
|
|
19
20
|
import * as PanelCommon from '../common/common.js';
|
|
20
21
|
import * as Snippets from '../snippets/snippets.js';
|
|
@@ -23,6 +24,26 @@ import {SourcesView} from './SourcesView.js';
|
|
|
23
24
|
import {UISourceCodeFrame} from './UISourceCodeFrame.js';
|
|
24
25
|
|
|
25
26
|
const UIStrings = {
|
|
27
|
+
/**
|
|
28
|
+
* @description Text to open a file.
|
|
29
|
+
*/
|
|
30
|
+
openFile: 'Open file',
|
|
31
|
+
/**
|
|
32
|
+
* @description Text to run commands.
|
|
33
|
+
*/
|
|
34
|
+
runCommand: 'Run command',
|
|
35
|
+
/**
|
|
36
|
+
* @description Text in Sources view of the Sources panel.
|
|
37
|
+
*/
|
|
38
|
+
workspaceDropInAFolderToSyncSources: 'To sync edits to the workspace, drop a folder with your sources here or',
|
|
39
|
+
/**
|
|
40
|
+
* @description Text in Sources view of the Sources panel.
|
|
41
|
+
*/
|
|
42
|
+
selectFolder: 'Select folder',
|
|
43
|
+
/**
|
|
44
|
+
* @description Accessible label for Sources placeholder view actions list.
|
|
45
|
+
*/
|
|
46
|
+
sourceViewActions: 'Source View Actions',
|
|
26
47
|
/**
|
|
27
48
|
* @description Text in Tabbed editor container of the Sources panel.
|
|
28
49
|
* @example {file.js} PH1
|
|
@@ -60,26 +81,38 @@ export interface TabbedEditorContainerDelegate {
|
|
|
60
81
|
|
|
61
82
|
let tabId = 0;
|
|
62
83
|
|
|
63
|
-
export class TabbedEditorContainer extends Common.ObjectWrapper.
|
|
64
|
-
|
|
84
|
+
export class TabbedEditorContainer extends Common.ObjectWrapper.eventMixin<EventTypes, typeof UI.Widget.VBox>(
|
|
85
|
+
UI.Widget.VBox) {
|
|
86
|
+
delegate!: TabbedEditorContainerDelegate;
|
|
65
87
|
private readonly tabbedPane: UI.TabbedPane.TabbedPane;
|
|
66
88
|
private tabIds: Map<Workspace.UISourceCode.UISourceCode, string>;
|
|
67
89
|
private readonly files: Map<string, Workspace.UISourceCode.UISourceCode>;
|
|
68
|
-
|
|
69
|
-
|
|
90
|
+
#previouslyViewedFilesSetting!: Common.Settings.Setting<SerializedHistoryItem[]>;
|
|
91
|
+
history!: History;
|
|
92
|
+
set previouslyViewedFilesSetting(setting: Common.Settings.Setting<SerializedHistoryItem[]>) {
|
|
93
|
+
this.#previouslyViewedFilesSetting = setting;
|
|
94
|
+
this.history = History.fromObject(this.#previouslyViewedFilesSetting.get());
|
|
95
|
+
}
|
|
96
|
+
get previouslyViewedFilesSetting(): Common.Settings.Setting<SerializedHistoryItem[]> {
|
|
97
|
+
return this.#previouslyViewedFilesSetting;
|
|
98
|
+
}
|
|
70
99
|
private readonly uriToUISourceCode: Map<Platform.DevToolsPath.UrlString, Workspace.UISourceCode.UISourceCode>;
|
|
71
100
|
private readonly idToUISourceCode: Map<string, Workspace.UISourceCode.UISourceCode>;
|
|
72
101
|
#currentFile!: Workspace.UISourceCode.UISourceCode|null;
|
|
73
102
|
private currentView!: UI.Widget.Widget|null;
|
|
74
103
|
private scrollTimer?: number;
|
|
75
104
|
private reentrantShow: boolean;
|
|
76
|
-
constructor(
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
this.
|
|
80
|
-
|
|
81
|
-
this.tabbedPane
|
|
82
|
-
|
|
105
|
+
constructor(element?: HTMLElement) {
|
|
106
|
+
super(element);
|
|
107
|
+
|
|
108
|
+
this.tabbedPane = new UI.TabbedPane.TabbedPane();
|
|
109
|
+
// eslint-disable-next-line @devtools/no-imperative-dom-api
|
|
110
|
+
this.tabbedPane.show(this.contentElement);
|
|
111
|
+
// eslint-disable-next-line @devtools/no-imperative-dom-api
|
|
112
|
+
const placeholderElement = document.createElement('div');
|
|
113
|
+
placeholderElement.classList.add('sources-placeholder');
|
|
114
|
+
this.tabbedPane.setPlaceholderElement(placeholderElement);
|
|
115
|
+
this.#renderPlaceholder(placeholderElement as HTMLElement);
|
|
83
116
|
this.tabbedPane.setTabDelegate(new EditorContainerTabDelegate(this));
|
|
84
117
|
|
|
85
118
|
this.tabbedPane.setCloseableTabs(true);
|
|
@@ -103,13 +136,15 @@ export class TabbedEditorContainer extends Common.ObjectWrapper.ObjectWrapper<Ev
|
|
|
103
136
|
this.tabIds = new Map();
|
|
104
137
|
this.files = new Map();
|
|
105
138
|
|
|
106
|
-
this.previouslyViewedFilesSetting = setting;
|
|
107
|
-
this.history = History.fromObject(this.previouslyViewedFilesSetting.get());
|
|
108
139
|
this.uriToUISourceCode = new Map();
|
|
109
140
|
this.idToUISourceCode = new Map();
|
|
110
141
|
this.reentrantShow = false;
|
|
111
142
|
}
|
|
112
143
|
|
|
144
|
+
get tabbedPaneForTesting(): UI.TabbedPane.TabbedPane {
|
|
145
|
+
return this.tabbedPane;
|
|
146
|
+
}
|
|
147
|
+
|
|
113
148
|
private onBindingCreated(event: Common.EventTarget.EventTargetEvent<Persistence.Persistence.PersistenceBinding>):
|
|
114
149
|
void {
|
|
115
150
|
const binding = event.data;
|
|
@@ -160,10 +195,6 @@ export class TabbedEditorContainer extends Common.ObjectWrapper.ObjectWrapper<Ev
|
|
|
160
195
|
this.updateFileTitle(binding.fileSystem);
|
|
161
196
|
}
|
|
162
197
|
|
|
163
|
-
get view(): UI.Widget.Widget {
|
|
164
|
-
return this.tabbedPane;
|
|
165
|
-
}
|
|
166
|
-
|
|
167
198
|
get visibleView(): UI.Widget.Widget|null {
|
|
168
199
|
return this.tabbedPane.visibleView as UI.Widget.Widget | null;
|
|
169
200
|
}
|
|
@@ -180,10 +211,6 @@ export class TabbedEditorContainer extends Common.ObjectWrapper.ObjectWrapper<Ev
|
|
|
180
211
|
return this.tabbedPane.rightToolbar();
|
|
181
212
|
}
|
|
182
213
|
|
|
183
|
-
show(parentElement: Element): void {
|
|
184
|
-
this.tabbedPane.show(parentElement);
|
|
185
|
-
}
|
|
186
|
-
|
|
187
214
|
showFile(uiSourceCode: Workspace.UISourceCode.UISourceCode): void {
|
|
188
215
|
const binding = Persistence.Persistence.PersistenceImpl.instance().binding(uiSourceCode);
|
|
189
216
|
uiSourceCode = binding ? binding.fileSystem : uiSourceCode;
|
|
@@ -194,7 +221,8 @@ export class TabbedEditorContainer extends Common.ObjectWrapper.ObjectWrapper<Ev
|
|
|
194
221
|
// Otherwise, this event will fire as soon as the content has been set.
|
|
195
222
|
if (frame?.currentSourceFrame()?.contentSet && this.#currentFile === uiSourceCode &&
|
|
196
223
|
frame?.currentUISourceCode() === uiSourceCode) {
|
|
197
|
-
|
|
224
|
+
window.dispatchEvent(new CustomEvent('source-file-loaded',
|
|
225
|
+
{bubbles: true, cancelable: true, detail: uiSourceCode.displayName(true)}));
|
|
198
226
|
} else {
|
|
199
227
|
this.#showFile(uiSourceCode, true);
|
|
200
228
|
}
|
|
@@ -212,6 +240,10 @@ export class TabbedEditorContainer extends Common.ObjectWrapper.ObjectWrapper<Ev
|
|
|
212
240
|
this.closeTabs(this.tabbedPane.tabIds());
|
|
213
241
|
}
|
|
214
242
|
|
|
243
|
+
detachEditors(): void {
|
|
244
|
+
this.tabbedPane.detachChildWidgets();
|
|
245
|
+
}
|
|
246
|
+
|
|
215
247
|
historyUISourceCodes(): Workspace.UISourceCode.UISourceCode[] {
|
|
216
248
|
const result = [];
|
|
217
249
|
for (const {url, resourceType} of this.history.keys()) {
|
|
@@ -690,6 +722,69 @@ export class TabbedEditorContainer extends Common.ObjectWrapper.ObjectWrapper<Ev
|
|
|
690
722
|
return 'tab-' + (tabId++) as Lowercase<string>;
|
|
691
723
|
}
|
|
692
724
|
|
|
725
|
+
#renderPlaceholder(placeholderElement: HTMLElement): void {
|
|
726
|
+
const shortcuts = [
|
|
727
|
+
{actionId: 'quick-open.show', description: i18nString(UIStrings.openFile)},
|
|
728
|
+
{actionId: 'quick-open.show-command-menu', description: i18nString(UIStrings.runCommand)},
|
|
729
|
+
];
|
|
730
|
+
const separator = Host.Platform.isMac() ? '\u2004' : ' + ';
|
|
731
|
+
const shortcutElements = shortcuts.map(shortcut => {
|
|
732
|
+
const shortcutKeys = UI.ShortcutRegistry.ShortcutRegistry.instance().shortcutsForAction(shortcut.actionId);
|
|
733
|
+
if (!shortcutKeys?.[0]) {
|
|
734
|
+
return {
|
|
735
|
+
description: shortcut.description,
|
|
736
|
+
onClick: () => {},
|
|
737
|
+
keys: [],
|
|
738
|
+
};
|
|
739
|
+
}
|
|
740
|
+
const action = UI.ActionRegistry.ActionRegistry.instance().getAction(shortcut.actionId);
|
|
741
|
+
const keys = shortcutKeys[0].descriptors.flatMap(descriptor => descriptor.name.split(separator));
|
|
742
|
+
return {
|
|
743
|
+
description: shortcut.description,
|
|
744
|
+
onClick: () => {
|
|
745
|
+
void action.execute();
|
|
746
|
+
},
|
|
747
|
+
keys,
|
|
748
|
+
};
|
|
749
|
+
});
|
|
750
|
+
|
|
751
|
+
// clang-format off
|
|
752
|
+
// eslint-disable-next-line @devtools/no-lit-render-outside-of-view
|
|
753
|
+
render(html`
|
|
754
|
+
<div class="tabbed-pane-placeholder-row workspace">
|
|
755
|
+
<span class="icon-container">
|
|
756
|
+
<devtools-icon name="sync" class="sync-icon"></devtools-icon>
|
|
757
|
+
</span>
|
|
758
|
+
<span>
|
|
759
|
+
${i18nString(UIStrings.workspaceDropInAFolderToSyncSources)}
|
|
760
|
+
<button @click=${this.#addFileSystemClicked.bind(this)}>${i18nString(UIStrings.selectFolder)}</button>
|
|
761
|
+
</span>
|
|
762
|
+
</div>
|
|
763
|
+
<div class="shortcuts-list tabbed-pane-placeholder-row" role="list"
|
|
764
|
+
aria-label=${i18nString(UIStrings.sourceViewActions)}>
|
|
765
|
+
${shortcutElements.map(shortcut => !shortcut.keys.length
|
|
766
|
+
? html`<div class="shortcut-line" role="listitem"></div>`
|
|
767
|
+
: html`<div class="shortcut-line" role="listitem">
|
|
768
|
+
<button @click=${shortcut.onClick}>${shortcut.description}</button>
|
|
769
|
+
<span class="shortcuts">
|
|
770
|
+
${shortcut.keys.map(key => html`
|
|
771
|
+
<span class="keybinds-key"><span>${key}</span></span>
|
|
772
|
+
`)}
|
|
773
|
+
</span>
|
|
774
|
+
</div>`)}
|
|
775
|
+
</div>`, placeholderElement);
|
|
776
|
+
// clang-format on
|
|
777
|
+
}
|
|
778
|
+
|
|
779
|
+
async #addFileSystemClicked(): Promise<void> {
|
|
780
|
+
const result = await Persistence.IsolatedFileSystemManager.IsolatedFileSystemManager.instance().addFileSystem();
|
|
781
|
+
if (!result) {
|
|
782
|
+
return;
|
|
783
|
+
}
|
|
784
|
+
Host.userMetrics.actionTaken(Host.UserMetrics.Action.WorkspaceSelectFolder);
|
|
785
|
+
void UI.ViewManager.ViewManager.instance().showView('navigator-files');
|
|
786
|
+
}
|
|
787
|
+
|
|
693
788
|
currentFile(): Workspace.UISourceCode.UISourceCode|null {
|
|
694
789
|
return this.#currentFile || null;
|
|
695
790
|
}
|
|
@@ -171,9 +171,8 @@ export class UISourceCodeFrame extends Common.ObjectWrapper
|
|
|
171
171
|
this.installMessageAndDecorationListeners();
|
|
172
172
|
this.updateStyle();
|
|
173
173
|
// Show pretty-print toggle if file type is formattable.
|
|
174
|
-
// For editable JavaScript files, the toggle is hidden
|
|
175
|
-
//
|
|
176
|
-
// because they don't have this issue (fixes issue 378870233).
|
|
174
|
+
// For editable JavaScript files, the toggle is hidden. For non-JS files (JSON, CSS), the toggle can be shown
|
|
175
|
+
// (fixes issue 378870233).
|
|
177
176
|
const isFormattable = FormatterActions.FORMATTABLE_MEDIA_TYPES.includes(this.contentType);
|
|
178
177
|
const isEditable = Persistence.Persistence.PersistenceImpl.instance().hasEditableContent(this.#uiSourceCode);
|
|
179
178
|
// Check if the MIME type is JavaScript (not the resource type, which can be wrong for file system files)
|
|
@@ -231,11 +230,7 @@ export class UISourceCodeFrame extends Common.ObjectWrapper
|
|
|
231
230
|
Persistence.NetworkPersistenceManager.NetworkPersistenceManager.instance().active()) {
|
|
232
231
|
return true;
|
|
233
232
|
}
|
|
234
|
-
|
|
235
|
-
if (this.pretty && this.#uiSourceCode.contentType().hasScripts()) {
|
|
236
|
-
return false;
|
|
237
|
-
}
|
|
238
|
-
return this.#uiSourceCode.contentType() !== Common.ResourceType.resourceTypes.Document;
|
|
233
|
+
return this.#uiSourceCode.contentType().isStyleSheet();
|
|
239
234
|
}
|
|
240
235
|
|
|
241
236
|
private onNetworkPersistenceChanged(): void {
|
|
@@ -260,7 +255,8 @@ export class UISourceCodeFrame extends Common.ObjectWrapper
|
|
|
260
255
|
plugin.editorInitialized(this.textEditor);
|
|
261
256
|
}
|
|
262
257
|
this.#recordSourcesPanelOpenedMetrics();
|
|
263
|
-
|
|
258
|
+
window.dispatchEvent(new CustomEvent(
|
|
259
|
+
'source-file-loaded', {bubbles: true, cancelable: true, detail: this.#uiSourceCode.displayName(true)}));
|
|
264
260
|
}
|
|
265
261
|
|
|
266
262
|
private createMessage(origin: Workspace.UISourceCode.Message): RowMessage {
|
|
@@ -195,8 +195,10 @@ export const DEFAULT_VIEW: View = (input, output, target) => {
|
|
|
195
195
|
class="watch-expression-error value"
|
|
196
196
|
title=${ifDefined(e.exceptionDetails?.exception?.description)}
|
|
197
197
|
>${i18nString(UIStrings.notAvailable)}</span>`
|
|
198
|
-
: ObjectUI.ObjectPropertiesSection.
|
|
199
|
-
e.result.object, Boolean(e.exceptionDetails), false /* showPreview */, input.linkifier
|
|
198
|
+
: ObjectUI.ObjectPropertiesSection.renderPropertyValue(
|
|
199
|
+
e.result.object, Boolean(e.exceptionDetails), false /* showPreview */, input.linkifier,
|
|
200
|
+
false /* isSyntheticProperty */, undefined /* variableName */,
|
|
201
|
+
undefined /* includeNullOrUndefined */, /* useCustomPreview */ true)}
|
|
200
202
|
</div>
|
|
201
203
|
</div>
|
|
202
204
|
</devtools-prompt>
|
|
@@ -18,6 +18,26 @@ import * as SettingsUI from '../../ui/settings/settings.js';
|
|
|
18
18
|
import type * as Sources from './sources.js';
|
|
19
19
|
|
|
20
20
|
const UIStrings = {
|
|
21
|
+
/**
|
|
22
|
+
* @description Title of a setting under the Debugger category in Settings.
|
|
23
|
+
*/
|
|
24
|
+
disableAsyncStackTraces: 'Disable async stack traces',
|
|
25
|
+
/**
|
|
26
|
+
* @description Title of a setting under the Debugger category that can be invoked through the Command Menu.
|
|
27
|
+
*/
|
|
28
|
+
doNotCaptureAsyncStackTraces: 'Do not capture async stack traces',
|
|
29
|
+
/**
|
|
30
|
+
* @description Title of a setting under the Debugger category that can be invoked through the Command Menu.
|
|
31
|
+
*/
|
|
32
|
+
captureAsyncStackTraces: 'Capture async stack traces',
|
|
33
|
+
/**
|
|
34
|
+
* @description Title of a setting under the Debugger category that can be invoked through the Command Menu.
|
|
35
|
+
*/
|
|
36
|
+
disableJavascript: 'Disable JavaScript',
|
|
37
|
+
/**
|
|
38
|
+
* @description Title of a setting under the Debugger category that can be invoked through the Command Menu.
|
|
39
|
+
*/
|
|
40
|
+
enableJavascript: 'Enable JavaScript',
|
|
21
41
|
/**
|
|
22
42
|
* @description Text for pausing the debugger on exceptions.
|
|
23
43
|
*/
|
|
@@ -1591,6 +1611,38 @@ SettingsUI.SettingUIRegistration.register(SDK.SDKSettings.cssSourceMapsEnabledSe
|
|
|
1591
1611
|
],
|
|
1592
1612
|
});
|
|
1593
1613
|
|
|
1614
|
+
SettingsUI.SettingUIRegistration.register(SDK.SDKSettings.javaScriptDisabledSettingDescriptor, {
|
|
1615
|
+
category: Common.Settings.SettingCategory.DEBUGGER,
|
|
1616
|
+
title: i18nLazyString(UIStrings.disableJavascript),
|
|
1617
|
+
order: 1,
|
|
1618
|
+
options: [
|
|
1619
|
+
{
|
|
1620
|
+
value: true,
|
|
1621
|
+
title: i18nLazyString(UIStrings.disableJavascript),
|
|
1622
|
+
},
|
|
1623
|
+
{
|
|
1624
|
+
value: false,
|
|
1625
|
+
title: i18nLazyString(UIStrings.enableJavascript),
|
|
1626
|
+
},
|
|
1627
|
+
],
|
|
1628
|
+
});
|
|
1629
|
+
|
|
1630
|
+
SettingsUI.SettingUIRegistration.register(SDK.SDKSettings.disableAsyncStackTracesSettingDescriptor, {
|
|
1631
|
+
category: Common.Settings.SettingCategory.DEBUGGER,
|
|
1632
|
+
title: i18nLazyString(UIStrings.disableAsyncStackTraces),
|
|
1633
|
+
order: 2,
|
|
1634
|
+
options: [
|
|
1635
|
+
{
|
|
1636
|
+
value: true,
|
|
1637
|
+
title: i18nLazyString(UIStrings.doNotCaptureAsyncStackTraces),
|
|
1638
|
+
},
|
|
1639
|
+
{
|
|
1640
|
+
value: false,
|
|
1641
|
+
title: i18nLazyString(UIStrings.captureAsyncStackTraces),
|
|
1642
|
+
},
|
|
1643
|
+
],
|
|
1644
|
+
});
|
|
1645
|
+
|
|
1594
1646
|
SettingsUI.SettingUIRegistration.register(SDK.SDKSettings.pauseOnExceptionEnabledSettingDescriptor, {
|
|
1595
1647
|
category: Common.Settings.SettingCategory.DEBUGGER,
|
|
1596
1648
|
options: [
|
|
@@ -205,10 +205,6 @@ export class TimelineController implements Tracing.TracingManager.TracingManager
|
|
|
205
205
|
}
|
|
206
206
|
|
|
207
207
|
async startRecording(options: RecordingOptions): Promise<void> {
|
|
208
|
-
function disabledByDefault(category: string): string {
|
|
209
|
-
return 'disabled-by-default-' + category;
|
|
210
|
-
}
|
|
211
|
-
|
|
212
208
|
this.client.recordingStatus(i18nString(UIStrings.initializingTracing));
|
|
213
209
|
|
|
214
210
|
// If we are doing "Reload & record", we first navigate the page to
|
|
@@ -220,51 +216,9 @@ export class TimelineController implements Tracing.TracingManager.TracingManager
|
|
|
220
216
|
await this.#navigateToAboutBlank();
|
|
221
217
|
}
|
|
222
218
|
|
|
223
|
-
|
|
224
|
-
// offers the possibility of turning them off (see below).
|
|
225
|
-
// 'disabled-by-default-devtools.screenshot'
|
|
226
|
-
// └ default: on, option: captureFilmStrip
|
|
227
|
-
// 'disabled-by-default-devtools.timeline.invalidationTracking'
|
|
228
|
-
// └ default: off, experiment: timelineInvalidationTracking
|
|
229
|
-
// 'disabled-by-default-v8.cpu_profiler'
|
|
230
|
-
// └ default: on, option: enableJSSampling
|
|
231
|
-
const categoriesArray = [
|
|
232
|
-
Common.Settings.Settings.instance().moduleSetting('timeline-show-all-events').get() ? '*' : '-*',
|
|
233
|
-
Trace.Types.Events.Categories.Console,
|
|
234
|
-
Trace.Types.Events.Categories.Loading,
|
|
235
|
-
Trace.Types.Events.Categories.UserTiming,
|
|
236
|
-
'devtools.timeline',
|
|
237
|
-
disabledByDefault('devtools.target-rundown'),
|
|
238
|
-
disabledByDefault('devtools.timeline.frame'),
|
|
239
|
-
disabledByDefault('devtools.timeline.stack'),
|
|
240
|
-
disabledByDefault('devtools.timeline'),
|
|
241
|
-
disabledByDefault('devtools.v8-source-rundown-sources'),
|
|
242
|
-
disabledByDefault('devtools.v8-source-rundown'),
|
|
243
|
-
disabledByDefault('layout_shift.debug'),
|
|
244
|
-
// Looking for disabled-by-default-v8.compile? We disabled it: crbug.com/414330508.
|
|
245
|
-
disabledByDefault('v8.inspector'),
|
|
246
|
-
disabledByDefault('v8.cpu_profiler.hires'),
|
|
247
|
-
disabledByDefault('lighthouse'),
|
|
248
|
-
'v8.execute',
|
|
249
|
-
'v8',
|
|
250
|
-
'cppgc',
|
|
251
|
-
'navigation,rail',
|
|
252
|
-
];
|
|
253
|
-
|
|
254
|
-
if (options.enableJSSampling) {
|
|
255
|
-
categoriesArray.push(disabledByDefault('v8.cpu_profiler'));
|
|
256
|
-
}
|
|
257
|
-
if (Common.Settings.Settings.instance().moduleSetting('timeline-invalidation-tracking').get() as boolean) {
|
|
258
|
-
categoriesArray.push(disabledByDefault('devtools.timeline.invalidationTracking'));
|
|
259
|
-
}
|
|
260
|
-
if (options.capturePictures) {
|
|
261
|
-
categoriesArray.push(
|
|
262
|
-
disabledByDefault('devtools.timeline.layers'), disabledByDefault('devtools.timeline.picture'),
|
|
263
|
-
disabledByDefault('blink.graphics_context_annotations'));
|
|
264
|
-
}
|
|
219
|
+
const categoriesArray = this.#categoriesForRecording(options);
|
|
265
220
|
const screenshotOptions: Tracing.TracingManager.TracingStartOptions = {};
|
|
266
221
|
if (options.captureFilmStrip) {
|
|
267
|
-
categoriesArray.push(disabledByDefault('devtools.screenshot'));
|
|
268
222
|
if (options.screenshotMaxSize !== undefined) {
|
|
269
223
|
screenshotOptions.screenshotMaxSize = options.screenshotMaxSize;
|
|
270
224
|
}
|
|
@@ -272,17 +226,12 @@ export class TimelineController implements Tracing.TracingManager.TracingManager
|
|
|
272
226
|
screenshotOptions.screenshotMaxCount = options.screenshotMaxCount;
|
|
273
227
|
}
|
|
274
228
|
}
|
|
275
|
-
if (options.captureSelectorStats) {
|
|
276
|
-
categoriesArray.push(disabledByDefault('blink.debug'));
|
|
277
|
-
// enable invalidation nodes
|
|
278
|
-
categoriesArray.push(disabledByDefault('devtools.timeline.invalidationTracking'));
|
|
279
|
-
}
|
|
280
229
|
|
|
281
230
|
await LiveMetrics.LiveMetrics.instance().disable();
|
|
282
231
|
|
|
283
|
-
SDK.TargetManager.TargetManager.instance().addModelListener(
|
|
284
|
-
|
|
285
|
-
|
|
232
|
+
SDK.TargetManager.TargetManager.instance().addModelListener(SDK.ResourceTreeModel.ResourceTreeModel,
|
|
233
|
+
SDK.ResourceTreeModel.Events.FrameNavigated,
|
|
234
|
+
this.#onFrameNavigated, this);
|
|
286
235
|
|
|
287
236
|
this.#navigationUrls = [];
|
|
288
237
|
this.#fieldData = null;
|
|
@@ -311,9 +260,8 @@ export class TimelineController implements Tracing.TracingManager.TracingManager
|
|
|
311
260
|
|
|
312
261
|
const loadEvent = this.#navigateWithSDK(options.navigateToUrl);
|
|
313
262
|
this.#statusChecker.add(i18nString(UIStrings.waitingForLoadEvent), loadEvent);
|
|
314
|
-
this.#statusChecker.add(
|
|
315
|
-
|
|
316
|
-
loadEvent.then(() => new Promise(resolve => setTimeout(resolve, 5000))));
|
|
263
|
+
this.#statusChecker.add(i18nString(UIStrings.waitingForLoadEventPlus5Seconds),
|
|
264
|
+
loadEvent.then(() => new Promise(resolve => setTimeout(resolve, 5000))));
|
|
317
265
|
|
|
318
266
|
this.#statusChecker.setListener(status => {
|
|
319
267
|
if (status === null) {
|
|
@@ -352,9 +300,9 @@ export class TimelineController implements Tracing.TracingManager.TracingManager
|
|
|
352
300
|
this.tracingManager.stop();
|
|
353
301
|
}
|
|
354
302
|
|
|
355
|
-
SDK.TargetManager.TargetManager.instance().removeModelListener(
|
|
356
|
-
|
|
357
|
-
|
|
303
|
+
SDK.TargetManager.TargetManager.instance().removeModelListener(SDK.ResourceTreeModel.ResourceTreeModel,
|
|
304
|
+
SDK.ResourceTreeModel.Events.FrameNavigated,
|
|
305
|
+
this.#onFrameNavigated, this);
|
|
358
306
|
SDK.TargetManager.TargetManager.instance().removeModelListener(
|
|
359
307
|
SDK.ResourceTreeModel.ResourceTreeModel, SDK.ResourceTreeModel.Events.Load, this.#onLoadEventFired, this);
|
|
360
308
|
|
|
@@ -475,6 +423,30 @@ export class TimelineController implements Tracing.TracingManager.TracingManager
|
|
|
475
423
|
eventsRetrievalProgress(progress: number): void {
|
|
476
424
|
this.client.loadingProgress(progress);
|
|
477
425
|
}
|
|
426
|
+
|
|
427
|
+
#categoriesForRecording(options: RecordingOptions): string[] {
|
|
428
|
+
const categoriesArray = [
|
|
429
|
+
Common.Settings.Settings.instance().moduleSetting('timeline-show-all-events').get() ? '*' : '-*',
|
|
430
|
+
...Trace.Types.Events.DefaultCategories,
|
|
431
|
+
];
|
|
432
|
+
|
|
433
|
+
if (options.enableJSSampling) {
|
|
434
|
+
categoriesArray.push(...Trace.Types.Events.OptionalCategories.JsSampling);
|
|
435
|
+
}
|
|
436
|
+
if (Common.Settings.Settings.instance().moduleSetting('timeline-invalidation-tracking').get() as boolean) {
|
|
437
|
+
categoriesArray.push(...Trace.Types.Events.OptionalCategories.InvalidationTracking);
|
|
438
|
+
}
|
|
439
|
+
if (options.capturePictures) {
|
|
440
|
+
categoriesArray.push(...Trace.Types.Events.OptionalCategories.AdvancedPaint);
|
|
441
|
+
}
|
|
442
|
+
if (options.captureFilmStrip) {
|
|
443
|
+
categoriesArray.push(...Trace.Types.Events.OptionalCategories.Screenshot);
|
|
444
|
+
}
|
|
445
|
+
if (options.captureSelectorStats) {
|
|
446
|
+
categoriesArray.push(...Trace.Types.Events.OptionalCategories.CssSelectorStats);
|
|
447
|
+
}
|
|
448
|
+
return categoriesArray;
|
|
449
|
+
}
|
|
478
450
|
}
|
|
479
451
|
|
|
480
452
|
export interface Client {
|
|
@@ -483,9 +455,9 @@ export interface Client {
|
|
|
483
455
|
loadingStarted(): void;
|
|
484
456
|
processingStarted(): void;
|
|
485
457
|
loadingProgress(progress?: number): void;
|
|
486
|
-
loadingComplete(
|
|
487
|
-
|
|
488
|
-
|
|
458
|
+
loadingComplete(collectedEvents: Trace.Types.Events.Event[],
|
|
459
|
+
exclusiveFilter: Trace.Extras.TraceFilter.TraceFilter|null,
|
|
460
|
+
metadata: Trace.Types.File.MetaData|null): Promise<void>;
|
|
489
461
|
loadingCompleteForTest(): void;
|
|
490
462
|
}
|
|
491
463
|
export interface RecordingOptions {
|
|
@@ -58,6 +58,7 @@ import * as PerfUI from '../../ui/legacy/components/perf_ui/perf_ui.js';
|
|
|
58
58
|
import * as SettingsUI from '../../ui/legacy/components/settings_ui/settings_ui.js';
|
|
59
59
|
import * as UI from '../../ui/legacy/legacy.js';
|
|
60
60
|
import * as ThemeSupport from '../../ui/legacy/theme_support/theme_support.js';
|
|
61
|
+
import * as SettingUIRegistration from '../../ui/settings/settings.js';
|
|
61
62
|
import * as VisualLogging from '../../ui/visual_logging/visual_logging.js';
|
|
62
63
|
import * as MobileThrottling from '../mobile_throttling/mobile_throttling.js';
|
|
63
64
|
|
|
@@ -1326,8 +1327,8 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
|
|
|
1326
1327
|
MobileThrottling.CPUThrottlingSelector.CPUThrottlingSelector.createForGlobalConditions(cpuThrottlingPane);
|
|
1327
1328
|
|
|
1328
1329
|
this.settingsPane.append(SettingsUI.SettingsUI.createSettingCheckbox(
|
|
1329
|
-
this.captureSelectorStatsSetting.
|
|
1330
|
-
i18nString(UIStrings.capturesSelectorStats)));
|
|
1330
|
+
SettingUIRegistration.SettingUIRegistration.resolve(this.captureSelectorStatsSetting.descriptor()).title,
|
|
1331
|
+
this.captureSelectorStatsSetting, i18nString(UIStrings.capturesSelectorStats)));
|
|
1331
1332
|
|
|
1332
1333
|
const networkThrottlingPane = this.settingsPane.createChild('div');
|
|
1333
1334
|
networkThrottlingPane.append(i18nString(UIStrings.network));
|
|
@@ -1337,17 +1338,18 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
|
|
|
1337
1338
|
);
|
|
1338
1339
|
|
|
1339
1340
|
this.settingsPane.append(SettingsUI.SettingsUI.createSettingCheckbox(
|
|
1340
|
-
this.captureLayersAndPicturesSetting.
|
|
1341
|
-
i18nString(UIStrings.capturesAdvancedPaint)));
|
|
1341
|
+
SettingUIRegistration.SettingUIRegistration.resolve(this.captureLayersAndPicturesSetting.descriptor()).title,
|
|
1342
|
+
this.captureLayersAndPicturesSetting, i18nString(UIStrings.capturesAdvancedPaint)));
|
|
1342
1343
|
|
|
1343
1344
|
this.settingsPane.append(SettingsUI.SettingsUI.createSettingCheckbox(
|
|
1344
|
-
this.disableCaptureJSProfileSetting.
|
|
1345
|
-
i18nString(UIStrings.disablesJavascriptSampling)));
|
|
1345
|
+
SettingUIRegistration.SettingUIRegistration.resolve(this.disableCaptureJSProfileSetting.descriptor()).title,
|
|
1346
|
+
this.disableCaptureJSProfileSetting, i18nString(UIStrings.disablesJavascriptSampling)));
|
|
1346
1347
|
|
|
1347
1348
|
const screenshotPresetSelect = new UI.Toolbar.ToolbarComboBox(
|
|
1348
1349
|
() =>
|
|
1349
1350
|
this.screenshotCaptureModeSetting.set((screenshotPresetSelect.selectedOption() as HTMLOptionElement).value),
|
|
1350
|
-
this.screenshotCaptureModeSetting.
|
|
1351
|
+
SettingUIRegistration.SettingUIRegistration.resolve(this.screenshotCaptureModeSetting.descriptor()).title, '',
|
|
1352
|
+
'screenshot-capture-mode');
|
|
1351
1353
|
let selectedScreenshotPresetIndex = 0;
|
|
1352
1354
|
for (let i = 0; i < SCREENSHOT_CAPTURE_PRESETS.length; ++i) {
|
|
1353
1355
|
const preset = SCREENSHOT_CAPTURE_PRESETS[i];
|
|
@@ -1359,7 +1361,8 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
|
|
|
1359
1361
|
}
|
|
1360
1362
|
screenshotPresetSelect.setSelectedIndex(selectedScreenshotPresetIndex);
|
|
1361
1363
|
const screenshotPresetPane = this.settingsPane.createChild('div');
|
|
1362
|
-
screenshotPresetPane.append(
|
|
1364
|
+
screenshotPresetPane.append(
|
|
1365
|
+
SettingUIRegistration.SettingUIRegistration.resolve(this.screenshotCaptureModeSetting.descriptor()).title);
|
|
1363
1366
|
screenshotPresetPane.append(screenshotPresetSelect.element);
|
|
1364
1367
|
// Surface the dropdown only when the "Screenshots" checkbox is on, since the
|
|
1365
1368
|
// preset only affects the screenshots captured during the recording.
|
|
@@ -61,6 +61,7 @@ import * as LegacyComponents from '../../ui/legacy/components/utils/utils.js';
|
|
|
61
61
|
import * as UI from '../../ui/legacy/legacy.js';
|
|
62
62
|
import * as ThemeSupport from '../../ui/legacy/theme_support/theme_support.js';
|
|
63
63
|
import {html, render} from '../../ui/lit/lit.js';
|
|
64
|
+
import * as SettingUIRegistration from '../../ui/settings/settings.js';
|
|
64
65
|
import * as PanelsCommon from '../common/common.js';
|
|
65
66
|
|
|
66
67
|
import {getDurationString} from './AppenderUtils.js';
|
|
@@ -1278,10 +1279,12 @@ export class TimelineUIUtils {
|
|
|
1278
1279
|
contentHelper.appendTextRow(i18nString(UIStrings.elementsAffected), unsafeEventArgs['elementCount']);
|
|
1279
1280
|
|
|
1280
1281
|
const selectorStatsSetting =
|
|
1281
|
-
Common.Settings.Settings.instance().
|
|
1282
|
+
Common.Settings.Settings.instance().moduleSetting('timeline-capture-selector-stats');
|
|
1282
1283
|
if (!selectorStatsSetting.get()) {
|
|
1283
1284
|
const note = document.createElement('span');
|
|
1284
|
-
note.textContent = i18nString(UIStrings.sSelectorStatsInfo, {
|
|
1285
|
+
note.textContent = i18nString(UIStrings.sSelectorStatsInfo, {
|
|
1286
|
+
PH1: SettingUIRegistration.SettingUIRegistration.resolve(selectorStatsSetting.descriptor()).title,
|
|
1287
|
+
});
|
|
1285
1288
|
contentHelper.appendElementRow(i18nString(UIStrings.selectorStatsTitle), note);
|
|
1286
1289
|
}
|
|
1287
1290
|
|
|
@@ -14,13 +14,13 @@ import * as Platform from '../../../../core/platform/platform.js';
|
|
|
14
14
|
import * as Root from '../../../../core/root/root.js';
|
|
15
15
|
import * as AiAssistanceModels from '../../../../models/ai_assistance/ai_assistance.js';
|
|
16
16
|
import * as Buttons from '../../../../ui/components/buttons/buttons.js';
|
|
17
|
+
import * as Dialogs from '../../../../ui/components/dialogs/dialogs.js';
|
|
17
18
|
import * as ComponentHelpers from '../../../../ui/components/helpers/helpers.js';
|
|
18
19
|
import * as UIHelpers from '../../../../ui/helpers/helpers.js';
|
|
19
20
|
import * as UI from '../../../../ui/legacy/legacy.js';
|
|
20
21
|
import * as ThemeSupport from '../../../../ui/legacy/theme_support/theme_support.js';
|
|
21
22
|
import * as Lit from '../../../../ui/lit/lit.js';
|
|
22
23
|
import * as VisualLogging from '../../../../ui/visual_logging/visual_logging.js';
|
|
23
|
-
import * as PanelCommon from '../../../common/common.js';
|
|
24
24
|
|
|
25
25
|
import entryLabelOverlayStyles from './entryLabelOverlay.css.js';
|
|
26
26
|
|
|
@@ -568,7 +568,7 @@ export class EntryLabelOverlay extends HTMLElement {
|
|
|
568
568
|
*/
|
|
569
569
|
async #showUserAiFirstRunDialog(): Promise<boolean> {
|
|
570
570
|
this.dispatchEvent(new LabelAnnotationsConsentDialogVisibilityChange(true));
|
|
571
|
-
const userConsented = await
|
|
571
|
+
const userConsented = await Dialogs.FreDialog.FreDialog.show({
|
|
572
572
|
ariaLabel: i18nString(UIStrings.freDialog),
|
|
573
573
|
header: {iconName: 'pen-spark', text: lockedString(UIStringsNotTranslate.freDisclaimerHeader)},
|
|
574
574
|
reminderItems: [
|
|
@@ -151,16 +151,6 @@
|
|
|
151
151
|
justify-content: space-between;
|
|
152
152
|
}
|
|
153
153
|
|
|
154
|
-
#memory-graphs-container .timeline-memory-header::after {
|
|
155
|
-
content: "";
|
|
156
|
-
/* stylelint-disable-next-line custom-property-pattern */
|
|
157
|
-
background-image: var(--image-file-toolbarResizerVertical);
|
|
158
|
-
background-repeat: no-repeat;
|
|
159
|
-
background-position: right center, center;
|
|
160
|
-
flex: 20px 0 0;
|
|
161
|
-
margin: 0 4px;
|
|
162
|
-
}
|
|
163
|
-
|
|
164
154
|
.timeline-memory-toolbar {
|
|
165
155
|
flex-shrink: 1;
|
|
166
156
|
}
|
|
@@ -21,35 +21,35 @@ const {ref, styleMap, ifDefined} = Directives;
|
|
|
21
21
|
|
|
22
22
|
const UIStrings = {
|
|
23
23
|
/**
|
|
24
|
-
* @description Tooltip to explain the resource's overridden status
|
|
24
|
+
* @description Tooltip to explain the resource's overridden status.
|
|
25
25
|
*/
|
|
26
26
|
requestContentHeadersOverridden: 'Both request content and headers are overridden',
|
|
27
27
|
/**
|
|
28
|
-
* @description Tooltip to explain the resource's overridden status
|
|
28
|
+
* @description Tooltip to explain the resource's overridden status.
|
|
29
29
|
*/
|
|
30
30
|
requestContentOverridden: 'Request content is overridden',
|
|
31
31
|
/**
|
|
32
|
-
* @description Tooltip to explain the resource's overridden status
|
|
32
|
+
* @description Tooltip to explain the resource's overridden status.
|
|
33
33
|
*/
|
|
34
34
|
requestHeadersOverridden: 'Request headers are overridden',
|
|
35
35
|
/**
|
|
36
|
-
* @description Tooltip to explain why the request has warning icon
|
|
36
|
+
* @description Tooltip to explain why the request has a warning icon.
|
|
37
37
|
*/
|
|
38
38
|
thirdPartyPhaseout:
|
|
39
39
|
'Cookies for this request are blocked either because of Chrome flags or browser configuration. Learn more in the Issues panel.',
|
|
40
40
|
/**
|
|
41
|
-
* @description Tooltip to explain that a request was throttled
|
|
41
|
+
* @description Tooltip to explain that a request was throttled.
|
|
42
42
|
* @example {Image} PH1
|
|
43
43
|
* @example {3G} PH2
|
|
44
44
|
*/
|
|
45
45
|
resourceTypeWithThrottling: '{PH1} (throttled to {PH2})',
|
|
46
46
|
/**
|
|
47
|
-
* @description Tooltip for a failed request
|
|
47
|
+
* @description Tooltip for a failed request.
|
|
48
48
|
* @example {Document} PH1
|
|
49
49
|
*/
|
|
50
50
|
requestFailed: '{PH1} request failed',
|
|
51
51
|
/**
|
|
52
|
-
* @description Tooltip for a failed request
|
|
52
|
+
* @description Tooltip for a failed prefetch request.
|
|
53
53
|
* @example {Document} PH1
|
|
54
54
|
*/
|
|
55
55
|
prefetchFailed: '{PH1} prefetch request failed',
|