chrome-devtools-frontend 1.0.1555430 → 1.0.1558690
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/front_end/core/common/Object.ts +5 -1
- package/front_end/core/host/ResourceLoader.ts +1 -1
- package/front_end/core/host/UserMetrics.ts +3 -1
- package/front_end/core/sdk/DOMModel.ts +7 -0
- package/front_end/core/sdk/NetworkManager.ts +0 -7
- package/front_end/core/sdk/SourceMap.ts +16 -2
- package/front_end/core/sdk/SourceMapManager.ts +1 -1
- package/front_end/core/sdk/SourceMapScopesInfo.ts +11 -4
- package/front_end/entrypoints/formatter_worker/FormatterActions.ts +3 -0
- package/front_end/entrypoints/formatter_worker/ScopeParser.ts +119 -8
- package/front_end/entrypoints/formatter_worker/Substitute.ts +1 -1
- package/front_end/entrypoints/main/GlobalAiButton.ts +5 -1
- package/front_end/generated/Deprecation.ts +0 -7
- package/front_end/generated/InspectorBackendCommands.ts +4 -4
- package/front_end/generated/protocol.ts +9 -1
- package/front_end/models/ai_assistance/AiConversation.ts +71 -10
- package/front_end/models/ai_assistance/ArtifactsManager.ts +67 -0
- package/front_end/models/ai_assistance/ConversationHandler.ts +3 -2
- package/front_end/models/ai_assistance/agents/AiAgent.ts +17 -27
- package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +151 -3
- package/front_end/models/ai_assistance/agents/StylingAgent.ts +1 -1
- package/front_end/models/ai_assistance/ai_assistance.ts +2 -0
- package/front_end/models/ai_assistance/data_formatters/PerformanceInsightFormatter.ts +0 -2
- package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.snapshot.txt +3 -3
- package/front_end/models/annotations/AnnotationRepository.ts +2 -2
- package/front_end/models/bindings/CompilerScriptMapping.ts +7 -6
- package/front_end/models/bindings/DebuggerWorkspaceBinding.ts +4 -4
- package/front_end/models/greendev/Prototypes.ts +56 -0
- package/front_end/models/greendev/README.md +5 -0
- package/front_end/models/greendev/greendev.ts +5 -0
- package/front_end/models/javascript_metadata/NativeFunctions.js +2 -2
- package/front_end/models/stack_trace/StackTraceImpl.ts +5 -3
- package/front_end/models/stack_trace/StackTraceModel.ts +53 -40
- package/front_end/models/trace/EventsSerializer.ts +8 -2
- package/front_end/models/trace/extras/TraceTree.ts +4 -2
- package/front_end/models/trace/handlers/LayoutShiftsHandler.ts +2 -2
- package/front_end/models/trace/insights/LCPDiscovery.ts +0 -2
- package/front_end/models/trace/types/TraceEvents.ts +0 -1
- package/front_end/panels/ai_assistance/AiAssistancePanel.ts +96 -91
- package/front_end/panels/ai_assistance/aiAssistancePanel.css +16 -0
- package/front_end/panels/ai_assistance/components/ArtifactsViewer.ts +109 -7
- package/front_end/panels/ai_assistance/components/ChatView.ts +2 -2
- package/front_end/panels/ai_assistance/components/CollapsibleAssistanceContentWidget.ts +7 -8
- package/front_end/panels/ai_assistance/components/PerformanceAgentFlameChart.ts +15 -8
- package/front_end/panels/ai_assistance/components/PerformanceAgentMarkdownRenderer.ts +9 -9
- package/front_end/panels/ai_assistance/components/artifactsViewer.css +6 -1
- package/front_end/panels/ai_assistance/components/collapsibleAssistanceContentWidget.css +5 -6
- package/front_end/panels/application/AppManifestView.ts +360 -391
- package/front_end/panels/application/ApplicationPanelSidebar.ts +24 -57
- package/front_end/panels/application/CookieItemsView.ts +1 -0
- package/front_end/panels/application/OpenedWindowDetailsView.ts +2 -0
- package/front_end/panels/application/ServiceWorkersView.ts +2 -0
- package/front_end/panels/application/SharedStorageTreeElement.ts +3 -0
- package/front_end/panels/application/StorageView.ts +1 -0
- package/front_end/panels/application/appManifestView.css +49 -1
- package/front_end/panels/application/components/ProtocolHandlersView.ts +2 -2
- package/front_end/panels/console/ConsoleViewMessage.ts +4 -3
- package/front_end/panels/elements/ElementsTreeElement.ts +30 -1
- package/front_end/panels/elements/ElementsTreeOutline.ts +1 -1
- package/front_end/panels/elements/ElementsTreeOutlineRenderer.ts +7 -1
- package/front_end/panels/elements/components/AdornerManager.ts +8 -0
- package/front_end/panels/emulation/DeviceModeToolbar.ts +3 -1
- package/front_end/panels/issues/AffectedResourcesView.ts +0 -1
- package/front_end/panels/lighthouse/LighthousePanel.ts +10 -0
- package/front_end/panels/lighthouse/lighthousePanel.css +46 -3
- package/front_end/panels/linear_memory_inspector/components/LinearMemoryInspector.ts +4 -8
- package/front_end/panels/linear_memory_inspector/components/LinearMemoryValueInterpreter.ts +148 -97
- package/front_end/panels/linear_memory_inspector/components/LinearMemoryViewer.ts +1 -1
- package/front_end/panels/linear_memory_inspector/components/linearMemoryValueInterpreter.css +37 -35
- package/front_end/panels/network/NetworkLogViewColumns.ts +9 -9
- package/front_end/panels/network/RequestCookiesView.ts +125 -141
- package/front_end/panels/network/components/RequestHeadersView.ts +2 -2
- package/front_end/panels/network/requestCookiesView.css +22 -20
- package/front_end/panels/recorder/components/RecordingView.ts +3 -3
- package/front_end/panels/recorder/components/StepView.ts +2 -1
- package/front_end/panels/settings/SettingsScreen.ts +133 -1
- package/front_end/panels/settings/keybindsSettingsTab.css +4 -0
- package/front_end/panels/settings/settings-meta.ts +24 -0
- package/front_end/panels/settings/settingsScreen.css +4 -0
- package/front_end/panels/sources/CallStackSidebarPane.ts +7 -3
- package/front_end/panels/sources/DebuggerPausedMessage.ts +125 -90
- package/front_end/panels/sources/SourcesPanel.ts +10 -7
- package/front_end/panels/sources/UISourceCodeFrame.ts +3 -17
- package/front_end/panels/sources/debuggerPausedMessage.css +8 -0
- package/front_end/panels/timeline/components/insights/BaseInsightComponent.ts +2 -1
- package/front_end/panels/timeline/components/sidebarInsightsTab.css +2 -0
- package/front_end/third_party/acorn/estree-legacy.d.ts +4 -0
- package/front_end/third_party/chromium/README.chromium +1 -1
- package/front_end/third_party/puppeteer/README.chromium +2 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.d.ts +12 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/CDPSession.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/CDPSession.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/ElementHandle.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/ElementHandle.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Frame.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Frame.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.d.ts +14 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Browser.d.ts +3 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Browser.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Browser.js +6 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Browser.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/HTTPRequest.d.ts +0 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/HTTPRequest.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/HTTPRequest.js +0 -20
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/HTTPRequest.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.d.ts +3 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.js +10 -14
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.js +14 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/Connection.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.d.ts +3 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.js +12 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/EmulationManager.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/EmulationManager.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/EmulationManager.js +22 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/EmulationManager.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.d.ts +3 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.js +9 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/BrowserConnector.js +21 -7
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/BrowserConnector.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/EventEmitter.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/injected/injected.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.d.ts +3 -3
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js +3 -3
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/Mutex.d.ts +2 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/version.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/version.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.d.ts +26 -0
- package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.js +86 -20
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.d.ts +12 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/CDPSession.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/CDPSession.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/ElementHandle.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/ElementHandle.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Frame.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Frame.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.d.ts +14 -2
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Browser.d.ts +3 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Browser.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Browser.js +6 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Browser.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/HTTPRequest.d.ts +0 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/HTTPRequest.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/HTTPRequest.js +0 -20
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/HTTPRequest.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.d.ts +3 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.js +11 -15
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.js +14 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/Connection.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.d.ts +3 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.js +12 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/EmulationManager.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/EmulationManager.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/EmulationManager.js +22 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/EmulationManager.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.d.ts +3 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.js +9 -2
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/BrowserConnector.js +21 -7
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/BrowserConnector.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/EventEmitter.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.d.ts +3 -3
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js +3 -3
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/version.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/version.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/types.d.ts +26 -0
- package/front_end/third_party/puppeteer/package/package.json +2 -2
- package/front_end/third_party/puppeteer/package/src/api/Browser.ts +18 -0
- package/front_end/third_party/puppeteer/package/src/api/CDPSession.ts +1 -2
- package/front_end/third_party/puppeteer/package/src/api/ElementHandle.ts +2 -4
- package/front_end/third_party/puppeteer/package/src/api/Frame.ts +2 -4
- package/front_end/third_party/puppeteer/package/src/api/Page.ts +18 -6
- package/front_end/third_party/puppeteer/package/src/bidi/Browser.ts +13 -0
- package/front_end/third_party/puppeteer/package/src/bidi/HTTPRequest.ts +0 -33
- package/front_end/third_party/puppeteer/package/src/bidi/Page.ts +14 -28
- package/front_end/third_party/puppeteer/package/src/bidi/core/BrowsingContext.ts +19 -0
- package/front_end/third_party/puppeteer/package/src/bidi/core/Connection.ts +3 -2
- package/front_end/third_party/puppeteer/package/src/cdp/Browser.ts +19 -0
- package/front_end/third_party/puppeteer/package/src/cdp/EmulationManager.ts +30 -0
- package/front_end/third_party/puppeteer/package/src/cdp/Page.ts +15 -6
- package/front_end/third_party/puppeteer/package/src/common/BrowserConnector.ts +29 -10
- package/front_end/third_party/puppeteer/package/src/common/EventEmitter.ts +3 -3
- 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/ui/components/icon_button/iconButton.css +3 -1
- package/front_end/ui/components/report_view/ReportView.docs.ts +37 -0
- package/front_end/ui/components/report_view/ReportView.ts +12 -6
- package/front_end/ui/components/report_view/report.css +16 -0
- package/front_end/ui/components/settings/SettingCheckbox.ts +1 -1
- package/front_end/ui/components/text_editor/AiCodeGenerationProvider.ts +135 -7
- package/front_end/ui/components/text_editor/config.ts +6 -6
- package/front_end/ui/legacy/ContextMenu.ts +11 -2
- package/front_end/ui/legacy/Floaty.ts +5 -9
- package/front_end/ui/legacy/InspectorView.ts +2 -1
- package/front_end/ui/legacy/ReportView.ts +5 -4
- package/front_end/ui/legacy/TextPrompt.ts +1 -1
- package/front_end/ui/legacy/Toolbar.ts +4 -0
- package/front_end/ui/legacy/UIUtils.ts +0 -2
- package/front_end/ui/legacy/Widget.ts +7 -0
- package/front_end/ui/legacy/components/cookie_table/CookiesTable.ts +18 -3
- package/front_end/ui/legacy/components/data_grid/DataGrid.ts +3 -3
- package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +6 -0
- package/front_end/ui/legacy/components/perf_ui/FlameChart.ts +0 -1
- package/front_end/ui/legacy/reportView.css +0 -24
- package/front_end/ui/visual_logging/KnownContextValues.ts +7 -0
- package/package.json +1 -1
|
@@ -496,7 +496,7 @@ export class DebuggerWorkspaceBinding implements SDK.TargetManager.SDKModelObser
|
|
|
496
496
|
const modelData =
|
|
497
497
|
this.#debuggerModelToData.get(target.model(SDK.DebuggerModel.DebuggerModel) as SDK.DebuggerModel.DebuggerModel);
|
|
498
498
|
if (modelData) {
|
|
499
|
-
modelData.translateRawFramesStep(rawFrames, translatedFrames);
|
|
499
|
+
await modelData.translateRawFramesStep(rawFrames, translatedFrames);
|
|
500
500
|
return;
|
|
501
501
|
}
|
|
502
502
|
|
|
@@ -609,10 +609,10 @@ class ModelData {
|
|
|
609
609
|
return scope;
|
|
610
610
|
}
|
|
611
611
|
|
|
612
|
-
translateRawFramesStep(
|
|
612
|
+
async translateRawFramesStep(
|
|
613
613
|
rawFrames: StackTraceImpl.Trie.RawFrame[],
|
|
614
|
-
translatedFrames: Awaited<ReturnType<StackTraceImpl.StackTraceModel.TranslateRawFrames>>): void {
|
|
615
|
-
if (!this.compilerMapping.translateRawFramesStep(rawFrames, translatedFrames)) {
|
|
614
|
+
translatedFrames: Awaited<ReturnType<StackTraceImpl.StackTraceModel.TranslateRawFrames>>): Promise<void> {
|
|
615
|
+
if (!await this.compilerMapping.translateRawFramesStep(rawFrames, translatedFrames)) {
|
|
616
616
|
this.#defaultTranslateRawFramesStep(rawFrames, translatedFrames);
|
|
617
617
|
}
|
|
618
618
|
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
// Copyright 2025 The Chromium Authors
|
|
2
|
+
// Use of this source code is governed by a BSD-style license that can be
|
|
3
|
+
// found in the LICENSE file.
|
|
4
|
+
|
|
5
|
+
import * as Common from '../../core/common/common.js';
|
|
6
|
+
import * as Root from '../../core/root/root.js';
|
|
7
|
+
|
|
8
|
+
let instance: Prototypes|null = null;
|
|
9
|
+
|
|
10
|
+
export interface GreenDevSettings {
|
|
11
|
+
inDevToolsFloaty: Common.Settings.Setting<boolean>;
|
|
12
|
+
inlineWidgets: Common.Settings.Setting<boolean>;
|
|
13
|
+
artifactViewer: Common.Settings.Setting<boolean>;
|
|
14
|
+
aiAnnotations: Common.Settings.Setting<boolean>;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export class Prototypes {
|
|
18
|
+
private constructor() {
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
static instance(): Prototypes {
|
|
22
|
+
if (instance) {
|
|
23
|
+
return instance;
|
|
24
|
+
}
|
|
25
|
+
instance = new Prototypes();
|
|
26
|
+
return instance;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Returns true if the specific setting is turned on AND the GreenDev flag is enabled
|
|
31
|
+
*/
|
|
32
|
+
isEnabled(setting: keyof GreenDevSettings): boolean {
|
|
33
|
+
const greendevFlagEnabled = Boolean(Root.Runtime.hostConfig.devToolsGreenDevUi?.enabled);
|
|
34
|
+
|
|
35
|
+
return greendevFlagEnabled && this.settings()[setting].get();
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
settings(): Readonly<GreenDevSettings> {
|
|
39
|
+
const settings = Common.Settings.Settings.instance();
|
|
40
|
+
const inDevToolsFloaty =
|
|
41
|
+
settings.createSetting('greendev-in-devtools-floaty-enabled', false, Common.Settings.SettingStorageType.LOCAL);
|
|
42
|
+
|
|
43
|
+
const inlineWidgets =
|
|
44
|
+
settings.createSetting('greendev-inline-widgets-enabled', false, Common.Settings.SettingStorageType.LOCAL);
|
|
45
|
+
|
|
46
|
+
const aiAnnotations = settings.createSetting(
|
|
47
|
+
'greendev-ai-annotations-enabled',
|
|
48
|
+
false,
|
|
49
|
+
Common.Settings.SettingStorageType.LOCAL,
|
|
50
|
+
);
|
|
51
|
+
|
|
52
|
+
const artifactViewer =
|
|
53
|
+
settings.createSetting('greendev-artifact-viewer-enabled', false, Common.Settings.SettingStorageType.LOCAL);
|
|
54
|
+
return {inDevToolsFloaty, inlineWidgets, aiAnnotations, artifactViewer};
|
|
55
|
+
}
|
|
56
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
# GreenDev Model
|
|
2
|
+
|
|
3
|
+
As part of GreenDev we are building a bunch of prototypes into DevTools to user test. This model holds which prototypes are enabled for a given user.
|
|
4
|
+
|
|
5
|
+
The settings is only stored in local storage, and not synced across devices or persisted in anyway beyond that.
|
|
@@ -8896,11 +8896,11 @@ export const NativeFunctions = [
|
|
|
8896
8896
|
},
|
|
8897
8897
|
{
|
|
8898
8898
|
name: "texElementImage2D",
|
|
8899
|
-
signatures: [["target","level","internalformat","format","type","element"],["target","level","internalformat","width","height","format","type","element"]]
|
|
8899
|
+
signatures: [["target","level","internalformat","format","type","element"],["target","level","internalformat","width","height","format","type","element"],["target","level","internalformat","sx","sy","swidth","sheight","format","type","element"],["target","level","internalformat","sx","sy","swidth","sheight","width","height","format","type","element"]]
|
|
8900
8900
|
},
|
|
8901
8901
|
{
|
|
8902
8902
|
name: "texElement2D",
|
|
8903
|
-
signatures: [["target","level","internalformat","format","type","element"],["target","level","internalformat","width","height","format","type","element"]]
|
|
8903
|
+
signatures: [["target","level","internalformat","format","type","element"],["target","level","internalformat","width","height","format","type","element"],["target","level","internalformat","sx","sy","swidth","sheight","format","type","element"],["target","level","internalformat","sx","sy","swidth","sheight","width","height","format","type","element"]]
|
|
8904
8904
|
},
|
|
8905
8905
|
{
|
|
8906
8906
|
name: "drawingBufferStorage",
|
|
@@ -105,9 +105,11 @@ export class DebuggableFragmentImpl implements StackTrace.StackTrace.DebuggableF
|
|
|
105
105
|
|
|
106
106
|
let index = 0;
|
|
107
107
|
for (const node of this.fragment.node.getCallStack()) {
|
|
108
|
-
for (const frame of node.frames) {
|
|
109
|
-
//
|
|
110
|
-
|
|
108
|
+
for (const [inlineIdx, frame] of node.frames.entries()) {
|
|
109
|
+
// Create virtual frames for inlined frames.
|
|
110
|
+
const sdkFrame = inlineIdx === 0 ? this.callFrames[index] :
|
|
111
|
+
this.callFrames[index].createVirtualCallFrame(inlineIdx, frame.name ?? '');
|
|
112
|
+
frames.push(new DebuggableFrameImpl(frame, sdkFrame));
|
|
111
113
|
}
|
|
112
114
|
index++;
|
|
113
115
|
}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
// Use of this source code is governed by a BSD-style license that can be
|
|
3
3
|
// found in the LICENSE file.
|
|
4
4
|
|
|
5
|
+
import * as Common from '../../core/common/common.js';
|
|
5
6
|
import * as SDK from '../../core/sdk/sdk.js';
|
|
6
7
|
import type * as Protocol from '../../generated/protocol.js';
|
|
7
8
|
|
|
@@ -32,6 +33,7 @@ export type TranslateRawFrames = (frames: readonly RawFrame[], target: SDK.Targe
|
|
|
32
33
|
*/
|
|
33
34
|
export class StackTraceModel extends SDK.SDKModel.SDKModel<unknown> {
|
|
34
35
|
readonly #trie = new Trie();
|
|
36
|
+
readonly #mutex = new Common.Mutex.Mutex();
|
|
35
37
|
|
|
36
38
|
/** @returns the {@link StackTraceModel} for the target, or the model for the primaryPageTarget when passing null/undefined */
|
|
37
39
|
static #modelForTarget(target: SDK.Target.Target|null|undefined): StackTraceModel {
|
|
@@ -45,7 +47,7 @@ export class StackTraceModel extends SDK.SDKModel.SDKModel<unknown> {
|
|
|
45
47
|
async createFromProtocolRuntime(stackTrace: Protocol.Runtime.StackTrace, rawFramesToUIFrames: TranslateRawFrames):
|
|
46
48
|
Promise<StackTrace.StackTrace.StackTrace> {
|
|
47
49
|
const [syncFragment, asyncFragments] = await Promise.all([
|
|
48
|
-
this.#
|
|
50
|
+
this.#createFragment(stackTrace.callFrames, rawFramesToUIFrames),
|
|
49
51
|
this.#createAsyncFragments(stackTrace, rawFramesToUIFrames),
|
|
50
52
|
]);
|
|
51
53
|
|
|
@@ -65,53 +67,51 @@ export class StackTraceModel extends SDK.SDKModel.SDKModel<unknown> {
|
|
|
65
67
|
|
|
66
68
|
/** Trigger re-translation of all fragments with the provide script in their call stack */
|
|
67
69
|
async scriptInfoChanged(script: SDK.Script.Script, translateRawFrames: TranslateRawFrames): Promise<void> {
|
|
68
|
-
const
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
70
|
+
const release = await this.#mutex.acquire();
|
|
71
|
+
try {
|
|
72
|
+
const translatePromises: Array<Promise<unknown>> = [];
|
|
73
|
+
let stackTracesToUpdate = new Set<AnyStackTraceImpl>();
|
|
74
|
+
|
|
75
|
+
for (const fragment of this.#affectedFragments(script)) {
|
|
76
|
+
// We trigger re-translation only for fragments of leaf-nodes. Any fragment along the ancestor-chain
|
|
77
|
+
// is re-translated as a side-effect.
|
|
78
|
+
// We just need to remember the stack traces of the skipped over fragments, so we can send the
|
|
79
|
+
// UPDATED event also to them.
|
|
80
|
+
if (fragment.node.children.length === 0) {
|
|
81
|
+
translatePromises.push(this.#translateFragment(fragment, translateRawFrames));
|
|
82
|
+
}
|
|
83
|
+
stackTracesToUpdate = stackTracesToUpdate.union(fragment.stackTraces);
|
|
78
84
|
}
|
|
79
|
-
stackTracesToUpdate = stackTracesToUpdate.union(fragment.stackTraces);
|
|
80
|
-
}
|
|
81
85
|
|
|
82
|
-
|
|
86
|
+
await Promise.all(translatePromises);
|
|
83
87
|
|
|
84
|
-
|
|
85
|
-
|
|
88
|
+
for (const stackTrace of stackTracesToUpdate) {
|
|
89
|
+
stackTrace.dispatchEventToListeners(StackTrace.StackTrace.Events.UPDATED);
|
|
90
|
+
}
|
|
91
|
+
} finally {
|
|
92
|
+
release();
|
|
86
93
|
}
|
|
87
94
|
}
|
|
88
95
|
|
|
89
|
-
async #createSyncFragment(stackTrace: Protocol.Runtime.StackTrace, rawFramesToUIFrames: TranslateRawFrames):
|
|
90
|
-
Promise<FragmentImpl> {
|
|
91
|
-
const fragment = this.#createFragment(stackTrace.callFrames);
|
|
92
|
-
await this.#translateFragment(fragment, rawFramesToUIFrames);
|
|
93
|
-
return fragment;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
96
|
async #createDebuggableFragment(
|
|
97
97
|
pausedDetails: SDK.DebuggerModel.DebuggerPausedDetails,
|
|
98
98
|
rawFramesToUIFrames: TranslateRawFrames): Promise<DebuggableFragmentImpl> {
|
|
99
|
-
const fragment = this.#createFragment(
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
99
|
+
const fragment = await this.#createFragment(
|
|
100
|
+
pausedDetails.callFrames.map(frame => ({
|
|
101
|
+
scriptId: frame.script.scriptId,
|
|
102
|
+
url: frame.script.sourceURL,
|
|
103
|
+
functionName: frame.functionName,
|
|
104
|
+
lineNumber: frame.location().lineNumber,
|
|
105
|
+
columnNumber: frame.location().columnNumber,
|
|
106
|
+
})),
|
|
107
|
+
rawFramesToUIFrames);
|
|
107
108
|
return new DebuggableFragmentImpl(fragment, pausedDetails.callFrames);
|
|
108
109
|
}
|
|
109
110
|
|
|
110
111
|
async #createAsyncFragments(
|
|
111
112
|
stackTraceOrPausedEvent: Protocol.Runtime.StackTrace|SDK.DebuggerModel.DebuggerPausedDetails,
|
|
112
113
|
rawFramesToUIFrames: TranslateRawFrames): Promise<AsyncFragmentImpl[]> {
|
|
113
|
-
const asyncFragments: AsyncFragmentImpl
|
|
114
|
-
const translatePromises: Array<Promise<unknown>> = [];
|
|
114
|
+
const asyncFragments: Array<Promise<AsyncFragmentImpl>> = [];
|
|
115
115
|
|
|
116
116
|
const debuggerModel = this.target().model(SDK.DebuggerModel.DebuggerModel);
|
|
117
117
|
if (debuggerModel) {
|
|
@@ -122,18 +122,31 @@ export class StackTraceModel extends SDK.SDKModel.SDKModel<unknown> {
|
|
|
122
122
|
continue;
|
|
123
123
|
}
|
|
124
124
|
const model = StackTraceModel.#modelForTarget(target);
|
|
125
|
-
const
|
|
126
|
-
|
|
127
|
-
|
|
125
|
+
const asyncFragmentPromise =
|
|
126
|
+
model.#createFragment(asyncStackTrace.callFrames, rawFramesToUIFrames)
|
|
127
|
+
.then(fragment => new AsyncFragmentImpl(asyncStackTrace.description ?? '', fragment));
|
|
128
|
+
asyncFragments.push(asyncFragmentPromise);
|
|
128
129
|
}
|
|
129
130
|
}
|
|
130
131
|
|
|
131
|
-
await Promise.all(
|
|
132
|
-
return asyncFragments;
|
|
132
|
+
return await Promise.all(asyncFragments);
|
|
133
133
|
}
|
|
134
134
|
|
|
135
|
-
#createFragment(frames: RawFrame[]): FragmentImpl {
|
|
136
|
-
|
|
135
|
+
async #createFragment(frames: RawFrame[], rawFramesToUIFrames: TranslateRawFrames): Promise<FragmentImpl> {
|
|
136
|
+
const release = await this.#mutex.acquire();
|
|
137
|
+
try {
|
|
138
|
+
const node = this.#trie.insert(frames);
|
|
139
|
+
const requiresTranslation = !Boolean(node.fragment);
|
|
140
|
+
const fragment = FragmentImpl.getOrCreate(node);
|
|
141
|
+
|
|
142
|
+
if (requiresTranslation) {
|
|
143
|
+
await this.#translateFragment(fragment, rawFramesToUIFrames);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
return fragment;
|
|
147
|
+
} finally {
|
|
148
|
+
release();
|
|
149
|
+
}
|
|
137
150
|
}
|
|
138
151
|
|
|
139
152
|
async #translateFragment(fragment: FragmentImpl, rawFramesToUIFrames: TranslateRawFrames): Promise<void> {
|
|
@@ -20,9 +20,15 @@ export class EventsSerializer {
|
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
const rawEvents = Helpers.SyntheticEvents.SyntheticEventsManager.getActiveManager().getRawTraceEvents();
|
|
23
|
+
const isSynthetic = Types.Events.isSyntheticBased(event);
|
|
24
|
+
const index = rawEvents.indexOf(isSynthetic ? event.rawSourceEvent : event);
|
|
25
|
+
if (index === -1) {
|
|
26
|
+
throw new Error(`Unknown trace event: ${event.name}`);
|
|
27
|
+
}
|
|
28
|
+
|
|
23
29
|
const key: Types.File.SyntheticEventKey|Types.File.RawEventKey = Types.Events.isSyntheticBased(event) ?
|
|
24
|
-
`${Types.File.EventKeyType.SYNTHETIC_EVENT}-${
|
|
25
|
-
`${Types.File.EventKeyType.RAW_EVENT}-${
|
|
30
|
+
`${Types.File.EventKeyType.SYNTHETIC_EVENT}-${index}` :
|
|
31
|
+
`${Types.File.EventKeyType.RAW_EVENT}-${index}`;
|
|
26
32
|
if (key.length < 3) {
|
|
27
33
|
return null;
|
|
28
34
|
}
|
|
@@ -493,8 +493,10 @@ export class BottomUpRootNode extends Node {
|
|
|
493
493
|
node.totalTime += totalTimeById.get(id) || 0;
|
|
494
494
|
totalTimeById.delete(id);
|
|
495
495
|
}
|
|
496
|
-
|
|
497
|
-
|
|
496
|
+
|
|
497
|
+
// An item on this stack means that this current node has a caller. Therefore,
|
|
498
|
+
// in a bottom-up view it has children.
|
|
499
|
+
if (idStack.length > 0) {
|
|
498
500
|
node.setHasChildren(true);
|
|
499
501
|
}
|
|
500
502
|
}
|
|
@@ -443,7 +443,7 @@ async function buildLayoutShiftsClusters(): Promise<void> {
|
|
|
443
443
|
}
|
|
444
444
|
|
|
445
445
|
let largestScore = 0;
|
|
446
|
-
let worstShiftEvent: Types.Events.
|
|
446
|
+
let worstShiftEvent: Types.Events.SyntheticLayoutShift|null = null;
|
|
447
447
|
|
|
448
448
|
for (const shift of cluster.events) {
|
|
449
449
|
weightedScore += shift.args.data ? shift.args.data.weighted_score_delta : 0;
|
|
@@ -504,7 +504,7 @@ async function buildLayoutShiftsClusters(): Promise<void> {
|
|
|
504
504
|
// Update the cluster's worst layout shift.
|
|
505
505
|
if (worstShiftEvent) {
|
|
506
506
|
cluster.worstShiftEvent = worstShiftEvent;
|
|
507
|
-
cluster.rawSourceEvent = worstShiftEvent;
|
|
507
|
+
cluster.rawSourceEvent = worstShiftEvent.rawSourceEvent;
|
|
508
508
|
}
|
|
509
509
|
|
|
510
510
|
// layout shifts are already sorted by time ascending.
|
|
@@ -129,8 +129,6 @@ export function generateInsight(
|
|
|
129
129
|
}
|
|
130
130
|
|
|
131
131
|
const initiatorUrl = lcpRequest.args.data.initiator?.url;
|
|
132
|
-
// TODO(b/372319476): Explore using trace event HTMLDocumentParser::FetchQueuedPreloads to determine if the request
|
|
133
|
-
// is discovered by the preload scanner.
|
|
134
132
|
const initiatedByMainDoc =
|
|
135
133
|
lcpRequest?.args.data.initiator?.type === 'parser' && docRequest.args.data.url === initiatorUrl;
|
|
136
134
|
const imgPreloadedOrFoundInHTML = lcpRequest?.args.data.isLinkPreload || initiatedByMainDoc;
|
|
@@ -1078,7 +1078,6 @@ export interface ResourceSendRequest extends Instant {
|
|
|
1078
1078
|
resourceType?: Protocol.Network.ResourceType,
|
|
1079
1079
|
/** Added Feb 2024. https://crrev.com/c/5297615 */
|
|
1080
1080
|
fetchPriorityHint?: FetchPriorityHint,
|
|
1081
|
-
// TODO(crbug.com/1457985): change requestMethod to enum when confirm in the backend code.
|
|
1082
1081
|
requestMethod?: string,
|
|
1083
1082
|
renderBlocking?: RenderBlocking,
|
|
1084
1083
|
initiator?: Initiator,
|