chrome-devtools-frontend 1.0.1473514 → 1.0.1506453
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/.gemini/commands/migrate-e2e-non-hosted.toml +43 -0
- package/.gemini/commands/review.toml +85 -0
- package/.geminiignore +6 -0
- package/.github/workflows/auto-close-prs.yml +30 -0
- package/.stylelintignore +0 -1
- package/.vscode/devtools-workspace-settings.json +2 -1
- package/AUTHORS +3 -0
- package/WATCHLISTS +0 -4
- package/config/gni/devtools_grd_files.gni +92 -47
- package/config/gni/devtools_image_files.gni +8 -0
- package/config/gni/i18n.gni +3 -2
- package/config/owner/COMMON_OWNERS +2 -0
- package/docs/README.md +2 -2
- package/docs/architecture_of_devtools.md +8 -8
- package/docs/committers_policy.md +2 -0
- package/docs/contributing/README.md +29 -5
- package/docs/contributing/changes.md +1 -1
- package/docs/contributing/images/quickstart-vscode-tsversion.png +0 -0
- package/docs/contributing/infrastructure.md +89 -0
- package/docs/cookbook/localization.md +86 -79
- package/docs/get_the_code.md +9 -9
- package/docs/styleguide/ux/components.md +190 -2
- package/docs/styleguide/ux/glossary.md +16 -0
- package/docs/styleguide/ux/images/context-menu-example.png +0 -0
- package/docs/ui_engineering.md +80 -19
- package/eslint.config.mjs +64 -23
- package/extension-api/ExtensionAPI.d.ts +3 -0
- package/extensions/cxx_debugging/CMakeLists.txt +0 -6
- package/extensions/cxx_debugging/e2e/MochaRootHooks.ts +3 -1
- package/extensions/cxx_debugging/e2e/TestDriver.ts +1 -2
- package/extensions/cxx_debugging/src/GlobMatch.ts +1 -1
- package/extensions/cxx_debugging/src/ModuleConfiguration.ts +2 -2
- package/extensions/cxx_debugging/third_party/llvm/README.chromium +2 -0
- package/extensions/cxx_debugging/tools/bootstrap.py +7 -0
- package/front_end/Images/generate-css-vars.js +1 -1
- package/front_end/Images/readme.md +1 -2
- package/front_end/Images/rollup.config.mjs +12 -1
- package/front_end/Images/src/baseline-high-availability.svg +17 -0
- package/front_end/Images/src/baseline-limited-availability.svg +19 -0
- package/front_end/Images/src/baseline-low-availability.svg +31 -0
- package/front_end/Images/src/bucket.svg +4 -0
- package/front_end/Images/src/label-auto.svg +3 -0
- package/front_end/Images/src/shield.svg +3 -0
- package/front_end/Images/src/smart-assistant.svg +3 -1
- package/front_end/Images/src/speculative-loads.svg +1 -0
- package/front_end/Images/src/text-analysis.svg +3 -0
- package/front_end/Tests.js +78 -230
- package/front_end/application_tokens.css +7 -1
- package/front_end/core/common/Base64.test.ts +1 -1
- package/front_end/core/common/Base64.ts +3 -3
- package/front_end/core/common/Color.ts +38 -0
- package/front_end/core/common/Debouncer.ts +3 -3
- package/front_end/core/common/EventTarget.test.ts +1 -0
- package/front_end/core/common/Gzip.test.ts +63 -0
- package/front_end/core/common/Gzip.ts +72 -0
- package/front_end/core/common/ResourceType.ts +29 -29
- package/front_end/core/common/ReturnToPanel.ts +15 -0
- package/front_end/core/common/Revealer.ts +10 -10
- package/front_end/core/common/SettingRegistration.ts +22 -22
- package/front_end/core/common/Settings.test.ts +151 -18
- package/front_end/core/common/Settings.ts +99 -8
- package/front_end/core/common/SimpleHistoryManager.ts +0 -17
- package/front_end/core/common/common.ts +4 -0
- package/front_end/core/host/AidaClient.test.ts +103 -2
- package/front_end/core/host/AidaClient.ts +161 -31
- package/front_end/core/host/InspectorFrontendHost.ts +57 -48
- package/front_end/core/host/InspectorFrontendHostAPI.ts +11 -0
- package/front_end/core/host/ResourceLoader.ts +15 -15
- package/front_end/core/host/UserMetrics.ts +27 -13
- package/front_end/core/i18n/NumberFormatter.test.ts +92 -0
- package/front_end/core/i18n/NumberFormatter.ts +9 -9
- package/front_end/core/i18n/collect-ui-strings.js +3 -3
- package/front_end/core/i18n/time-utilities.ts +3 -14
- package/front_end/core/platform/Brand.ts +8 -1
- package/front_end/core/platform/DevToolsPath.ts +1 -1
- package/front_end/core/platform/StringUtilities.test.ts +54 -1
- package/front_end/core/platform/StringUtilities.ts +34 -8
- package/front_end/core/protocol_client/InspectorBackend.ts +9 -9
- package/front_end/core/root/Runtime.ts +52 -8
- package/front_end/core/sdk/AnimationModel.test.ts +0 -24
- package/front_end/core/sdk/AnimationModel.ts +1 -95
- package/front_end/core/sdk/AutofillModel.ts +8 -2
- package/front_end/core/sdk/CPUProfilerModel.ts +2 -2
- package/front_end/core/sdk/CSSContainerQuery.test.ts +15 -0
- package/front_end/core/sdk/CSSContainerQuery.ts +3 -1
- package/front_end/core/sdk/CSSMatchedStyles.test.ts +2 -1
- package/front_end/core/sdk/CSSMatchedStyles.ts +79 -50
- package/front_end/core/sdk/CSSModel.ts +20 -7
- package/front_end/core/sdk/CSSPropertyParser.test.ts +4 -3
- package/front_end/core/sdk/CSSPropertyParser.ts +12 -4
- package/front_end/core/sdk/CSSPropertyParserMatchers.test.ts +46 -15
- package/front_end/core/sdk/CSSPropertyParserMatchers.ts +131 -58
- package/front_end/core/sdk/CSSRule.ts +44 -44
- package/front_end/core/sdk/CSSStyleSheetHeader.ts +2 -6
- package/front_end/core/sdk/ChildTargetManager.ts +1 -1
- package/front_end/core/sdk/CompilerSourceMappingContentProvider.ts +3 -8
- package/front_end/core/sdk/Connections.ts +17 -30
- package/front_end/core/sdk/ConsoleModel.ts +9 -9
- package/front_end/core/sdk/DOMModel.ts +45 -16
- package/front_end/core/sdk/DebuggerModel.test.ts +7 -4
- package/front_end/core/sdk/DebuggerModel.ts +55 -11
- package/front_end/core/sdk/EmulationModel.ts +13 -0
- package/front_end/core/sdk/EventBreakpointsModel.ts +2 -2
- package/front_end/core/sdk/IOModel.ts +28 -2
- package/front_end/core/sdk/NetworkManager.test.ts +0 -27
- package/front_end/core/sdk/NetworkManager.ts +137 -105
- package/front_end/core/sdk/NetworkRequest.ts +747 -616
- package/front_end/core/sdk/OverlayModel.ts +4 -8
- package/front_end/core/sdk/PageResourceLoader.ts +32 -13
- package/front_end/core/sdk/PreloadingModel.ts +1 -0
- package/front_end/core/sdk/RehydratingConnection.ts +13 -14
- package/front_end/core/sdk/RemoteObject.test.ts +24 -2
- package/front_end/core/sdk/RemoteObject.ts +0 -3
- package/front_end/core/sdk/Resource.ts +0 -5
- package/front_end/core/sdk/RuntimeModel.ts +2 -1
- package/front_end/core/sdk/Script.ts +2 -7
- package/front_end/core/sdk/ServerTiming.ts +12 -12
- package/front_end/core/sdk/ServiceWorkerCacheModel.ts +7 -3
- package/front_end/core/sdk/ServiceWorkerManager.ts +14 -18
- package/front_end/core/sdk/SourceMap.test.ts +55 -73
- package/front_end/core/sdk/SourceMap.ts +14 -11
- package/front_end/core/sdk/SourceMapFunctionRanges.ts +15 -9
- package/front_end/core/sdk/SourceMapScopeChainEntry.test.ts +6 -5
- package/front_end/core/sdk/SourceMapScopeChainEntry.ts +14 -14
- package/front_end/core/sdk/SourceMapScopesInfo.test.ts +232 -317
- package/front_end/core/sdk/SourceMapScopesInfo.ts +26 -25
- package/front_end/core/sdk/StorageBucketsModel.ts +4 -0
- package/front_end/core/sdk/Target.ts +2 -2
- package/front_end/core/sdk/TargetManager.ts +1 -1
- package/front_end/core/sdk/sdk-meta.ts +86 -86
- package/front_end/core/sdk/sdk.ts +0 -2
- package/front_end/design_system_tokens.css +1 -1
- package/front_end/devtools_compatibility.js +201 -177
- package/front_end/entrypoints/inspector_main/InspectorMain.ts +12 -0
- package/front_end/entrypoints/inspector_main/OutermostTargetSelector.ts +3 -3
- package/front_end/entrypoints/inspector_main/RenderingOptions.ts +1 -1
- package/front_end/entrypoints/inspector_main/inspector_main-meta.ts +1 -1
- package/front_end/entrypoints/js_app/js_app.ts +3 -3
- package/front_end/entrypoints/lighthouse_worker/LighthouseWorkerService.ts +1 -1
- package/front_end/entrypoints/main/GlobalAiButton.test.ts +132 -0
- package/front_end/entrypoints/main/GlobalAiButton.ts +141 -0
- package/front_end/entrypoints/main/MainImpl.test.ts +27 -0
- package/front_end/entrypoints/main/MainImpl.ts +179 -47
- package/front_end/entrypoints/main/globalAiButton.css +72 -0
- package/front_end/entrypoints/main/main-meta.ts +82 -42
- package/front_end/entrypoints/main/main.ts +2 -0
- package/front_end/entrypoints/node_app/NodeConnectionsPanel.ts +6 -6
- package/front_end/entrypoints/node_app/NodeMain.ts +8 -7
- package/front_end/entrypoints/node_app/node_app.ts +5 -5
- package/front_end/entrypoints/wasmparser_worker/WasmParserWorker.ts +1 -1
- package/front_end/entrypoints/worker_app/WorkerMain.ts +1 -1
- package/front_end/generated/Deprecation.ts +7 -29
- package/front_end/generated/InspectorBackendCommands.js +183 -167
- package/front_end/generated/SupportedCSSProperties.js +252 -166
- package/front_end/generated/protocol-mapping.d.ts +687 -608
- package/front_end/generated/protocol-proxy-api.d.ts +782 -672
- package/front_end/generated/protocol.ts +11862 -11509
- package/front_end/global_typings/global_defs.d.ts +5 -0
- package/front_end/legacy_test_runner/accessibility_test_runner/accessibility_test_runner.js +1 -1
- package/front_end/legacy_test_runner/application_test_runner/CacheStorageTestRunner.js +1 -1
- package/front_end/legacy_test_runner/application_test_runner/IndexedDBTestRunner.js +1 -1
- package/front_end/legacy_test_runner/application_test_runner/ResourceTreeTestRunner.js +1 -1
- package/front_end/legacy_test_runner/application_test_runner/ResourcesTestRunner.js +1 -1
- package/front_end/legacy_test_runner/application_test_runner/ServiceWorkersTestRunner.js +1 -1
- package/front_end/legacy_test_runner/application_test_runner/StorageTestRunner.js +1 -1
- package/front_end/legacy_test_runner/axe_core_test_runner/axe_core_test_runner.js +1 -1
- package/front_end/legacy_test_runner/bindings_test_runner/AutomappingTestRunner.js +1 -1
- package/front_end/legacy_test_runner/bindings_test_runner/BindingsTestRunner.js +1 -1
- package/front_end/legacy_test_runner/bindings_test_runner/IsolatedFilesystemTestRunner.js +1 -1
- package/front_end/legacy_test_runner/bindings_test_runner/OverridesTestRunner.js +1 -1
- package/front_end/legacy_test_runner/bindings_test_runner/PersistenceTestRunner.js +1 -1
- package/front_end/legacy_test_runner/console_test_runner/console_test_runner.js +20 -20
- package/front_end/legacy_test_runner/coverage_test_runner/coverage_test_runner.js +11 -11
- package/front_end/legacy_test_runner/data_grid_test_runner/data_grid_test_runner.js +1 -1
- package/front_end/legacy_test_runner/device_mode_test_runner/device_mode_test_runner.js +1 -1
- package/front_end/legacy_test_runner/elements_test_runner/EditDOMTestRunner.js +1 -1
- package/front_end/legacy_test_runner/elements_test_runner/ElementsPanelShadowSelectionOnRefreshTestRunner.js +1 -1
- package/front_end/legacy_test_runner/elements_test_runner/ElementsTestRunner.js +6 -80
- package/front_end/legacy_test_runner/elements_test_runner/SetOuterHTMLTestRunner.js +1 -1
- package/front_end/legacy_test_runner/elements_test_runner/StylesUpdateLinksTestRunner.js +1 -1
- package/front_end/legacy_test_runner/extensions_test_runner/ExtensionsNetworkTestRunner.js +1 -1
- package/front_end/legacy_test_runner/extensions_test_runner/ExtensionsTestRunner.js +1 -1
- package/front_end/legacy_test_runner/heap_profiler_test_runner/heap_profiler_test_runner.js +2 -2
- package/front_end/legacy_test_runner/layers_test_runner/layers_test_runner.js +1 -1
- package/front_end/legacy_test_runner/network_test_runner/network_test_runner.js +1 -1
- package/front_end/legacy_test_runner/performance_test_runner/TimelineDataTestRunner.js +1 -1
- package/front_end/legacy_test_runner/performance_test_runner/TimelineTestRunner.js +1 -10
- package/front_end/legacy_test_runner/sdk_test_runner/sdk_test_runner.js +1 -1
- package/front_end/legacy_test_runner/security_test_runner/security_test_runner.js +1 -1
- package/front_end/legacy_test_runner/sources_test_runner/AutocompleteTestRunner.js +1 -1
- package/front_end/legacy_test_runner/sources_test_runner/DebuggerTestRunner.js +4 -4
- package/front_end/legacy_test_runner/sources_test_runner/EditorTestRunner.js +1 -1
- package/front_end/legacy_test_runner/sources_test_runner/LiveEditTestRunner.js +1 -1
- package/front_end/legacy_test_runner/sources_test_runner/SearchTestRunner.js +1 -1
- package/front_end/legacy_test_runner/sources_test_runner/SourcesTestRunner.js +2 -2
- package/front_end/legacy_test_runner/test_runner/TestRunner.js +45 -45
- package/front_end/legacy_test_runner/test_runner/test_runner.js +4 -4
- package/front_end/models/ai_assistance/AiHistoryStorage.snapshot.txt +66 -0
- package/front_end/models/ai_assistance/AiHistoryStorage.test.ts +82 -3
- package/front_end/models/ai_assistance/AiHistoryStorage.ts +95 -6
- package/front_end/models/ai_assistance/AiUtils.ts +1 -1
- package/front_end/models/ai_assistance/ConversationHandler.test.ts +355 -0
- package/front_end/models/ai_assistance/ConversationHandler.ts +380 -0
- package/front_end/models/ai_assistance/ExtensionScope.ts +1 -4
- package/front_end/models/ai_assistance/README.md +79 -0
- package/front_end/models/ai_assistance/agents/AiAgent.test.ts +22 -1
- package/front_end/models/ai_assistance/agents/AiAgent.ts +76 -95
- package/front_end/models/ai_assistance/agents/FileAgent.test.ts +3 -2
- package/front_end/models/ai_assistance/agents/FileAgent.ts +1 -1
- package/front_end/models/ai_assistance/agents/NetworkAgent.ts +7 -7
- package/front_end/models/ai_assistance/agents/PerformanceAgent.test.ts +591 -62
- package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +1111 -117
- package/front_end/models/ai_assistance/agents/PerformanceAnnotationsAgent.test.ts +4 -2
- package/front_end/models/ai_assistance/agents/PerformanceAnnotationsAgent.ts +75 -5
- package/front_end/models/ai_assistance/agents/StylingAgent.test.ts +166 -507
- package/front_end/models/ai_assistance/agents/StylingAgent.ts +125 -319
- package/front_end/models/ai_assistance/ai_assistance.ts +2 -1
- package/front_end/models/ai_assistance/data_formatters/FileFormatter.test.ts +3 -2
- package/front_end/models/ai_assistance/data_formatters/PerformanceInsightFormatter.snapshot.txt +725 -0
- package/front_end/models/ai_assistance/data_formatters/PerformanceInsightFormatter.test.ts +249 -274
- package/front_end/models/ai_assistance/data_formatters/PerformanceInsightFormatter.ts +494 -83
- package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.snapshot.txt +556 -0
- package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.test.ts +92 -0
- package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.ts +359 -0
- package/front_end/models/ai_assistance/debug.ts +1 -1
- package/front_end/models/ai_assistance/injected.ts +1 -1
- package/front_end/models/ai_code_completion/AiCodeCompletion.test.ts +328 -0
- package/front_end/models/ai_code_completion/AiCodeCompletion.ts +289 -0
- package/front_end/models/ai_code_completion/ai_code_completion.ts +6 -0
- package/front_end/models/ai_code_completion/debug.ts +30 -0
- package/front_end/models/autofill_manager/AutofillManager.test.ts +0 -6
- package/front_end/models/autofill_manager/AutofillManager.ts +16 -9
- package/front_end/models/bindings/CSSWorkspaceBinding.ts +0 -4
- package/front_end/models/bindings/CompilerScriptMapping.test.ts +8 -4
- package/front_end/models/bindings/CompilerScriptMapping.ts +12 -5
- package/front_end/models/bindings/DebuggerLanguagePlugins.test.ts +7 -2
- package/front_end/models/bindings/DebuggerLanguagePlugins.ts +33 -24
- package/front_end/models/bindings/DebuggerWorkspaceBinding.test.ts +95 -3
- package/front_end/models/bindings/DebuggerWorkspaceBinding.ts +94 -21
- package/front_end/models/bindings/DefaultScriptMapping.test.ts +3 -2
- package/front_end/models/bindings/FileUtils.test.ts +1 -10
- package/front_end/models/bindings/FileUtils.ts +6 -22
- package/front_end/models/bindings/LiveLocation.ts +0 -5
- package/front_end/models/bindings/PresentationConsoleMessageHelper.test.ts +7 -2
- package/front_end/models/bindings/PresentationConsoleMessageHelper.ts +0 -4
- package/front_end/models/bindings/ResourceMapping.test.ts +7 -2
- package/front_end/models/bindings/ResourceMapping.ts +0 -4
- package/front_end/models/bindings/ResourceScriptMapping.test.ts +2 -1
- package/front_end/models/bindings/ResourceScriptMapping.ts +4 -4
- package/front_end/models/bindings/SASSSourceMapping.ts +1 -1
- package/front_end/models/bindings/StylesSourceMapping.ts +0 -5
- package/front_end/models/bindings/bindings.ts +0 -2
- package/front_end/models/breakpoints/BreakpointManager.test.ts +9 -2
- package/front_end/models/cpu_profile/CPUProfileDataModel.ts +4 -2
- package/front_end/models/elements/ElementUpdateRecord.ts +101 -0
- package/front_end/models/elements/elements.ts +9 -0
- package/front_end/models/emulation/DeviceModeModel.ts +6 -22
- package/front_end/models/emulation/EmulatedDevices.ts +12 -12
- package/front_end/models/extensions/ExtensionAPI.ts +9 -5
- package/front_end/models/extensions/ExtensionPanel.ts +5 -2
- package/front_end/models/extensions/ExtensionServer.test.ts +122 -16
- package/front_end/models/extensions/ExtensionServer.ts +114 -31
- package/front_end/models/extensions/ExtensionView.ts +1 -1
- package/front_end/models/extensions/LanguageExtensionEndpoint.ts +14 -7
- package/front_end/models/har/HARFormat.ts +1 -1
- package/front_end/models/har/Importer.test.ts +40 -0
- package/front_end/models/har/Importer.ts +35 -1
- package/front_end/models/har/Writer.test.ts +3 -2
- package/front_end/models/har/Writer.ts +2 -2
- package/front_end/models/issues_manager/BounceTrackingIssue.ts +1 -1
- package/front_end/models/issues_manager/ClientHintIssue.ts +1 -1
- package/front_end/models/issues_manager/ContentSecurityPolicyIssue.ts +5 -5
- package/front_end/models/issues_manager/CookieIssue.ts +2 -2
- package/front_end/models/issues_manager/CorsIssue.ts +3 -3
- package/front_end/models/issues_manager/CrossOriginEmbedderPolicyIssue.ts +2 -2
- package/front_end/models/issues_manager/{SelectElementAccessibilityIssue.test.ts → ElementAccessibilityIssue.test.ts} +22 -21
- package/front_end/models/issues_manager/{SelectElementAccessibilityIssue.ts → ElementAccessibilityIssue.ts} +29 -21
- package/front_end/models/issues_manager/FederatedAuthRequestIssue.ts +1 -1
- package/front_end/models/issues_manager/FederatedAuthUserInfoRequestIssue.ts +1 -1
- package/front_end/models/issues_manager/GenericIssue.ts +4 -4
- package/front_end/models/issues_manager/HeavyAdIssue.ts +1 -1
- package/front_end/models/issues_manager/Issue.ts +6 -6
- package/front_end/models/issues_manager/IssuesManager.ts +8 -3
- package/front_end/models/issues_manager/LowTextContrastIssue.ts +1 -1
- package/front_end/models/issues_manager/MarkdownIssueDescription.ts +1 -1
- package/front_end/models/issues_manager/MixedContentIssue.ts +1 -1
- package/front_end/models/issues_manager/PartitioningBlobURLIssue.ts +2 -2
- package/front_end/models/issues_manager/QuirksModeIssue.ts +1 -1
- package/front_end/models/issues_manager/SRIMessageSignatureIssue.ts +3 -3
- package/front_end/models/issues_manager/SharedArrayBufferIssue.ts +1 -1
- package/front_end/models/issues_manager/SharedDictionaryIssue.ts +1 -1
- package/front_end/models/issues_manager/UnencodedDigestIssue.test.ts +49 -0
- package/front_end/models/issues_manager/UnencodedDigestIssue.ts +88 -0
- package/front_end/models/issues_manager/descriptions/sriSignatureInputHeaderValueNotInnerList.md +1 -1
- package/front_end/models/issues_manager/descriptions/sriValidationFailedIntegrityMismatch.md +1 -3
- package/front_end/models/issues_manager/descriptions/summaryElementAccessibilityInteractiveContentSummaryDescendant.md +3 -0
- package/front_end/models/issues_manager/descriptions/unencodedDigestIncorrectDigestLength.md +12 -0
- package/front_end/models/issues_manager/descriptions/unencodedDigestIncorrectDigestType.md +17 -0
- package/front_end/models/issues_manager/descriptions/unencodedDigestMalformedDictionary.md +14 -0
- package/front_end/models/issues_manager/descriptions/unencodedDigestUnknownAlgorithm.md +15 -0
- package/front_end/models/issues_manager/descriptions/userReidentificationBlocked.md +1 -1
- package/front_end/models/issues_manager/issues_manager.ts +4 -2
- package/front_end/models/javascript_metadata/NativeFunctions.js +201 -127
- package/front_end/models/live-metrics/web-vitals-injected/OnEachInteraction.ts +1 -1
- package/front_end/models/live-metrics/web-vitals-injected/rollup.config.mjs +1 -1
- package/front_end/models/logs/NetworkLog.ts +74 -83
- package/front_end/models/logs/logs-meta.ts +4 -4
- package/front_end/models/persistence/AutomaticFileSystemManager.test.ts +0 -39
- package/front_end/models/persistence/AutomaticFileSystemManager.ts +14 -21
- package/front_end/models/persistence/EditFileSystemView.ts +6 -6
- package/front_end/models/persistence/IsolatedFileSystem.ts +27 -9
- package/front_end/models/persistence/IsolatedFileSystemManager.ts +16 -3
- package/front_end/models/persistence/NetworkPersistenceManager.ts +7 -3
- package/front_end/models/persistence/PersistenceAction.test.ts +10 -7
- package/front_end/models/persistence/PersistenceActions.ts +26 -15
- package/front_end/models/persistence/PersistenceImpl.test.ts +2 -1
- package/front_end/models/persistence/PersistenceImpl.ts +7 -4
- package/front_end/models/persistence/PersistenceUtils.ts +10 -7
- package/front_end/models/persistence/PlatformFileSystem.ts +11 -2
- package/front_end/models/persistence/WorkspaceSettingsTab.ts +6 -6
- package/front_end/models/persistence/editFileSystemView.css +17 -15
- package/front_end/models/persistence/persistence-meta.ts +10 -10
- package/front_end/models/persistence/workspaceSettingsTab.css +29 -27
- package/front_end/models/project_settings/ProjectSettingsModel.ts +2 -2
- package/front_end/models/source_map_scopes/NamesResolver.test.ts +3 -2
- package/front_end/models/source_map_scopes/NamesResolver.ts +1 -1
- package/front_end/models/source_map_scopes/ScopeChainModel.test.ts +2 -1
- package/front_end/models/stack_trace/README.md +14 -0
- package/front_end/models/stack_trace/StackTrace.ts +35 -0
- package/front_end/models/stack_trace/StackTraceImpl.test.ts +74 -0
- package/front_end/models/stack_trace/StackTraceImpl.ts +82 -0
- package/front_end/models/stack_trace/StackTraceModel.test.ts +296 -0
- package/front_end/models/stack_trace/StackTraceModel.ts +127 -0
- package/front_end/models/stack_trace/Trie.test.ts +129 -0
- package/front_end/models/stack_trace/Trie.ts +154 -0
- package/front_end/models/stack_trace/stack_trace.ts +9 -0
- package/front_end/models/stack_trace/stack_trace_impl.ts +13 -0
- package/front_end/models/text_utils/ContentProvider.ts +1 -3
- package/front_end/models/text_utils/StaticContentProvider.test.ts +1 -1
- package/front_end/models/text_utils/StaticContentProvider.ts +1 -5
- package/front_end/models/text_utils/TextUtils.ts +2 -3
- package/front_end/models/trace/LanternComputationData.ts +1 -0
- package/front_end/models/trace/ModelImpl.ts +18 -7
- package/front_end/models/trace/Processor.test.ts +15 -14
- package/front_end/models/trace/Processor.ts +49 -32
- package/front_end/models/trace/extras/ScriptDuplication.test.ts +13 -10
- package/front_end/models/trace/extras/StackTraceForEvent.test.ts +10 -8
- package/front_end/models/trace/extras/ThirdParties.ts +2 -3
- package/front_end/models/trace/extras/TraceTree.ts +7 -6
- package/front_end/models/trace/extras/extras.ts +0 -2
- package/front_end/models/trace/handlers/AnimationFramesHandler.test.ts +5 -5
- package/front_end/models/trace/handlers/AnimationFramesHandler.ts +10 -0
- package/front_end/models/trace/handlers/ExtensionTraceDataHandler.test.ts +177 -85
- package/front_end/models/trace/handlers/ExtensionTraceDataHandler.ts +28 -27
- package/front_end/models/trace/handlers/FramesHandler.test.ts +2 -7
- package/front_end/models/trace/handlers/FramesHandler.ts +46 -37
- package/front_end/models/trace/handlers/ImagePaintingHandler.test.ts +41 -0
- package/front_end/models/trace/handlers/ImagePaintingHandler.ts +44 -1
- package/front_end/models/trace/handlers/InitiatorsHandler.test.ts +62 -15
- package/front_end/models/trace/handlers/InitiatorsHandler.ts +24 -0
- package/front_end/models/trace/handlers/LayoutShiftsHandler.test.ts +6 -18
- package/front_end/models/trace/handlers/LayoutShiftsHandler.ts +21 -17
- package/front_end/models/trace/handlers/MetaHandler.test.ts +12 -0
- package/front_end/models/trace/handlers/MetaHandler.ts +5 -4
- package/front_end/models/trace/handlers/NetworkRequestsHandler.test.ts +21 -21
- package/front_end/models/trace/handlers/NetworkRequestsHandler.ts +79 -32
- package/front_end/models/trace/handlers/PageLoadMetricsHandler.test.ts +6 -18
- package/front_end/models/trace/handlers/RendererHandler.test.ts +26 -39
- package/front_end/models/trace/handlers/RendererHandler.ts +10 -17
- package/front_end/models/trace/handlers/SamplesHandler.test.ts +3 -4
- package/front_end/models/trace/handlers/SamplesHandler.ts +13 -12
- package/front_end/models/trace/handlers/ScriptsHandler.test.ts +1 -1
- package/front_end/models/trace/handlers/ScriptsHandler.ts +8 -4
- package/front_end/models/trace/handlers/SelectorStatsHandler.test.ts +1 -3
- package/front_end/models/trace/handlers/SelectorStatsHandler.ts +65 -0
- package/front_end/models/trace/handlers/UserInteractionsHandler.test.ts +4 -2
- package/front_end/models/trace/handlers/UserInteractionsHandler.ts +4 -2
- package/front_end/models/trace/handlers/UserTimingsHandler.test.ts +326 -0
- package/front_end/models/trace/handlers/UserTimingsHandler.ts +61 -24
- package/front_end/models/trace/handlers/helpers.test.ts +7 -6
- package/front_end/models/trace/handlers/helpers.ts +19 -14
- package/front_end/models/trace/handlers/types.ts +5 -1
- package/front_end/models/trace/helpers/SamplesIntegrator.test.ts +3 -3
- package/front_end/models/trace/helpers/SamplesIntegrator.ts +24 -33
- package/front_end/models/trace/helpers/SyntheticEvents.ts +2 -2
- package/front_end/models/trace/helpers/Timing.ts +66 -3
- package/front_end/models/trace/helpers/Trace.test.ts +6 -7
- package/front_end/models/trace/helpers/Trace.ts +47 -19
- package/front_end/models/trace/helpers/TreeHelpers.test.ts +0 -8
- package/front_end/models/trace/helpers/TreeHelpers.ts +1 -1
- package/front_end/models/trace/insights/CLSCulprits.test.ts +10 -7
- package/front_end/models/trace/insights/CLSCulprits.ts +85 -23
- package/front_end/models/trace/insights/Cache.ts +12 -0
- package/front_end/models/trace/insights/Common.test.ts +3 -3
- package/front_end/models/trace/insights/Common.ts +56 -22
- package/front_end/models/trace/insights/DOMSize.test.ts +4 -1
- package/front_end/models/trace/insights/DOMSize.ts +48 -1
- package/front_end/models/trace/insights/DocumentLatency.test.ts +5 -1
- package/front_end/models/trace/insights/DocumentLatency.ts +59 -4
- package/front_end/models/trace/insights/DuplicatedJavaScript.test.ts +2 -3
- package/front_end/models/trace/insights/DuplicatedJavaScript.ts +15 -4
- package/front_end/models/trace/insights/FontDisplay.test.ts +1 -1
- package/front_end/models/trace/insights/FontDisplay.ts +8 -0
- package/front_end/models/trace/insights/ForcedReflow.ts +25 -4
- package/front_end/models/trace/insights/{InteractionToNextPaint.test.ts → INPBreakdown.test.ts} +2 -2
- package/front_end/models/trace/insights/{InteractionToNextPaint.ts → INPBreakdown.ts} +63 -16
- package/front_end/models/trace/insights/ImageDelivery.ts +39 -7
- package/front_end/models/trace/insights/LCPBreakdown.test.ts +100 -0
- package/front_end/models/trace/insights/LCPBreakdown.ts +255 -0
- package/front_end/models/trace/insights/LCPDiscovery.ts +84 -8
- package/front_end/models/trace/insights/LegacyJavaScript.ts +14 -4
- package/front_end/models/trace/insights/Models.ts +2 -2
- package/front_end/models/trace/insights/ModernHTTP.test.ts +3 -2
- package/front_end/models/trace/insights/ModernHTTP.ts +35 -18
- package/front_end/models/trace/insights/NetworkDependencyTree.test.ts +10 -1
- package/front_end/models/trace/insights/NetworkDependencyTree.ts +41 -13
- package/front_end/models/trace/insights/RenderBlocking.test.ts +8 -12
- package/front_end/models/trace/insights/RenderBlocking.ts +13 -1
- package/front_end/models/trace/insights/SlowCSSSelector.test.ts +12 -34
- package/front_end/models/trace/insights/SlowCSSSelector.ts +46 -27
- package/front_end/models/trace/insights/ThirdParties.test.ts +1 -1
- package/front_end/models/trace/insights/ThirdParties.ts +36 -0
- package/front_end/models/trace/insights/Viewport.test.ts +16 -1
- package/front_end/models/trace/insights/Viewport.ts +41 -3
- package/front_end/models/trace/insights/types.ts +5 -2
- package/front_end/models/trace/lantern/core/NetworkAnalyzer.test.ts +4 -0
- package/front_end/models/trace/lantern/graph/BaseNode.ts +1 -1
- package/front_end/models/trace/lantern/simulation/SimulationTimingMap.ts +1 -1
- package/front_end/models/trace/trace.ts +0 -2
- package/front_end/models/trace/types/Configuration.ts +8 -0
- package/front_end/models/trace/types/Extensions.ts +24 -3
- package/front_end/models/trace/types/File.ts +5 -2
- package/front_end/models/trace/types/Overlays.ts +140 -0
- package/front_end/models/trace/types/Timing.ts +1 -0
- package/front_end/models/trace/types/TraceEvents.test.ts +2 -1
- package/front_end/models/trace/types/TraceEvents.ts +98 -62
- package/front_end/models/trace/types/types.ts +1 -0
- package/front_end/models/workspace/FileManager.ts +5 -3
- package/front_end/models/{bindings → workspace}/IgnoreListManager.test.ts +11 -7
- package/front_end/models/{bindings → workspace}/IgnoreListManager.ts +36 -33
- package/front_end/models/workspace/UISourceCode.test.ts +18 -17
- package/front_end/models/workspace/UISourceCode.ts +17 -7
- package/front_end/models/workspace/WorkspaceImpl.ts +1 -1
- package/front_end/models/workspace/workspace.ts +2 -0
- package/front_end/models/workspace_diff/WorkspaceDiff.test.ts +2 -0
- package/front_end/models/workspace_diff/WorkspaceDiff.ts +7 -2
- package/front_end/panels/accessibility/ARIAAttributesView.test.ts +101 -0
- package/front_end/panels/accessibility/ARIAAttributesView.ts +16 -4
- package/front_end/panels/accessibility/AXBreadcrumbsPane.ts +12 -9
- package/front_end/panels/accessibility/AccessibilityNodeView.ts +31 -28
- package/front_end/panels/accessibility/AccessibilitySidebarView.ts +8 -12
- package/front_end/panels/accessibility/AccessibilityStrings.ts +87 -87
- package/front_end/panels/accessibility/AccessibilitySubPane.ts +6 -6
- package/front_end/panels/accessibility/SourceOrderView.ts +95 -61
- package/front_end/panels/accessibility/accessibilityProperties.css +5 -0
- package/front_end/panels/ai_assistance/AiAssistancePanel.snapshot.txt +32 -0
- package/front_end/panels/ai_assistance/AiAssistancePanel.test.ts +465 -377
- package/front_end/panels/ai_assistance/AiAssistancePanel.ts +289 -339
- package/front_end/panels/ai_assistance/PatchWidget.ts +30 -29
- package/front_end/panels/ai_assistance/SelectWorkspaceDialog.test.ts +11 -1
- package/front_end/panels/ai_assistance/SelectWorkspaceDialog.ts +29 -19
- package/front_end/panels/ai_assistance/aiAssistancePanel.css +1 -0
- package/front_end/panels/ai_assistance/ai_assistance-meta.ts +40 -20
- package/front_end/panels/ai_assistance/components/ChatView.test.ts +1 -0
- package/front_end/panels/ai_assistance/components/ChatView.ts +55 -44
- package/front_end/panels/ai_assistance/components/ExploreWidget.ts +10 -24
- package/front_end/panels/ai_assistance/components/UserActionRow.test.ts +4 -0
- package/front_end/panels/ai_assistance/components/UserActionRow.ts +25 -3
- package/front_end/panels/ai_assistance/components/chatView.css +0 -9
- package/front_end/panels/ai_assistance/components/exploreWidget.css +104 -102
- package/front_end/panels/ai_assistance/components/userActionRow.css +95 -94
- package/front_end/panels/ai_assistance/selectWorkspaceDialog.css +70 -69
- package/front_end/panels/animation/AnimationGroupPreviewUI.ts +1 -10
- package/front_end/panels/animation/AnimationTimeline.test.ts +6 -13
- package/front_end/panels/animation/AnimationTimeline.ts +183 -169
- package/front_end/panels/animation/AnimationUI.ts +4 -4
- package/front_end/panels/animation/animation.ts +0 -2
- package/front_end/panels/animation/animationTimeline.css +0 -67
- package/front_end/panels/application/AppManifestView.test.ts +21 -0
- package/front_end/panels/application/AppManifestView.ts +158 -139
- package/front_end/panels/application/ApplicationPanelSidebar.test.ts +13 -8
- package/front_end/panels/application/ApplicationPanelSidebar.ts +53 -54
- package/front_end/panels/application/BackForwardCacheTreeElement.ts +1 -1
- package/front_end/panels/application/BackgroundServiceView.test.ts +4 -8
- package/front_end/panels/application/BackgroundServiceView.ts +46 -44
- package/front_end/panels/application/CookieItemsView.ts +13 -14
- package/front_end/panels/application/DOMStorageItemsView.ts +5 -5
- package/front_end/panels/application/ExtensionStorageItemsView.ts +3 -3
- package/front_end/panels/application/IndexedDBModel.test.ts +2 -2
- package/front_end/panels/application/IndexedDBModel.ts +3 -0
- package/front_end/panels/application/IndexedDBViews.ts +58 -32
- package/front_end/panels/application/InterestGroupStorageModel.ts +3 -0
- package/front_end/panels/application/InterestGroupStorageView.ts +4 -4
- package/front_end/panels/application/InterestGroupTreeElement.ts +1 -1
- package/front_end/panels/application/KeyValueStorageItemsView.ts +10 -10
- package/front_end/panels/application/OpenedWindowDetailsView.ts +18 -18
- package/front_end/panels/application/PreloadingTreeElement.ts +5 -5
- package/front_end/panels/application/ReportingApiTreeElement.ts +1 -1
- package/front_end/panels/application/ReportingApiView.test.ts +161 -30
- package/front_end/panels/application/ReportingApiView.ts +153 -50
- package/front_end/panels/application/ServiceWorkerCacheTreeElement.ts +5 -5
- package/front_end/panels/application/ServiceWorkerCacheViews.ts +20 -17
- package/front_end/panels/application/ServiceWorkerUpdateCycleView.ts +7 -7
- package/front_end/panels/application/ServiceWorkersView.ts +40 -76
- package/front_end/panels/application/SharedStorageEventsView.test.ts +2 -2
- package/front_end/panels/application/SharedStorageEventsView.ts +10 -20
- package/front_end/panels/application/SharedStorageItemsView.ts +11 -11
- package/front_end/panels/application/SharedStorageListTreeElement.ts +1 -1
- package/front_end/panels/application/SharedStorageModel.ts +3 -0
- package/front_end/panels/application/StorageBucketsTreeElement.test.ts +5 -4
- package/front_end/panels/application/StorageBucketsTreeElement.ts +4 -4
- package/front_end/panels/application/StorageItemsToolbar.ts +7 -7
- package/front_end/panels/application/StorageView.test.ts +5 -1
- package/front_end/panels/application/StorageView.ts +15 -13
- package/front_end/panels/application/application-meta.ts +7 -7
- package/front_end/panels/application/application.ts +0 -2
- package/front_end/panels/application/components/BackForwardCacheStrings.ts +5 -0
- package/front_end/panels/application/components/BackForwardCacheView.ts +11 -37
- package/front_end/panels/application/components/BounceTrackingMitigationsView.ts +1 -0
- package/front_end/panels/application/components/EndpointsGrid.ts +6 -2
- package/front_end/panels/application/components/FrameDetailsView.test.ts +4 -2
- package/front_end/panels/application/components/FrameDetailsView.ts +88 -57
- package/front_end/panels/application/components/InterestGroupAccessGrid.ts +9 -10
- package/front_end/panels/application/components/OriginTrialTreeView.ts +13 -22
- package/front_end/panels/application/components/PermissionsPolicySection.ts +11 -16
- package/front_end/panels/application/components/ProtocolHandlersView.ts +10 -10
- package/front_end/panels/application/components/ReportsGrid.ts +10 -11
- package/front_end/panels/application/components/SharedStorageAccessGrid.test.ts +4 -4
- package/front_end/panels/application/components/SharedStorageAccessGrid.ts +107 -101
- package/front_end/panels/application/components/SharedStorageMetadataView.ts +8 -8
- package/front_end/panels/application/components/StackTrace.ts +6 -12
- package/front_end/panels/application/components/StorageMetadataView.ts +22 -26
- package/front_end/panels/application/components/TrustTokensView.ts +3 -3
- package/front_end/panels/application/components/frameDetailsReportView.css +1 -1
- package/front_end/panels/application/components/sharedStorageAccessGrid.css +19 -17
- package/front_end/panels/application/preloading/PreloadingView.ts +29 -24
- package/front_end/panels/application/preloading/components/MismatchedPreloadingGrid.ts +9 -9
- package/front_end/panels/application/preloading/components/PreloadingDetailsReportView.ts +22 -22
- package/front_end/panels/application/preloading/components/PreloadingDisabledInfobar.ts +28 -29
- package/front_end/panels/application/preloading/components/PreloadingGrid.ts +5 -7
- package/front_end/panels/application/preloading/components/PreloadingMismatchedHeadersGrid.test.ts +2 -2
- package/front_end/panels/application/preloading/components/PreloadingMismatchedHeadersGrid.ts +4 -4
- package/front_end/panels/application/preloading/components/PreloadingString.ts +34 -34
- package/front_end/panels/application/preloading/components/RuleSetDetailsView.test.ts +28 -1
- package/front_end/panels/application/preloading/components/RuleSetDetailsView.ts +4 -10
- package/front_end/panels/application/preloading/components/RuleSetGrid.test.ts +21 -0
- package/front_end/panels/application/preloading/components/RuleSetGrid.ts +10 -10
- package/front_end/panels/application/preloading/components/UsedPreloadingView.ts +22 -23
- package/front_end/panels/application/resourcesSidebar.css +0 -4
- package/front_end/panels/autofill/AutofillView.test.ts +188 -259
- package/front_end/panels/autofill/AutofillView.ts +207 -217
- package/front_end/panels/autofill/autofill-meta.ts +3 -4
- package/front_end/panels/autofill/autofillView.css +85 -82
- package/front_end/panels/browser_debugger/CategorizedBreakpointsSidebarPane.test.ts +179 -0
- package/front_end/panels/browser_debugger/CategorizedBreakpointsSidebarPane.ts +146 -35
- package/front_end/panels/browser_debugger/DOMBreakpointsSidebarPane.ts +27 -27
- package/front_end/panels/browser_debugger/ObjectEventListenersSidebarPane.ts +3 -2
- package/front_end/panels/browser_debugger/XHRBreakpointsSidebarPane.ts +16 -14
- package/front_end/panels/browser_debugger/browser_debugger-meta.ts +17 -17
- package/front_end/panels/browser_debugger/browser_debugger.ts +2 -0
- package/front_end/panels/changes/ChangesSidebar.ts +7 -7
- package/front_end/panels/changes/ChangesView.ts +6 -5
- package/front_end/panels/changes/CombinedDiffView.test.ts +2 -0
- package/front_end/panels/changes/CombinedDiffView.ts +2 -2
- package/front_end/panels/common/AiCodeCompletionDisclaimer.test.ts +57 -0
- package/front_end/panels/common/AiCodeCompletionDisclaimer.ts +186 -0
- package/front_end/panels/common/AiCodeCompletionSummaryToolbar.test.ts +85 -0
- package/front_end/panels/common/AiCodeCompletionSummaryToolbar.ts +139 -0
- package/front_end/panels/common/AiCodeCompletionTeaser.test.ts +98 -0
- package/front_end/panels/common/AiCodeCompletionTeaser.ts +258 -0
- package/front_end/panels/common/FreDialog.ts +139 -0
- package/front_end/panels/common/aiCodeCompletionDisclaimer.css +57 -0
- package/front_end/panels/common/aiCodeCompletionSummaryToolbar.css +101 -0
- package/front_end/panels/common/aiCodeCompletionTeaser.css +42 -0
- package/front_end/panels/common/common.css +0 -83
- package/front_end/panels/common/common.ts +8 -107
- package/front_end/panels/common/freDialog.css +88 -0
- package/front_end/panels/console/ConsoleContextSelector.ts +5 -5
- package/front_end/panels/console/ConsoleFormat.test.ts +1 -1
- package/front_end/panels/console/ConsolePanel.ts +1 -2
- package/front_end/panels/console/ConsolePinPane.ts +9 -9
- package/front_end/panels/console/ConsolePrompt.test.ts +47 -1
- package/front_end/panels/console/ConsolePrompt.ts +188 -19
- package/front_end/panels/console/ConsoleSidebar.test.ts +130 -0
- package/front_end/panels/console/ConsoleSidebar.ts +170 -207
- package/front_end/panels/console/ConsoleView.test.ts +4 -4
- package/front_end/panels/console/ConsoleView.ts +146 -54
- package/front_end/panels/console/ConsoleViewMessage.test.ts +1 -1
- package/front_end/panels/console/ConsoleViewMessage.ts +66 -71
- package/front_end/panels/console/console-meta.ts +27 -27
- package/front_end/panels/console/consoleSidebar.css +2 -0
- package/front_end/panels/console/consoleView.css +22 -15
- package/front_end/panels/console_counters/WarningErrorCounter.ts +133 -100
- package/front_end/panels/coverage/CoverageDecorationManager.test.ts +2 -1
- package/front_end/panels/coverage/CoverageListView.ts +30 -30
- package/front_end/panels/coverage/CoverageView.test.ts +3 -2
- package/front_end/panels/coverage/CoverageView.ts +35 -34
- package/front_end/panels/coverage/coverage-meta.ts +7 -7
- package/front_end/panels/css_overview/CSSOverviewCompletedView.ts +49 -49
- package/front_end/panels/css_overview/CSSOverviewPanel.test.ts +3 -3
- package/front_end/panels/css_overview/CSSOverviewPanel.ts +1 -1
- package/front_end/panels/css_overview/CSSOverviewProcessingView.ts +3 -3
- package/front_end/panels/css_overview/CSSOverviewSidebarPanel.ts +3 -3
- package/front_end/panels/css_overview/CSSOverviewStartView.ts +8 -8
- package/front_end/panels/css_overview/CSSOverviewUnusedDeclarations.ts +7 -7
- package/front_end/panels/css_overview/cssOverviewCompletedView.css +289 -287
- package/front_end/panels/css_overview/cssOverviewSidebarPanel.css +43 -42
- package/front_end/panels/css_overview/cssOverviewStartView.css +68 -66
- package/front_end/panels/css_overview/css_overview-meta.ts +2 -2
- package/front_end/panels/developer_resources/DeveloperResourcesListView.ts +14 -14
- package/front_end/panels/developer_resources/DeveloperResourcesView.ts +5 -5
- package/front_end/panels/developer_resources/developerResourcesListView.css +19 -18
- package/front_end/panels/developer_resources/developerResourcesView.css +32 -30
- package/front_end/panels/elements/AccessibilityTreeView.ts +2 -1
- package/front_end/panels/elements/CSSRuleValidator.test.ts +39 -0
- package/front_end/panels/elements/CSSRuleValidator.ts +41 -37
- package/front_end/panels/elements/CSSRuleValidatorHelper.ts +8 -0
- package/front_end/panels/elements/CSSValueTraceView.test.ts +2 -1
- package/front_end/panels/elements/CSSValueTraceView.ts +1 -2
- package/front_end/panels/elements/ClassesPaneWidget.ts +5 -3
- package/front_end/panels/elements/ColorSwatchPopoverIcon.ts +18 -9
- package/front_end/panels/elements/ComputedStyleWidget.ts +4 -3
- package/front_end/panels/elements/DOMLinkifier.ts +6 -4
- package/front_end/panels/elements/DOMTreeWidget.test.ts +58 -0
- package/front_end/panels/elements/ElementIssueUtils.ts +14 -9
- package/front_end/panels/elements/ElementStatePaneWidget.ts +3 -3
- package/front_end/panels/elements/ElementsPanel.test.ts +69 -2
- package/front_end/panels/elements/ElementsPanel.ts +105 -187
- package/front_end/panels/elements/ElementsSidebarPane.ts +1 -1
- package/front_end/panels/elements/ElementsTreeElement.test.ts +401 -0
- package/front_end/panels/elements/ElementsTreeElement.ts +434 -82
- package/front_end/panels/elements/ElementsTreeOutline.test.ts +9 -6
- package/front_end/panels/elements/ElementsTreeOutline.ts +425 -258
- package/front_end/panels/elements/ElementsTreeOutlineRenderer.ts +80 -0
- package/front_end/panels/elements/EventListenersWidget.test.ts +129 -0
- package/front_end/panels/elements/EventListenersWidget.ts +112 -78
- package/front_end/panels/elements/ImagePreviewPopover.ts +1 -1
- package/front_end/panels/elements/InspectElementModeController.test.ts +77 -2
- package/front_end/panels/elements/InspectElementModeController.ts +13 -2
- package/front_end/panels/elements/LayersWidget.ts +95 -63
- package/front_end/panels/elements/{components/LayoutPane.test.ts → LayoutPane.test.ts} +60 -49
- package/front_end/panels/elements/LayoutPane.ts +593 -0
- package/front_end/panels/elements/MarkerDecorator.ts +2 -2
- package/front_end/panels/elements/MetricsSidebarPane.ts +6 -6
- package/front_end/panels/elements/NodeStackTraceWidget.ts +16 -14
- package/front_end/panels/elements/PlatformFontsWidget.ts +8 -8
- package/front_end/panels/elements/PropertiesWidget.ts +2 -2
- package/front_end/panels/elements/PropertyRenderer.test.ts +1 -1
- package/front_end/panels/elements/PropertyRenderer.ts +8 -11
- package/front_end/panels/elements/ShortcutTreeElement.ts +157 -0
- package/front_end/panels/elements/StyleEditorWidget.ts +1 -1
- package/front_end/panels/elements/StylePropertiesSection.test.ts +10 -10
- package/front_end/panels/elements/StylePropertiesSection.ts +42 -44
- package/front_end/panels/elements/StylePropertyHighlighter.test.ts +32 -21
- package/front_end/panels/elements/StylePropertyHighlighter.ts +9 -11
- package/front_end/panels/elements/StylePropertyTreeElement.test.ts +111 -53
- package/front_end/panels/elements/StylePropertyTreeElement.ts +166 -100
- package/front_end/panels/elements/StylesSidebarPane.ts +47 -48
- package/front_end/panels/elements/TopLayerContainer.ts +8 -7
- package/front_end/panels/elements/WebCustomData.test.ts +2 -2
- package/front_end/panels/elements/components/AccessibilityTreeNode.ts +1 -1
- package/front_end/panels/elements/components/AdornerManager.ts +15 -0
- package/front_end/panels/elements/components/CSSHintDetailsView.ts +1 -1
- package/front_end/panels/elements/components/CSSPropertyDocsView.test.ts +101 -2
- package/front_end/panels/elements/components/CSSPropertyDocsView.ts +188 -5
- package/front_end/panels/elements/components/CSSPropertyIconResolver.test.ts +1 -1
- package/front_end/panels/elements/components/CSSPropertyIconResolver.ts +2 -2
- package/front_end/panels/elements/components/CSSVariableValueView.ts +5 -5
- package/front_end/panels/elements/components/ElementsBreadcrumbs.ts +2 -7
- package/front_end/panels/elements/components/ElementsTreeExpandButton.ts +1 -1
- package/front_end/panels/elements/components/QueryContainer.ts +1 -4
- package/front_end/panels/elements/components/components.ts +0 -4
- package/front_end/panels/elements/components/cssPropertyDocsView.css +12 -1
- package/front_end/panels/elements/components/cssVariableValueView.css +1 -0
- package/front_end/panels/elements/domLinkifier.css +36 -35
- package/front_end/panels/elements/elementStatePaneWidget.css +46 -45
- package/front_end/panels/elements/elements-meta.ts +4 -13
- package/front_end/panels/elements/elements.ts +4 -3
- package/front_end/panels/elements/elementsTreeOutline.css +2 -1
- package/front_end/panels/elements/layersWidget.css +2 -11
- package/front_end/panels/elements/layoutPane.css +145 -0
- package/front_end/panels/elements/metricsSidebarPane.css +1 -1
- package/front_end/panels/elements/nodeStackTraceWidget.css +5 -4
- package/front_end/panels/elements/platformFontsWidget.css +32 -31
- package/front_end/panels/elements/stylePropertiesTreeOutline.css +2 -2
- package/front_end/panels/elements/stylesSidebarPane.css +1 -0
- package/front_end/panels/emulation/DeviceModeToolbar.ts +13 -50
- package/front_end/panels/emulation/DeviceModeView.ts +3 -4
- package/front_end/panels/emulation/InspectedPagePlaceholder.ts +1 -1
- package/front_end/panels/emulation/MediaQueryInspector.ts +4 -2
- package/front_end/panels/emulation/emulation-meta.ts +7 -7
- package/front_end/panels/event_listeners/EventListenersView.test.ts +4 -4
- package/front_end/panels/event_listeners/EventListenersView.ts +34 -31
- package/front_end/panels/explain/PromptBuilder.test.ts +7 -2
- package/front_end/panels/explain/PromptBuilder.ts +3 -1
- package/front_end/panels/explain/components/ConsoleInsight.test.ts +14 -10
- package/front_end/panels/explain/components/ConsoleInsight.ts +13 -34
- package/front_end/panels/explain/explain-meta.ts +3 -3
- package/front_end/panels/issues/AffectedBlockedByResponseView.ts +4 -4
- package/front_end/panels/issues/AffectedCookiesView.ts +6 -6
- package/front_end/panels/issues/AffectedDescendantsWithinSelectElementView.ts +6 -6
- package/front_end/panels/issues/AffectedDirectivesView.ts +9 -9
- package/front_end/panels/issues/AffectedDocumentsInQuirksModeView.ts +4 -4
- package/front_end/panels/issues/AffectedElementsView.ts +1 -1
- package/front_end/panels/issues/AffectedElementsWithLowContrastView.ts +6 -6
- package/front_end/panels/issues/AffectedHeavyAdView.ts +7 -7
- package/front_end/panels/issues/AffectedMetadataAllowedSitesView.ts +1 -1
- package/front_end/panels/issues/AffectedResourcesView.ts +6 -6
- package/front_end/panels/issues/AffectedSharedArrayBufferIssueDetailsView.ts +10 -10
- package/front_end/panels/issues/AffectedSourcesView.ts +1 -1
- package/front_end/panels/issues/AffectedTrackingSitesView.ts +1 -1
- package/front_end/panels/issues/CorsIssueDetailsView.ts +27 -27
- package/front_end/panels/issues/GenericIssueDetailsView.ts +3 -3
- package/front_end/panels/issues/HiddenIssuesRow.ts +55 -29
- package/front_end/panels/issues/IssueAggregator.ts +5 -11
- package/front_end/panels/issues/IssueKindView.ts +2 -2
- package/front_end/panels/issues/IssueView.ts +13 -13
- package/front_end/panels/issues/IssuesPane.ts +5 -4
- package/front_end/panels/issues/components/HideIssuesMenu.ts +1 -1
- package/front_end/panels/issues/issues-meta.ts +2 -2
- package/front_end/panels/js_timeline/js_timeline-meta.ts +6 -6
- package/front_end/panels/layer_viewer/LayerDetailsView.ts +43 -41
- package/front_end/panels/layer_viewer/LayerTreeOutline.ts +7 -7
- package/front_end/panels/layer_viewer/LayerViewHost.ts +1 -1
- package/front_end/panels/layer_viewer/Layers3DView.ts +19 -13
- package/front_end/panels/layer_viewer/PaintProfilerView.ts +9 -9
- package/front_end/panels/layer_viewer/TransformController.ts +14 -8
- package/front_end/panels/layer_viewer/layer_viewer-meta.ts +9 -9
- package/front_end/panels/layers/LayersPanel.ts +3 -3
- package/front_end/panels/layers/layers-meta.ts +2 -2
- package/front_end/panels/lighthouse/LighthouseController.ts +27 -27
- package/front_end/panels/lighthouse/LighthousePanel.ts +7 -7
- package/front_end/panels/lighthouse/LighthouseProtocolService.ts +31 -33
- package/front_end/panels/lighthouse/LighthouseReportRenderer.ts +4 -2
- package/front_end/panels/lighthouse/LighthouseReportSelector.ts +2 -4
- package/front_end/panels/lighthouse/LighthouseStartView.ts +4 -3
- package/front_end/panels/lighthouse/LighthouseStatusView.ts +31 -31
- package/front_end/panels/lighthouse/lighthouse-meta.ts +1 -1
- package/front_end/panels/lighthouse/lighthousePanel.css +9 -0
- package/front_end/panels/linear_memory_inspector/LinearMemoryInspectorController.ts +2 -2
- package/front_end/panels/linear_memory_inspector/LinearMemoryInspectorPane.ts +5 -6
- package/front_end/panels/linear_memory_inspector/components/LinearMemoryHighlightChipList.ts +6 -10
- package/front_end/panels/linear_memory_inspector/components/LinearMemoryInspector.ts +3 -3
- package/front_end/panels/linear_memory_inspector/components/LinearMemoryNavigator.ts +6 -6
- package/front_end/panels/linear_memory_inspector/components/LinearMemoryValueInterpreter.ts +2 -2
- package/front_end/panels/linear_memory_inspector/components/ValueInterpreterDisplay.ts +6 -7
- package/front_end/panels/linear_memory_inspector/components/ValueInterpreterDisplayUtils.ts +1 -1
- package/front_end/panels/linear_memory_inspector/components/ValueInterpreterSettings.ts +1 -1
- package/front_end/panels/linear_memory_inspector/linear_memory_inspector-meta.ts +2 -2
- package/front_end/panels/media/EventDisplayTable.ts +5 -7
- package/front_end/panels/media/EventTimelineView.ts +4 -4
- package/front_end/panels/media/MainView.test.ts +1 -1
- package/front_end/panels/media/MainView.ts +4 -4
- package/front_end/panels/media/MediaModel.ts +2 -2
- package/front_end/panels/media/PlayerDetailView.ts +8 -8
- package/front_end/panels/media/PlayerListView.ts +8 -8
- package/front_end/panels/media/PlayerMessagesView.ts +15 -17
- package/front_end/panels/media/PlayerPropertiesView.ts +66 -51
- package/front_end/panels/media/TickingFlameChart.ts +6 -5
- package/front_end/panels/media/media-meta.ts +3 -3
- package/front_end/panels/mobile_throttling/CalibrationController.ts +3 -4
- package/front_end/panels/mobile_throttling/MobileThrottlingSelector.ts +3 -3
- package/front_end/panels/mobile_throttling/NetworkPanelIndicator.ts +4 -4
- package/front_end/panels/mobile_throttling/NetworkThrottlingSelector.ts +189 -51
- package/front_end/panels/mobile_throttling/ThrottlingManager.test.ts +37 -1
- package/front_end/panels/mobile_throttling/ThrottlingManager.ts +114 -126
- package/front_end/panels/mobile_throttling/ThrottlingPresets.ts +8 -8
- package/front_end/panels/mobile_throttling/ThrottlingSettingsTab.test.ts +115 -0
- package/front_end/panels/mobile_throttling/ThrottlingSettingsTab.ts +178 -143
- package/front_end/panels/mobile_throttling/mobile_throttling-meta.ts +6 -6
- package/front_end/panels/mobile_throttling/throttlingSettingsTab.css +30 -36
- package/front_end/panels/network/BinaryResourceView.ts +7 -7
- package/front_end/panels/network/BlockedURLsPane.ts +18 -17
- package/front_end/panels/network/EventSourceMessagesView.ts +9 -10
- package/front_end/panels/network/NetworkConfigView.test.ts +35 -0
- package/front_end/panels/network/NetworkConfigView.ts +19 -17
- package/front_end/panels/network/NetworkDataGridNode.test.ts +19 -8
- package/front_end/panels/network/NetworkDataGridNode.ts +129 -90
- package/front_end/panels/network/NetworkItemView.test.ts +3 -3
- package/front_end/panels/network/NetworkItemView.ts +79 -79
- package/front_end/panels/network/NetworkLogView.test.ts +61 -23
- package/front_end/panels/network/NetworkLogView.ts +207 -130
- package/front_end/panels/network/NetworkLogViewColumns.ts +60 -63
- package/front_end/panels/network/NetworkManageCustomHeadersView.ts +5 -5
- package/front_end/panels/network/NetworkPanel.test.ts +3 -3
- package/front_end/panels/network/NetworkPanel.ts +69 -68
- package/front_end/panels/network/NetworkSearchScope.ts +1 -1
- package/front_end/panels/network/NetworkTimeCalculator.ts +35 -40
- package/front_end/panels/network/NetworkWaterfallColumn.ts +2 -12
- package/front_end/panels/network/RequestCookiesView.ts +10 -11
- package/front_end/panels/network/RequestHTMLView.ts +2 -2
- package/front_end/panels/network/RequestInitiatorView.ts +16 -16
- package/front_end/panels/network/RequestPayloadView.ts +12 -13
- package/front_end/panels/network/RequestPreviewView.ts +3 -4
- package/front_end/panels/network/RequestResponseView.test.ts +36 -0
- package/front_end/panels/network/RequestResponseView.ts +5 -5
- package/front_end/panels/network/RequestTimingView.ts +54 -54
- package/front_end/panels/network/ResourceChunkView.ts +13 -13
- package/front_end/panels/network/ResourceDirectSocketChunkView.ts +26 -17
- package/front_end/panels/network/ResourceWebSocketFrameView.ts +9 -9
- package/front_end/panels/network/SignedExchangeInfoView.ts +24 -24
- package/front_end/panels/network/binaryResourceView.css +1 -0
- package/front_end/panels/network/components/DirectSocketConnectionView.ts +18 -16
- package/front_end/panels/network/components/HeaderSectionRow.ts +17 -42
- package/front_end/panels/network/components/RequestHeaderSection.ts +6 -11
- package/front_end/panels/network/components/RequestHeadersView.css +2 -2
- package/front_end/panels/network/components/RequestHeadersView.test.ts +5 -2
- package/front_end/panels/network/components/RequestHeadersView.ts +24 -34
- package/front_end/panels/network/components/RequestTrustTokensView.ts +19 -23
- package/front_end/panels/network/components/ResponseHeaderSection.ts +16 -15
- package/front_end/panels/network/components/WebBundleInfoView.ts +4 -9
- package/front_end/panels/network/network-meta.ts +27 -27
- package/front_end/panels/network/networkConfigView.css +13 -6
- package/front_end/panels/network/networkLogView.css +1 -1
- package/front_end/panels/network/networkPanel.css +3 -2
- package/front_end/panels/network/requestHTMLView.css +9 -8
- package/front_end/panels/network/resourceChunkView.css +21 -28
- package/front_end/panels/performance_monitor/PerformanceMonitor.test.ts +121 -6
- package/front_end/panels/performance_monitor/PerformanceMonitor.ts +252 -168
- package/front_end/panels/performance_monitor/performanceMonitor.css +7 -9
- package/front_end/panels/performance_monitor/performance_monitor-meta.ts +7 -7
- package/front_end/panels/profiler/HeapDetachedElementsDataGrid.ts +19 -52
- package/front_end/panels/profiler/HeapDetachedElementsView.ts +9 -6
- package/front_end/panels/profiler/HeapProfileView.ts +24 -24
- package/front_end/panels/profiler/HeapProfilerPanel.ts +1 -1
- package/front_end/panels/profiler/HeapSnapshotDataGrids.ts +20 -20
- package/front_end/panels/profiler/HeapSnapshotGridNodes.ts +27 -27
- package/front_end/panels/profiler/HeapSnapshotProxy.ts +2 -6
- package/front_end/panels/profiler/HeapSnapshotView.ts +59 -56
- package/front_end/panels/profiler/HeapTimelineOverview.ts +1 -2
- package/front_end/panels/profiler/IsolateSelector.ts +16 -16
- package/front_end/panels/profiler/LiveHeapProfileView.ts +14 -14
- package/front_end/panels/profiler/ModuleUIStrings.ts +26 -26
- package/front_end/panels/profiler/ProfileDataGrid.ts +5 -5
- package/front_end/panels/profiler/ProfileHeader.ts +0 -9
- package/front_end/panels/profiler/ProfileLauncherView.ts +6 -6
- package/front_end/panels/profiler/ProfileSidebarTreeElement.ts +1 -1
- package/front_end/panels/profiler/ProfileView.ts +23 -20
- package/front_end/panels/profiler/ProfilesPanel.ts +9 -9
- package/front_end/panels/profiler/heapProfiler.css +8 -0
- package/front_end/panels/profiler/profiler-meta.ts +12 -12
- package/front_end/panels/protocol_monitor/JSONEditor.test.ts +2 -2
- package/front_end/panels/protocol_monitor/JSONEditor.ts +36 -19
- package/front_end/panels/protocol_monitor/ProtocolMonitor.test.ts +105 -103
- package/front_end/panels/protocol_monitor/ProtocolMonitor.ts +24 -25
- package/front_end/panels/protocol_monitor/protocolMonitor.css +15 -9
- package/front_end/panels/protocol_monitor/protocol_monitor-meta.ts +1 -1
- package/front_end/panels/recorder/RecorderController.test.ts +9 -2
- package/front_end/panels/recorder/RecorderController.ts +82 -85
- package/front_end/panels/recorder/components/CreateRecordingView.ts +2 -2
- package/front_end/panels/recorder/components/RecordingListView.test.ts +42 -53
- package/front_end/panels/recorder/components/RecordingListView.ts +141 -125
- package/front_end/panels/recorder/components/RecordingView.test.ts +73 -122
- package/front_end/panels/recorder/components/RecordingView.ts +912 -929
- package/front_end/panels/recorder/components/StepEditor.ts +13 -13
- package/front_end/panels/recorder/components/StepView.ts +23 -24
- package/front_end/panels/recorder/components/recordingListView.css +76 -75
- package/front_end/panels/recorder/components/recordingView.css +303 -308
- package/front_end/panels/recorder/components/stepView.css +197 -196
- package/front_end/panels/recorder/components/timelineSection.css +1 -1
- package/front_end/panels/recorder/injected/rollup.config.mjs +1 -1
- package/front_end/panels/recorder/injected/selectors/ARIASelector.ts +2 -2
- package/front_end/panels/recorder/injected/selectors/CSSSelector.ts +4 -4
- package/front_end/panels/recorder/injected/selectors/PierceSelector.ts +2 -2
- package/front_end/panels/recorder/injected/selectors/TextSelector.ts +2 -2
- package/front_end/panels/recorder/injected/selectors/XPath.ts +3 -3
- package/front_end/panels/recorder/models/RecorderSettings.ts +0 -1
- package/front_end/panels/recorder/models/RecordingPlayer.test.ts +48 -68
- package/front_end/panels/recorder/models/RecordingPlayer.ts +9 -9
- package/front_end/panels/recorder/models/RecordingSession.ts +3 -3
- package/front_end/panels/recorder/recorder-meta.ts +5 -5
- package/front_end/panels/recorder/recorderController.css +3 -3
- package/front_end/panels/screencast/ScreencastApp.ts +1 -1
- package/front_end/panels/screencast/ScreencastView.ts +13 -18
- package/front_end/panels/search/SearchResultsPane.ts +8 -8
- package/front_end/panels/search/SearchView.test.ts +2 -2
- package/front_end/panels/search/SearchView.ts +130 -127
- package/front_end/panels/search/searchResultsPane.css +2 -2
- package/front_end/panels/search/searchView.css +2 -2
- package/front_end/panels/security/CookieControlsView.ts +27 -27
- package/front_end/panels/security/CookieReportView.ts +40 -73
- package/front_end/panels/security/IPProtectionTreeElement.ts +21 -0
- package/front_end/panels/security/IPProtectionView.ts +179 -0
- package/front_end/panels/security/SecurityModel.ts +10 -10
- package/front_end/panels/security/SecurityPanel.test.ts +22 -0
- package/front_end/panels/security/SecurityPanel.ts +107 -107
- package/front_end/panels/security/SecurityPanelSidebar.ts +27 -11
- package/front_end/panels/security/ipProtectionView.css +109 -0
- package/front_end/panels/security/security-meta.ts +4 -4
- package/front_end/panels/security/security.ts +2 -0
- package/front_end/panels/sensors/LocationsSettingsTab.ts +32 -31
- package/front_end/panels/sensors/SensorsView.ts +50 -42
- package/front_end/panels/sensors/sensors-meta.ts +20 -20
- package/front_end/panels/settings/AISettingsTab.test.ts +19 -6
- package/front_end/panels/settings/AISettingsTab.ts +118 -72
- package/front_end/panels/settings/FrameworkIgnoreListSettingsTab.ts +22 -20
- package/front_end/panels/settings/KeybindsSettingsTab.ts +31 -30
- package/front_end/panels/settings/SettingsScreen.ts +19 -20
- package/front_end/panels/settings/components/SyncSection.test.ts +43 -9
- package/front_end/panels/settings/components/SyncSection.ts +63 -29
- package/front_end/panels/settings/components/syncSection.css +16 -7
- package/front_end/panels/settings/emulation/DevicesSettingsTab.ts +14 -16
- package/front_end/panels/settings/emulation/components/UserAgentClientHintsForm.test.ts +61 -0
- package/front_end/panels/settings/emulation/components/UserAgentClientHintsForm.ts +134 -28
- package/front_end/panels/settings/emulation/components/userAgentClientHintsForm.css +19 -0
- package/front_end/panels/settings/emulation/emulation-meta.ts +2 -2
- package/front_end/panels/settings/settings-meta.ts +12 -12
- package/front_end/panels/settings/settingsScreen.css +0 -1
- package/front_end/panels/snippets/ScriptSnippetFileSystem.ts +5 -5
- package/front_end/panels/snippets/SnippetsQuickOpen.ts +4 -4
- package/front_end/panels/sources/AddSourceMapURLDialog.ts +5 -5
- package/front_end/panels/sources/AiCodeCompletionPlugin.test.ts +119 -0
- package/front_end/panels/sources/AiCodeCompletionPlugin.ts +400 -0
- package/front_end/panels/sources/AiWarningInfobarPlugin.ts +3 -3
- package/front_end/panels/sources/BreakpointEditDialog.ts +13 -11
- package/front_end/panels/sources/{components/BreakpointsView.test.ts → BreakpointsView.test.ts} +237 -225
- package/front_end/panels/sources/{components/BreakpointsView.ts → BreakpointsView.ts} +336 -301
- package/front_end/panels/sources/{components/BreakpointsViewUtils.test.ts → BreakpointsViewUtils.test.ts} +29 -29
- package/front_end/panels/sources/{components/BreakpointsViewUtils.ts → BreakpointsViewUtils.ts} +3 -3
- package/front_end/panels/sources/CSSPlugin.ts +26 -17
- package/front_end/panels/sources/CallStackSidebarPane.ts +34 -58
- package/front_end/panels/sources/CategorizedBreakpointL10n.ts +18 -18
- package/front_end/panels/sources/CoveragePlugin.test.ts +2 -0
- package/front_end/panels/sources/CoveragePlugin.ts +5 -5
- package/front_end/panels/sources/DebuggerPausedMessage.test.ts +2 -0
- package/front_end/panels/sources/DebuggerPausedMessage.ts +33 -39
- package/front_end/panels/sources/DebuggerPlugin.test.ts +4 -3
- package/front_end/panels/sources/DebuggerPlugin.ts +68 -49
- package/front_end/panels/sources/FilteredUISourceCodeListProvider.test.ts +3 -4
- package/front_end/panels/sources/FilteredUISourceCodeListProvider.ts +7 -7
- package/front_end/panels/sources/GoToLineQuickOpen.ts +15 -15
- package/front_end/panels/sources/InplaceFormatterEditorAction.ts +9 -6
- package/front_end/panels/sources/NavigatorView.test.ts +2 -1
- package/front_end/panels/sources/NavigatorView.ts +39 -35
- package/front_end/panels/sources/OpenFileQuickOpen.ts +6 -6
- package/front_end/panels/sources/OutlineQuickOpen.ts +3 -3
- package/front_end/panels/sources/ProfilePlugin.ts +3 -3
- package/front_end/panels/sources/ResourceOriginPlugin.ts +1 -1
- package/front_end/panels/sources/ScopeChainSidebarPane.ts +11 -9
- package/front_end/panels/sources/SnippetsPlugin.ts +2 -2
- package/front_end/panels/sources/SourcesNavigator.test.ts +3 -2
- package/front_end/panels/sources/SourcesNavigator.ts +32 -20
- package/front_end/panels/sources/SourcesPanel.test.ts +90 -0
- package/front_end/panels/sources/SourcesPanel.ts +71 -28
- package/front_end/panels/sources/SourcesSearchScope.ts +1 -1
- package/front_end/panels/sources/SourcesView.test.ts +5 -2
- package/front_end/panels/sources/SourcesView.ts +7 -8
- package/front_end/panels/sources/TabbedEditorContainer.ts +11 -8
- package/front_end/panels/sources/ThreadsSidebarPane.ts +7 -10
- package/front_end/panels/sources/UISourceCodeFrame.test.ts +104 -0
- package/front_end/panels/sources/UISourceCodeFrame.ts +40 -17
- package/front_end/panels/sources/WatchExpressionsSidebarPane.ts +14 -9
- package/front_end/panels/sources/breakpointsView.css +276 -0
- package/front_end/panels/sources/components/HeadersView.ts +17 -13
- package/front_end/panels/sources/components/components.ts +0 -4
- package/front_end/panels/sources/scopeChainSidebarPane.css +1 -1
- package/front_end/panels/sources/sources-meta.ts +103 -112
- package/front_end/panels/sources/sources.ts +6 -0
- package/front_end/panels/timeline/ActiveFilters.ts +2 -1
- package/front_end/panels/timeline/AnimationsTrackAppender.ts +1 -1
- package/front_end/panels/timeline/AnnotationHelpers.test.ts +14 -8
- package/front_end/panels/timeline/AnnotationHelpers.ts +28 -23
- package/front_end/panels/timeline/AppenderUtils.ts +2 -2
- package/front_end/panels/timeline/CompatibilityTracksAppender.ts +1 -14
- package/front_end/panels/timeline/CountersGraph.test.ts +80 -0
- package/front_end/panels/timeline/CountersGraph.ts +27 -18
- package/front_end/panels/timeline/EntriesFilter.test.ts +22 -15
- package/front_end/panels/timeline/EventsTimelineTreeView.ts +4 -25
- package/front_end/panels/timeline/ExtensionTrackAppender.ts +4 -9
- package/front_end/panels/timeline/GPUTrackAppender.ts +3 -3
- package/front_end/panels/timeline/Initiators.test.ts +22 -19
- package/front_end/panels/timeline/Initiators.ts +19 -6
- package/front_end/panels/timeline/InteractionsTrackAppender.ts +6 -6
- package/front_end/panels/timeline/IsolateSelector.ts +2 -2
- package/front_end/panels/timeline/LayoutShiftsTrackAppender.ts +6 -5
- package/front_end/panels/timeline/ModificationsManager.test.ts +98 -188
- package/front_end/panels/timeline/ModificationsManager.ts +51 -48
- package/front_end/panels/timeline/NetworkTrackAppender.ts +3 -3
- package/front_end/panels/timeline/README.md +5 -13
- package/front_end/{models/trace/extras/Metadata.test.ts → panels/timeline/RecordingMetadata.test.ts} +61 -29
- package/front_end/panels/timeline/RecordingMetadata.ts +79 -0
- package/front_end/panels/timeline/SaveFileFormatter.test.ts +1 -3
- package/front_end/panels/timeline/SaveFileFormatter.ts +0 -8
- package/front_end/panels/timeline/StatusDialog.ts +12 -8
- package/front_end/panels/timeline/ThirdPartyTreeView.ts +5 -5
- package/front_end/panels/timeline/ThreadAppender.ts +29 -29
- package/front_end/panels/timeline/TimelineController.ts +14 -18
- package/front_end/panels/timeline/TimelineDetailsView.test.ts +49 -15
- package/front_end/panels/timeline/TimelineDetailsView.ts +213 -105
- package/front_end/panels/timeline/TimelineEventOverview.ts +6 -6
- package/front_end/panels/timeline/TimelineFlameChartDataProvider.test.ts +56 -95
- package/front_end/panels/timeline/TimelineFlameChartDataProvider.ts +94 -65
- package/front_end/panels/timeline/TimelineFlameChartNetworkDataProvider.test.ts +3 -62
- package/front_end/panels/timeline/TimelineFlameChartNetworkDataProvider.ts +10 -30
- package/front_end/panels/timeline/TimelineFlameChartView.test.ts +105 -80
- package/front_end/panels/timeline/TimelineFlameChartView.ts +107 -102
- package/front_end/panels/timeline/TimelineHistoryManager.test.ts +0 -5
- package/front_end/panels/timeline/TimelineHistoryManager.ts +8 -8
- package/front_end/panels/timeline/TimelineLoader.test.ts +4 -7
- package/front_end/panels/timeline/TimelineLoader.ts +22 -3
- package/front_end/panels/timeline/TimelineMiniMap.ts +13 -5
- package/front_end/panels/timeline/TimelinePaintProfilerView.ts +1 -1
- package/front_end/panels/timeline/TimelinePanel.test.ts +381 -117
- package/front_end/panels/timeline/TimelinePanel.ts +576 -345
- package/front_end/panels/timeline/TimelineSelectorStatsView.ts +195 -80
- package/front_end/panels/timeline/TimelineTreeView.test.ts +5 -5
- package/front_end/panels/timeline/TimelineTreeView.ts +25 -25
- package/front_end/panels/timeline/TimelineUIUtils.test.ts +58 -55
- package/front_end/panels/timeline/TimelineUIUtils.ts +159 -345
- package/front_end/panels/timeline/TimingsTrackAppender.ts +12 -7
- package/front_end/panels/timeline/TrackConfigBanner.test.ts +68 -0
- package/front_end/panels/timeline/TrackConfigBanner.ts +97 -0
- package/front_end/panels/timeline/TrackConfiguration.test.ts +3 -3
- package/front_end/panels/timeline/TrackConfiguration.ts +1 -0
- package/front_end/panels/timeline/UIDevtoolsUtils.ts +15 -15
- package/front_end/panels/timeline/components/BreadcrumbsUI.ts +4 -9
- package/front_end/panels/timeline/components/DetailsView.ts +13 -13
- package/front_end/panels/timeline/components/ExportTraceOptions.test.ts +281 -0
- package/front_end/panels/timeline/components/ExportTraceOptions.ts +262 -0
- package/front_end/panels/timeline/components/FieldSettingsDialog.test.ts +1 -1
- package/front_end/panels/timeline/components/FieldSettingsDialog.ts +2 -1
- package/front_end/panels/timeline/components/IgnoreListSetting.test.ts +5 -4
- package/front_end/panels/timeline/components/IgnoreListSetting.ts +7 -7
- package/front_end/panels/timeline/components/InteractionBreakdown.ts +3 -3
- package/front_end/panels/timeline/components/Invalidations.test.ts +2 -1
- package/front_end/panels/timeline/components/LayoutShiftDetails.test.ts +21 -11
- package/front_end/panels/timeline/components/LayoutShiftDetails.ts +325 -307
- package/front_end/panels/timeline/components/LiveMetricsView.test.ts +14 -22
- package/front_end/panels/timeline/components/LiveMetricsView.ts +1 -1
- package/front_end/panels/timeline/components/MetricCard.test.ts +2 -2
- package/front_end/panels/timeline/components/NetworkRequestDetails.test.ts +38 -44
- package/front_end/panels/timeline/components/NetworkRequestDetails.ts +318 -278
- package/front_end/panels/timeline/components/NetworkRequestTooltip.ts +8 -8
- package/front_end/panels/timeline/components/NetworkThrottlingSelector.test.ts +3 -0
- package/front_end/panels/timeline/components/OriginMap.ts +1 -1
- package/front_end/panels/timeline/components/RelatedInsightChips.test.ts +17 -31
- package/front_end/panels/timeline/components/RelatedInsightChips.ts +87 -66
- package/front_end/panels/timeline/components/Sidebar.test.ts +43 -4
- package/front_end/panels/timeline/components/Sidebar.ts +47 -20
- package/front_end/panels/timeline/components/SidebarAnnotationsTab.test.ts +47 -72
- package/front_end/panels/timeline/components/SidebarAnnotationsTab.ts +228 -218
- package/front_end/panels/timeline/components/SidebarInsightsTab.test.ts +1 -0
- package/front_end/panels/timeline/components/SidebarInsightsTab.ts +18 -54
- package/front_end/panels/timeline/components/SidebarSingleInsightSet.test.ts +7 -53
- package/front_end/panels/timeline/components/SidebarSingleInsightSet.ts +61 -44
- package/front_end/panels/timeline/components/TimelineSummary.ts +4 -4
- package/front_end/panels/timeline/components/Utils.ts +9 -9
- package/front_end/panels/timeline/components/components.ts +2 -0
- package/front_end/panels/timeline/components/exportTraceOptions.css +26 -0
- package/front_end/panels/timeline/components/insights/BaseInsightComponent.test.ts +40 -16
- package/front_end/panels/timeline/components/insights/BaseInsightComponent.ts +28 -34
- package/front_end/panels/timeline/components/insights/CLSCulprits.test.ts +5 -5
- package/front_end/panels/timeline/components/insights/CLSCulprits.ts +32 -23
- package/front_end/panels/timeline/components/insights/Cache.ts +4 -22
- package/front_end/panels/timeline/components/insights/Checklist.ts +6 -7
- package/front_end/panels/timeline/components/insights/DOMSize.ts +35 -15
- package/front_end/panels/timeline/components/insights/DocumentLatency.ts +1 -61
- package/front_end/panels/timeline/components/insights/DuplicatedJavaScript.ts +5 -17
- package/front_end/panels/timeline/components/insights/EventRef.ts +7 -9
- package/front_end/panels/timeline/components/insights/FontDisplay.ts +20 -21
- package/front_end/panels/timeline/components/insights/ForcedReflow.ts +5 -28
- package/front_end/panels/timeline/components/insights/{InteractionToNextPaint.test.ts → INPBreakdown.test.ts} +8 -5
- package/front_end/panels/timeline/components/insights/INPBreakdown.ts +70 -0
- package/front_end/panels/timeline/components/insights/ImageDelivery.ts +7 -21
- package/front_end/panels/timeline/components/insights/LCPBreakdown.ts +146 -0
- package/front_end/panels/timeline/components/insights/LCPDiscovery.ts +28 -80
- package/front_end/panels/timeline/components/insights/LegacyJavaScript.ts +3 -15
- package/front_end/panels/timeline/components/insights/ModernHTTP.ts +18 -23
- package/front_end/panels/timeline/components/insights/NetworkDependencyTree.test.ts +76 -0
- package/front_end/panels/timeline/components/insights/NetworkDependencyTree.ts +35 -29
- package/front_end/panels/timeline/components/insights/NodeLink.test.ts +113 -0
- package/front_end/panels/timeline/components/insights/NodeLink.ts +50 -10
- package/front_end/panels/timeline/components/insights/README.md +1 -1
- package/front_end/panels/timeline/components/insights/RenderBlocking.ts +4 -22
- package/front_end/panels/timeline/components/insights/SidebarInsight.ts +1 -2
- package/front_end/panels/timeline/components/insights/SlowCSSSelector.ts +16 -28
- package/front_end/panels/timeline/components/insights/Table.ts +2 -3
- package/front_end/panels/timeline/components/insights/ThirdParties.ts +7 -47
- package/front_end/panels/timeline/components/insights/Viewport.ts +0 -6
- package/front_end/panels/timeline/components/insights/insights.ts +4 -4
- package/front_end/panels/timeline/components/insights/table.css +18 -0
- package/front_end/panels/timeline/components/insights/types.ts +2 -2
- package/front_end/panels/timeline/components/layoutShiftDetails.css +99 -92
- package/front_end/panels/timeline/components/networkRequestDetails.css +110 -104
- package/front_end/panels/timeline/components/networkRequestTooltip.css +88 -83
- package/front_end/panels/timeline/components/relatedInsightChips.css +60 -58
- package/front_end/panels/timeline/components/sidebarAnnotationsTab.css +80 -78
- package/front_end/panels/timeline/components/sidebarInsightsTab.css +0 -25
- package/front_end/panels/timeline/components/sidebarSingleInsightSet.css +1 -1
- package/front_end/panels/timeline/docs/flame_chart_migration.md +2 -2
- package/front_end/panels/timeline/overlays/OverlaysImpl.test.ts +149 -42
- package/front_end/panels/timeline/overlays/OverlaysImpl.ts +218 -283
- package/front_end/panels/timeline/overlays/components/EntriesLinkOverlay.ts +1 -1
- package/front_end/panels/timeline/overlays/components/EntryLabelOverlay.ts +69 -104
- package/front_end/panels/timeline/overlays/components/TimeRangeOverlay.ts +1 -1
- package/front_end/panels/timeline/overlays/components/entryLabelOverlay.css +13 -0
- package/front_end/panels/timeline/overlays/components/timeRangeOverlay.css +2 -1
- package/front_end/panels/timeline/timeline-meta.ts +14 -14
- package/front_end/panels/timeline/timeline.ts +4 -4
- package/front_end/panels/timeline/timelineDetailsView.css +118 -0
- package/front_end/panels/timeline/timelineFlameChartView.css +18 -117
- package/front_end/panels/timeline/timelineMiniMap.css +5 -0
- package/front_end/panels/timeline/timelinePanel.css +2 -10
- package/front_end/panels/timeline/timelineTreeView.css +0 -4
- package/front_end/panels/timeline/track_appenders/CompatibilityTracksAppender.test.ts +16 -15
- package/front_end/panels/timeline/track_appenders/ExtensionTrackAppender.test.ts +6 -4
- package/front_end/panels/timeline/track_appenders/InteractionsTrackAppender.test.ts +0 -1
- package/front_end/panels/timeline/track_appenders/ThreadAppender.test.ts +34 -49
- package/front_end/panels/timeline/utils/AICallTree.test.ts +54 -120
- package/front_end/panels/timeline/utils/AICallTree.ts +31 -74
- package/front_end/panels/timeline/utils/AIContext.ts +67 -0
- package/front_end/panels/timeline/utils/EntityMapper.test.ts +5 -4
- package/front_end/panels/timeline/utils/EntityMapper.ts +3 -3
- package/front_end/panels/timeline/utils/EntryName.test.ts +3 -3
- package/front_end/panels/timeline/utils/EntryName.ts +10 -10
- package/front_end/panels/timeline/utils/EntryNodes.test.ts +137 -0
- package/front_end/panels/timeline/utils/EntryNodes.ts +107 -0
- package/front_end/panels/timeline/utils/EntryStyles.ts +110 -110
- package/front_end/panels/timeline/{EventsSerializer.test.ts → utils/EventsSerializer.test.ts} +7 -7
- package/front_end/panels/timeline/{EventsSerializer.ts → utils/EventsSerializer.ts} +1 -1
- package/front_end/panels/timeline/{FreshRecording.test.ts → utils/FreshRecording.test.ts} +5 -5
- package/front_end/panels/timeline/{FreshRecording.ts → utils/FreshRecording.ts} +1 -1
- package/front_end/panels/timeline/utils/Helpers.ts +6 -0
- package/front_end/panels/timeline/utils/IgnoreList.test.ts +7 -6
- package/front_end/panels/timeline/utils/IgnoreList.ts +6 -6
- package/front_end/panels/timeline/utils/InsightAIContext.test.ts +61 -25
- package/front_end/panels/timeline/utils/InsightAIContext.ts +102 -81
- package/front_end/panels/timeline/utils/SourceMapsResolver.test.ts +5 -4
- package/front_end/panels/timeline/utils/Treemap.ts +5 -20
- package/front_end/panels/timeline/utils/utils.ts +8 -0
- package/front_end/panels/utils/utils.test.ts +1 -7
- package/front_end/panels/utils/utils.ts +17 -21
- package/front_end/panels/web_audio/WebAudioView.test.ts +224 -11
- package/front_end/panels/web_audio/WebAudioView.ts +219 -267
- package/front_end/panels/web_audio/web_audio-meta.ts +3 -3
- package/front_end/panels/web_audio/web_audio.ts +0 -12
- package/front_end/panels/webauthn/WebauthnPane.test.ts +75 -72
- package/front_end/panels/webauthn/WebauthnPane.ts +517 -578
- package/front_end/panels/webauthn/webauthn-meta.ts +2 -2
- package/front_end/panels/webauthn/webauthnPane.css +157 -155
- package/front_end/panels/whats_new/ReleaseNoteText.ts +11 -11
- package/front_end/panels/whats_new/ReleaseNoteView.ts +2 -2
- package/front_end/panels/whats_new/releaseNoteView.css +92 -91
- package/front_end/panels/whats_new/resources/WNDT.md +6 -10
- package/front_end/panels/whats_new/whats_new-meta.ts +7 -7
- package/front_end/services/trace_bounds/TraceBounds.ts +1 -1
- package/front_end/services/tracing/ExternalRequests.test.ts +39 -0
- package/front_end/services/tracing/ExternalRequests.ts +74 -0
- package/front_end/services/tracing/PerformanceTracing.ts +5 -4
- package/front_end/{models/trace → services/tracing}/TracingManager.test.ts +9 -7
- package/front_end/{models/trace → services/tracing}/TracingManager.ts +3 -4
- package/front_end/services/tracing/tracing.ts +4 -0
- package/front_end/testing/AiAssistanceHelpers.ts +10 -8
- package/front_end/testing/DOMHelpers.ts +8 -6
- package/front_end/testing/EnvironmentHelpers.ts +21 -6
- package/front_end/testing/ExpectStubCall.ts +2 -1
- package/front_end/testing/InsightHelpers.ts +11 -4
- package/front_end/testing/MockConnection.ts +3 -2
- package/front_end/testing/MockSettingStorage.ts +23 -0
- package/front_end/testing/MutationHelpers.test.ts +1 -3
- package/front_end/testing/OverridesHelpers.ts +9 -3
- package/front_end/testing/PropertyParser.ts +1 -1
- package/front_end/testing/README.md +34 -0
- package/front_end/testing/SnapshotTester.snapshot.txt +9 -0
- package/front_end/testing/SnapshotTester.test.ts +32 -0
- package/front_end/testing/SnapshotTester.ts +150 -0
- package/front_end/testing/SourceMapEncoder.ts +1 -237
- package/front_end/testing/SourceMapHelpers.ts +3 -5
- package/front_end/testing/StackTraceHelpers.ts +47 -0
- package/front_end/testing/StyleHelpers.ts +43 -22
- package/front_end/testing/TraceHelpers.ts +135 -122
- package/front_end/testing/TraceLoader.ts +23 -65
- package/front_end/testing/test_setup.ts +31 -4
- package/front_end/ui/components/buttons/Button.ts +1 -1
- package/front_end/ui/components/buttons/FloatingButton.ts +37 -6
- package/front_end/ui/components/cards/Card.ts +2 -2
- package/front_end/ui/components/copy_to_clipboard/copyToClipboard.ts +1 -1
- package/front_end/ui/components/dialogs/ButtonDialog.test.ts +2 -6
- package/front_end/ui/components/dialogs/ButtonDialog.ts +15 -0
- package/front_end/ui/components/dialogs/Dialog.ts +68 -8
- package/front_end/ui/components/dialogs/ShortcutDialog.test.ts +1 -3
- package/front_end/ui/components/diff_view/DiffView.ts +6 -6
- package/front_end/ui/components/docs/console_insight/basic.ts +1 -1
- package/front_end/ui/components/docs/console_insight/error.ts +1 -1
- package/front_end/ui/components/docs/console_insight/loading.ts +1 -1
- package/front_end/ui/components/docs/context_menu/basic.html +45 -0
- package/front_end/ui/components/docs/context_menu/basic.ts +102 -0
- package/front_end/ui/components/docs/icon_component/basic.html +1 -3
- package/front_end/ui/components/docs/icon_component/basic.ts +1 -1
- package/front_end/ui/components/docs/recorder_recording_list_view/basic.ts +4 -1
- package/front_end/ui/components/docs/select_menu/basic.html +1 -27
- package/front_end/ui/components/docs/select_menu/basic.ts +86 -194
- package/front_end/ui/components/icon_button/Icon.ts +16 -10
- package/front_end/ui/components/icon_button/IconButton.ts +1 -3
- package/front_end/ui/components/icon_button/icon.css +73 -0
- package/front_end/ui/components/issue_counter/IssueCounter.ts +13 -14
- package/front_end/ui/components/issue_counter/IssueLinkIcon.ts +3 -3
- package/front_end/ui/components/markdown_view/MarkdownImagesMap.ts +4 -4
- package/front_end/ui/components/markdown_view/MarkdownLinksMap.ts +9 -6
- package/front_end/ui/components/markdown_view/MarkdownView.test.ts +73 -0
- package/front_end/ui/components/panel_feedback/PanelFeedback.ts +5 -11
- package/front_end/ui/components/panel_feedback/PreviewToggle.ts +4 -9
- package/front_end/ui/components/settings/SettingCheckbox.ts +3 -3
- package/front_end/ui/components/settings/SettingDeprecationWarning.ts +2 -4
- package/front_end/ui/components/snackbars/Snackbar.ts +32 -17
- package/front_end/ui/components/snackbars/snackbar.css +1 -1
- package/front_end/ui/components/spinners/Spinner.ts +50 -2
- package/front_end/ui/components/spinners/spinner.css +10 -1
- package/front_end/ui/components/srgb_overlay/SrgbOverlay.ts +0 -1
- package/front_end/ui/components/survey_link/SurveyLink.ts +4 -8
- package/front_end/ui/components/text_editor/AiCodeCompletionTeaserPlaceholder.test.ts +84 -0
- package/front_end/ui/components/text_editor/AiCodeCompletionTeaserPlaceholder.ts +83 -0
- package/front_end/ui/components/text_editor/ExecutionPositionHighlighter.ts +0 -1
- package/front_end/ui/components/text_editor/TextEditor.test.ts +72 -12
- package/front_end/ui/components/text_editor/TextEditor.ts +2 -0
- package/front_end/ui/components/text_editor/config.ts +120 -12
- package/front_end/ui/{legacy/components/inline_editor/bezierSwatch.css → components/text_editor/textEditor.css} +2 -6
- package/front_end/ui/components/text_editor/text_editor.ts +1 -0
- package/front_end/ui/components/tooltips/Tooltip.test.ts +70 -40
- package/front_end/ui/components/tooltips/Tooltip.ts +208 -33
- package/front_end/ui/components/tooltips/tooltip.css +13 -77
- package/front_end/ui/components/tree_outline/TreeOutline.ts +11 -0
- package/front_end/ui/legacy/ARIAUtils.test.ts +101 -20
- package/front_end/ui/legacy/ARIAUtils.ts +77 -49
- package/front_end/ui/legacy/ActionRegistration.test.ts +0 -2
- package/front_end/ui/legacy/ActionRegistration.ts +24 -24
- package/front_end/ui/legacy/ContextMenu.test.ts +60 -1
- package/front_end/ui/legacy/ContextMenu.ts +349 -29
- package/front_end/ui/legacy/DockController.ts +13 -7
- package/front_end/ui/legacy/EmptyWidget.ts +62 -32
- package/front_end/ui/legacy/FilterBar.ts +14 -9
- package/front_end/ui/legacy/GlassPane.ts +10 -4
- package/front_end/ui/legacy/Infobar.ts +2 -2
- package/front_end/ui/legacy/InspectorView.test.ts +99 -0
- package/front_end/ui/legacy/InspectorView.ts +71 -25
- package/front_end/ui/legacy/ListWidget.ts +9 -9
- package/front_end/ui/legacy/Panel.ts +1 -1
- package/front_end/ui/legacy/ProgressIndicator.ts +44 -41
- package/front_end/ui/legacy/RemoteDebuggingTerminatedScreen.ts +4 -4
- package/front_end/ui/legacy/ReportView.ts +1 -1
- package/front_end/ui/legacy/SearchableView.ts +24 -24
- package/front_end/ui/legacy/SettingsUI.ts +2 -2
- package/front_end/ui/legacy/ShortcutRegistry.ts +2 -1
- package/front_end/ui/legacy/SoftContextMenu.ts +23 -9
- package/front_end/ui/legacy/SoftDropDown.ts +1 -1
- package/front_end/ui/legacy/SplitWidget.test.ts +8 -0
- package/front_end/ui/legacy/SplitWidget.ts +3 -3
- package/front_end/ui/legacy/SuggestBox.ts +15 -15
- package/front_end/ui/legacy/TabbedPane.ts +27 -31
- package/front_end/ui/legacy/TargetCrashedScreen.ts +4 -4
- package/front_end/ui/legacy/TextPrompt.ts +4 -2
- package/front_end/ui/legacy/ThrottledWidget.ts +1 -1
- package/front_end/ui/legacy/Toolbar.test.ts +13 -0
- package/front_end/ui/legacy/Toolbar.ts +39 -19
- package/front_end/ui/legacy/Treeoutline.test.ts +140 -0
- package/front_end/ui/legacy/Treeoutline.ts +244 -8
- package/front_end/ui/legacy/UIUtils.test.ts +59 -0
- package/front_end/ui/legacy/UIUtils.ts +235 -25
- package/front_end/ui/legacy/View.test.ts +14 -1
- package/front_end/ui/legacy/View.ts +33 -9
- package/front_end/ui/legacy/ViewManager.test.ts +235 -0
- package/front_end/ui/legacy/ViewManager.ts +109 -15
- package/front_end/ui/legacy/ViewRegistration.ts +17 -7
- package/front_end/ui/legacy/Widget.test.ts +35 -3
- package/front_end/ui/legacy/Widget.ts +127 -16
- package/front_end/ui/legacy/XLink.ts +1 -1
- package/front_end/ui/legacy/components/color_picker/ContrastDetails.ts +36 -26
- package/front_end/ui/legacy/components/color_picker/FormatPickerContextMenu.ts +4 -8
- package/front_end/ui/legacy/components/color_picker/Spectrum.test.ts +36 -1
- package/front_end/ui/legacy/components/color_picker/Spectrum.ts +72 -49
- package/front_end/ui/legacy/components/color_picker/spectrum.css +1 -1
- package/front_end/ui/legacy/components/cookie_table/CookiesTable.ts +14 -19
- package/front_end/ui/legacy/components/data_grid/DataGrid.ts +31 -30
- package/front_end/ui/legacy/components/data_grid/DataGridElement.test.ts +19 -15
- package/front_end/ui/legacy/components/data_grid/DataGridElement.ts +15 -3
- package/front_end/ui/legacy/components/data_grid/ShowMoreDataGridNode.ts +2 -2
- package/front_end/ui/legacy/components/data_grid/ViewportDataGrid.ts +6 -3
- package/front_end/ui/legacy/components/data_grid/dataGrid.css +9 -3
- package/front_end/ui/legacy/components/inline_editor/BezierEditor.ts +1 -1
- package/front_end/ui/legacy/components/inline_editor/BezierUI.ts +1 -1
- package/front_end/ui/legacy/components/inline_editor/CSSAngle.test.ts +25 -25
- package/front_end/ui/legacy/components/inline_editor/CSSAngle.ts +11 -5
- package/front_end/ui/legacy/components/inline_editor/CSSShadowEditor.ts +5 -5
- package/front_end/ui/legacy/components/inline_editor/ColorSwatch.test.ts +1 -9
- package/front_end/ui/legacy/components/inline_editor/ColorSwatch.ts +35 -20
- package/front_end/ui/legacy/components/inline_editor/FontEditor.ts +32 -31
- package/front_end/ui/legacy/components/inline_editor/FontEditorUnitConverter.ts +1 -1
- package/front_end/ui/legacy/components/inline_editor/Swatches.ts +3 -47
- package/front_end/ui/legacy/components/inline_editor/cssAngle.css +4 -5
- package/front_end/ui/legacy/components/object_ui/CustomPreviewComponent.ts +2 -2
- package/front_end/ui/legacy/components/object_ui/ObjectPopoverHelper.ts +1 -1
- package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.test.ts +19 -1
- package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +31 -28
- package/front_end/ui/legacy/components/object_ui/objectPropertiesSection.css +2 -0
- package/front_end/ui/legacy/components/perf_ui/BrickBreaker.ts +2 -2
- package/front_end/ui/legacy/components/perf_ui/ChartViewport.ts +7 -3
- package/front_end/ui/legacy/components/perf_ui/FilmStripView.ts +7 -7
- package/front_end/ui/legacy/components/perf_ui/FlameChart.test.ts +162 -1
- package/front_end/ui/legacy/components/perf_ui/FlameChart.ts +153 -99
- package/front_end/ui/legacy/components/perf_ui/NetworkPriorities.ts +5 -5
- package/front_end/ui/legacy/components/perf_ui/OverviewGrid.ts +3 -3
- package/front_end/ui/legacy/components/perf_ui/PieChart.ts +1 -1
- package/front_end/ui/legacy/components/perf_ui/TimelineGrid.ts +0 -4
- package/front_end/ui/legacy/components/perf_ui/TimelineOverviewPane.ts +54 -6
- package/front_end/ui/legacy/components/perf_ui/perf_ui-meta.ts +6 -6
- package/front_end/ui/legacy/components/quick_open/CommandMenu.ts +29 -3
- package/front_end/ui/legacy/components/quick_open/FilteredListWidget.ts +14 -5
- package/front_end/ui/legacy/components/quick_open/HelpQuickOpen.ts +2 -5
- package/front_end/ui/legacy/components/quick_open/filteredListWidget.css +2 -0
- package/front_end/ui/legacy/components/quick_open/quick_open-meta.ts +2 -2
- package/front_end/ui/legacy/components/source_frame/FontView.ts +8 -5
- package/front_end/ui/legacy/components/source_frame/ImageView.ts +17 -29
- package/front_end/ui/legacy/components/source_frame/JSONView.ts +3 -3
- package/front_end/ui/legacy/components/source_frame/PreviewFactory.ts +2 -2
- package/front_end/ui/legacy/components/source_frame/ResourceSourceFrame.test.ts +0 -4
- package/front_end/ui/legacy/components/source_frame/ResourceSourceFrame.ts +2 -2
- package/front_end/ui/legacy/components/source_frame/SourceFrame.ts +41 -31
- package/front_end/ui/legacy/components/source_frame/StreamingContentHexView.ts +1 -1
- package/front_end/ui/legacy/components/source_frame/XMLView.ts +2 -2
- package/front_end/ui/legacy/components/source_frame/fontView.css +1 -1
- package/front_end/ui/legacy/components/source_frame/source_frame-meta.ts +9 -9
- package/front_end/ui/legacy/components/utils/ImagePreview.ts +4 -4
- package/front_end/ui/legacy/components/utils/JSPresentationUtils.test.ts +6 -5
- package/front_end/ui/legacy/components/utils/JSPresentationUtils.ts +76 -34
- package/front_end/ui/legacy/components/utils/Linkifier.test.ts +154 -2
- package/front_end/ui/legacy/components/utils/Linkifier.ts +108 -50
- package/front_end/ui/legacy/components/utils/TargetDetachedDialog.ts +2 -1
- package/front_end/ui/legacy/confirmDialog.css +1 -1
- package/front_end/ui/legacy/filter.css +12 -4
- package/front_end/ui/legacy/inspectorCommon.css +25 -20
- package/front_end/ui/legacy/remoteDebuggingTerminatedScreen.css +18 -17
- package/front_end/ui/legacy/softContextMenu.css +4 -0
- package/front_end/ui/legacy/tabbedPane.css +5 -1
- package/front_end/ui/legacy/targetCrashedScreen.css +9 -8
- package/front_end/ui/legacy/viewContainers.css +8 -0
- package/front_end/ui/visual_logging/Debugging.ts +122 -26
- package/front_end/ui/visual_logging/KnownContextValues.ts +139 -1
- package/front_end/ui/visual_logging/LoggingConfig.ts +1 -1
- package/front_end/ui/visual_logging/LoggingDriver.test.ts +74 -44
- package/front_end/ui/visual_logging/LoggingDriver.ts +3 -2
- package/front_end/ui/visual_logging/LoggingState.ts +6 -4
- package/front_end/ui/visual_logging/README.md +1 -3
- package/front_end/ui/visual_logging/visual_logging.ts +9 -0
- package/front_end/ui/visual_logging/visual_logging_debugging.png +0 -0
- package/inspector_overlay/css_grid_label_helpers.ts +4 -4
- package/inspector_overlay/highlight_flex_common.ts +2 -2
- package/inspector_overlay/loadCSS.rollup.js +2 -2
- package/inspector_overlay/main.ts +0 -4
- package/inspector_overlay/tool_highlight.css +1 -1
- package/inspector_overlay/tool_highlight.ts +7 -7
- package/package.json +32 -36
- package/scripts/add_icon_paths.py +1 -1
- package/scripts/ai_assistance/README.md +1 -0
- package/scripts/ai_assistance/auto-run/auto-run.ts +46 -6
- package/scripts/ai_assistance/auto-run/shared/comment-parsers.test.ts +2 -2
- package/scripts/ai_assistance/auto-run/shared/comment-parsers.ts +2 -2
- package/scripts/ai_assistance/auto-run/shared/puppeteer-helpers.ts +18 -15
- package/scripts/ai_assistance/auto-run/targets/elements-executor.ts +2 -0
- package/scripts/ai_assistance/auto-run/targets/elements-multimodal-executor.ts +2 -0
- package/scripts/ai_assistance/auto-run/targets/interface.ts +1 -0
- package/scripts/ai_assistance/auto-run/targets/patching-executor.ts +1 -0
- package/scripts/ai_assistance/auto-run/targets/performance-insights-executor.ts +2 -0
- package/scripts/ai_assistance/auto-run/targets/performance-main-thread-executor.ts +2 -0
- package/scripts/ai_assistance/eval/index.js +5 -1
- package/scripts/ai_assistance/package.json +2 -1
- package/scripts/ai_assistance/suite/README.md +57 -0
- package/scripts/ai_assistance/suite/helpers/evaluators.ts +183 -0
- package/scripts/ai_assistance/suite/helpers/gemini.ts +122 -0
- package/scripts/ai_assistance/suite/helpers/outputs.ts +112 -0
- package/scripts/ai_assistance/suite/instructions/lcp-breakdown.md +12 -0
- package/scripts/ai_assistance/suite/instructions/load.ts +13 -0
- package/scripts/ai_assistance/suite/instructions/scoring.md +27 -0
- package/scripts/ai_assistance/suite/performance.eval.ts +18 -0
- package/scripts/ai_assistance/suite/to_eval_output.ts +166 -0
- package/scripts/ai_assistance/suite/types.d.ts +40 -0
- package/scripts/ai_assistance/suite/upload_to_gcp.ts +104 -0
- package/scripts/ai_assistance/tsconfig.json +1 -1
- package/scripts/ai_assistance/types.d.ts +8 -3
- package/scripts/build/assert_grd.py +1 -1
- package/scripts/build/compress_files.js +9 -4
- package/scripts/build/cross_reference_ninja_and_tsc.js +5 -5
- package/scripts/build/devtools_plugin.js +9 -2
- package/scripts/build/esbuild.js +4 -1
- package/scripts/build/generate_html_entrypoint.js +5 -4
- package/scripts/build/ninja/README.md +2 -3
- package/scripts/build/ninja/bundle.gni +7 -30
- package/scripts/build/ninja/devtools_entrypoint.gni +4 -4
- package/scripts/build/ninja/devtools_pre_built.gni +2 -1
- package/scripts/build/ninja/generate_css.gni +4 -2
- package/scripts/build/ninja/vars.gni +5 -1
- package/scripts/build/ninja/write-if-changed.js +2 -2
- package/scripts/build/typescript/ts_library.py +7 -1
- package/scripts/build/typescript/typescript.gni +2 -1
- package/scripts/component_server/server.js +8 -7
- package/scripts/devtools_build.mjs +93 -26
- package/scripts/devtools_build.test.mjs +48 -48
- package/scripts/devtools_paths.py +0 -5
- package/scripts/eslint_rules/README.md +4 -2
- package/scripts/eslint_rules/lib/canvas-context-tracking.ts +1 -1
- package/scripts/eslint_rules/lib/check-css-import.ts +2 -2
- package/scripts/eslint_rules/lib/check-license-header.ts +3 -3
- package/scripts/eslint_rules/lib/check-test-definitions.ts +2 -2
- package/scripts/eslint_rules/lib/enforce-custom-element-definitions-location.ts +1 -1
- package/scripts/eslint_rules/lib/enforce-optional-properties-last.ts +1 -1
- package/scripts/eslint_rules/lib/enforce-ui-strings-as-const.ts +1 -1
- package/scripts/eslint_rules/lib/es-modules-import.ts +3 -2
- package/scripts/eslint_rules/lib/html-tagged-template.ts +2 -2
- package/scripts/eslint_rules/lib/inject-checkbox-styles.ts +36 -24
- package/scripts/eslint_rules/lib/inline-type-imports.ts +1 -1
- package/scripts/eslint_rules/lib/jslog-context-list.ts +32 -7
- package/scripts/eslint_rules/lib/no-adopted-style-sheets.ts +2 -2
- package/scripts/eslint_rules/lib/no-assert-deep-strict-equal.ts +17 -16
- package/scripts/eslint_rules/lib/no-assert-equal-boolean-null-undefined.ts +1 -1
- package/scripts/eslint_rules/lib/no-assert-equal.ts +1 -1
- package/scripts/eslint_rules/lib/no-assert-strict-equal-for-arrays-and-objects.ts +1 -1
- package/scripts/eslint_rules/lib/no-commented-out-console.ts +4 -2
- package/scripts/eslint_rules/lib/no-customized-builtin-elements.ts +1 -4
- package/scripts/eslint_rules/lib/no-imperative-dom-api/adorner.ts +5 -9
- package/scripts/eslint_rules/lib/no-imperative-dom-api/aria-utils.ts +5 -8
- package/scripts/eslint_rules/lib/no-imperative-dom-api/ast.ts +24 -1
- package/scripts/eslint_rules/lib/no-imperative-dom-api/button.ts +5 -4
- package/scripts/eslint_rules/lib/no-imperative-dom-api/class-member.ts +1 -1
- package/scripts/eslint_rules/lib/no-imperative-dom-api/data-grid.ts +23 -25
- package/scripts/eslint_rules/lib/no-imperative-dom-api/dom-api-devtools-extensions.ts +5 -9
- package/scripts/eslint_rules/lib/no-imperative-dom-api/dom-api.ts +11 -16
- package/scripts/eslint_rules/lib/no-imperative-dom-api/dom-fragment.ts +2 -2
- package/scripts/eslint_rules/lib/no-imperative-dom-api/split-widget.ts +14 -18
- package/scripts/eslint_rules/lib/no-imperative-dom-api/toolbar.ts +17 -18
- package/scripts/eslint_rules/lib/no-imperative-dom-api/ui-fragment.ts +7 -12
- package/scripts/eslint_rules/lib/no-imperative-dom-api/ui-utils.ts +7 -7
- package/scripts/eslint_rules/lib/no-imperative-dom-api/widget.ts +8 -13
- package/scripts/eslint_rules/lib/no-imperative-dom-api.ts +3 -22
- package/scripts/eslint_rules/lib/no-importing-images-from-src.ts +1 -1
- package/scripts/eslint_rules/lib/no-imports-in-directory.ts +18 -7
- package/scripts/eslint_rules/lib/no-lit-render-outside-of-view.ts +48 -37
- package/scripts/eslint_rules/lib/no-new-lit-element-components.ts +5 -2
- package/scripts/eslint_rules/lib/no-underscored-properties.ts +36 -28
- package/scripts/eslint_rules/lib/prefer-assert-instance-of.ts +24 -20
- package/scripts/eslint_rules/lib/prefer-assert-is-ok.ts +54 -45
- package/scripts/eslint_rules/lib/prefer-assert-length-of.ts +24 -17
- package/scripts/eslint_rules/lib/prefer-assert-strict-equal.ts +22 -16
- package/scripts/eslint_rules/lib/prefer-private-class-members.ts +11 -4
- package/scripts/eslint_rules/lib/prefer-sinon-assert.ts +37 -29
- package/scripts/eslint_rules/lib/prefer-url-string.ts +1 -1
- package/scripts/eslint_rules/lib/utils/lit.ts +26 -9
- package/scripts/eslint_rules/lib/validate-timing-types.ts +330 -0
- package/scripts/eslint_rules/rules-dir.mjs +4 -1
- package/scripts/eslint_rules/tests/check-license-header.test.ts +8 -8
- package/scripts/eslint_rules/tests/check-test-definitions.test.ts +0 -10
- package/scripts/eslint_rules/tests/enforce-optional-properties-last.test.ts +1 -1
- package/scripts/eslint_rules/tests/inject-checkbox-styles.test.ts +49 -0
- package/scripts/eslint_rules/tests/no-imports-in-directory.test.ts +20 -5
- package/scripts/eslint_rules/tests/no-lit-render-outside-of-view.test.ts +60 -10
- package/scripts/eslint_rules/tests/no-new-lit-element-components.test.ts +4 -0
- package/scripts/eslint_rules/tests/prefer-private-class-members.test.ts +2 -2
- package/scripts/eslint_rules/tests/utils/RuleTester.ts +19 -1
- package/scripts/eslint_rules/tests/utils.test.ts +1 -1
- package/scripts/eslint_rules/tests/validate-timing-types.test.ts +289 -0
- package/scripts/eslint_rules/tsconfig.json +3 -2
- package/scripts/extract_bugs.ts +2 -3
- package/scripts/javascript_natives/helpers.js +9 -9
- package/scripts/migration/e2e_non_hosted_gemini.mjs +102 -0
- package/scripts/migration/web-tests-esm/rename-legacy-global.mjs +1 -1
- package/scripts/npm_test.js +1 -1
- package/scripts/protocol_typescript/protocol_dts_generator.ts +27 -16
- package/scripts/protocol_typescript/protocol_schema.d.ts +9 -4
- package/scripts/reformat-clang-js-ts.js +1 -1
- package/scripts/run_build.mjs +14 -2
- package/scripts/run_start.mjs +6 -3
- package/scripts/scaffold/scaffold-widget.js +7 -7
- package/scripts/scaffold/templates/WidgetTemplate.ts.txt +1 -1
- package/scripts/tools/update_goldens.py +143 -168
- package/scripts/tsconfig.json +2 -1
- package/scripts/whitespaces.txt +1 -1
- package/front_end/core/sdk/SourceMapScopes.test.ts +0 -507
- package/front_end/core/sdk/SourceMapScopes.ts +0 -472
- package/front_end/models/ai_assistance/agents/PerformanceInsightsAgent.test.ts +0 -448
- package/front_end/models/ai_assistance/agents/PerformanceInsightsAgent.ts +0 -498
- package/front_end/models/trace/extras/FetchNodes.test.ts +0 -261
- package/front_end/models/trace/extras/FetchNodes.ts +0 -254
- package/front_end/models/trace/extras/Metadata.ts +0 -79
- package/front_end/models/trace/insights/LCPPhases.test.ts +0 -71
- package/front_end/models/trace/insights/LCPPhases.ts +0 -222
- package/front_end/panels/animation/AnimationScreenshotPopover.ts +0 -65
- package/front_end/panels/animation/animationScreenshotPopover.css +0 -18
- package/front_end/panels/application/ReportingApiReportsView.test.ts +0 -117
- package/front_end/panels/application/ReportingApiReportsView.ts +0 -88
- package/front_end/panels/elements/ElementsTreeElementHighlighter.test.ts +0 -51
- package/front_end/panels/elements/ElementsTreeElementHighlighter.ts +0 -107
- package/front_end/panels/elements/components/LayoutPane.ts +0 -515
- package/front_end/panels/elements/components/LayoutPaneUtils.ts +0 -41
- package/front_end/panels/elements/components/layoutPane.css +0 -168
- package/front_end/panels/sources/components/breakpointsView.css +0 -275
- package/front_end/panels/timeline/components/insights/InteractionToNextPaint.ts +0 -118
- package/front_end/panels/timeline/components/insights/LCPPhases.ts +0 -256
- package/front_end/panels/web_audio/AudioContextContentBuilder.ts +0 -113
- package/front_end/panels/web_audio/AudioContextSelector.ts +0 -140
- package/front_end/panels/web_audio/audioContextSelector.css +0 -20
- package/front_end/panels/web_audio/graph_visualizer/EdgeView.ts +0 -80
- package/front_end/panels/web_audio/graph_visualizer/GraphManager.ts +0 -46
- package/front_end/panels/web_audio/graph_visualizer/GraphStyle.ts +0 -96
- package/front_end/panels/web_audio/graph_visualizer/GraphView.ts +0 -197
- package/front_end/panels/web_audio/graph_visualizer/NodeRendererUtility.ts +0 -43
- package/front_end/panels/web_audio/graph_visualizer/NodeView.ts +0 -258
- package/front_end/panels/web_audio/graph_visualizer/graph_visualizer.ts +0 -19
- package/front_end/ui/components/docs/recorder_recording_view/basic.html +0 -20
- package/front_end/ui/components/docs/recorder_recording_view/basic.ts +0 -99
- package/front_end/ui/legacy/inspectorViewTabbedPane.css +0 -13
- package/inspector_overlay/debug/tool_distances.html +0 -25
- package/inspector_overlay/tool_distances.ts +0 -125
- package/scripts/eslint_rules/lib/no-it-screenshot-only-or-repeat.ts +0 -47
- package/scripts/eslint_rules/lib/no-screenshot-test-outside-perf-panel.ts +0 -77
- package/scripts/eslint_rules/lib/screenshot-assertion-in-it-screenshot.ts +0 -110
- package/scripts/eslint_rules/lib/single-screenshot-assertion-per-test.ts +0 -85
- package/scripts/eslint_rules/tests/no-it-screenshot-only-or-repeat.test.ts +0 -34
- package/scripts/eslint_rules/tests/no-screenshot-test-outside-perf-panel.test.ts +0 -99
- package/scripts/eslint_rules/tests/screenshot-assertion-in-it-screenshot.test.ts +0 -79
- package/scripts/eslint_rules/tests/single-screenshot-assertion-per-test.test.ts +0 -97
- package/scripts/tools/update_goldens_unittest.py +0 -88
- package/scripts/tools/update_goldens_v2.py +0 -68
- package/scripts/watch_build.js +0 -230
- /package/front_end/panels/recorder/models/{RecorderShorcutHelper.test.ts → RecorderShortcutHelper.test.ts} +0 -0
@@ -6,7 +6,6 @@ import * as Common from '../../core/common/common.js';
|
|
6
6
|
import * as Host from '../../core/host/host.js';
|
7
7
|
import * as Platform from '../../core/platform/platform.js';
|
8
8
|
import * as SDK from '../../core/sdk/sdk.js';
|
9
|
-
import type * as Protocol from '../../generated/protocol.js';
|
10
9
|
import * as AiAssistanceModel from '../../models/ai_assistance/ai_assistance.js';
|
11
10
|
import * as Workspace from '../../models/workspace/workspace.js';
|
12
11
|
import {
|
@@ -25,12 +24,12 @@ import {
|
|
25
24
|
} from '../../testing/EnvironmentHelpers.js';
|
26
25
|
import {expectCall} from '../../testing/ExpectStubCall.js';
|
27
26
|
import {describeWithMockConnection} from '../../testing/MockConnection.js';
|
27
|
+
import {MockStore} from '../../testing/MockSettingStorage.js';
|
28
28
|
import {createNetworkPanelForMockConnection} from '../../testing/NetworkHelpers.js';
|
29
|
+
import {SnapshotTester} from '../../testing/SnapshotTester.js';
|
29
30
|
import * as Snackbars from '../../ui/components/snackbars/snackbars.js';
|
30
31
|
import * as UI from '../../ui/legacy/legacy.js';
|
31
|
-
import * as Elements from '../elements/elements.js';
|
32
32
|
import * as Network from '../network/network.js';
|
33
|
-
import * as Sources from '../sources/sources.js';
|
34
33
|
import type * as TimelineComponents from '../timeline/components/components.js';
|
35
34
|
import * as Timeline from '../timeline/timeline.js';
|
36
35
|
import * as TimelineUtils from '../timeline/utils/utils.js';
|
@@ -40,20 +39,34 @@ import * as AiAssistancePanel from './ai_assistance.js';
|
|
40
39
|
const {urlString} = Platform.DevToolsPath;
|
41
40
|
|
42
41
|
describeWithMockConnection('AI Assistance Panel', () => {
|
42
|
+
let viewManagerIsViewVisibleStub: sinon.SinonStub<[viewId: string], boolean>;
|
43
43
|
beforeEach(() => {
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
44
|
+
viewManagerIsViewVisibleStub = sinon.stub(UI.ViewManager.ViewManager.instance(), 'isViewVisible');
|
45
|
+
AiAssistanceModel.ConversationHandler.removeInstance();
|
46
|
+
registerNoopActions([
|
47
|
+
'elements.toggle-element-search', 'timeline.record-reload', 'timeline.toggle-recording', 'timeline.show-history',
|
48
|
+
'components.collect-garbage'
|
49
|
+
]);
|
50
|
+
|
48
51
|
UI.Context.Context.instance().setFlavor(Timeline.TimelinePanel.TimelinePanel, null);
|
49
52
|
UI.Context.Context.instance().setFlavor(SDK.NetworkRequest.NetworkRequest, null);
|
50
53
|
UI.Context.Context.instance().setFlavor(SDK.DOMModel.DOMNode, null);
|
51
|
-
UI.Context.Context.instance().setFlavor(TimelineUtils.
|
54
|
+
UI.Context.Context.instance().setFlavor(TimelineUtils.AIContext.AgentFocus, null);
|
52
55
|
UI.Context.Context.instance().setFlavor(Workspace.UISourceCode.UISourceCode, null);
|
56
|
+
|
57
|
+
const mockStore = new MockStore();
|
58
|
+
const settingsStorage = new Common.Settings.SettingsStorage({}, mockStore);
|
59
|
+
Common.Settings.Settings.instance({
|
60
|
+
forceNew: true,
|
61
|
+
syncedStorage: settingsStorage,
|
62
|
+
globalStorage: settingsStorage,
|
63
|
+
localStorage: settingsStorage,
|
64
|
+
});
|
53
65
|
});
|
54
66
|
|
55
67
|
afterEach(() => {
|
56
68
|
cleanup();
|
69
|
+
viewManagerIsViewVisibleStub.reset();
|
57
70
|
});
|
58
71
|
|
59
72
|
describe('consent view', () => {
|
@@ -256,18 +269,19 @@ describeWithMockConnection('AI Assistance Panel', () => {
|
|
256
269
|
action: 'drjones.network-floating-button'
|
257
270
|
},
|
258
271
|
{
|
259
|
-
flavor: TimelineUtils.
|
272
|
+
flavor: TimelineUtils.AIContext.AgentFocus,
|
260
273
|
createContext: () => {
|
261
|
-
return
|
274
|
+
return AiAssistanceModel.PerformanceTraceContext.fromCallTree(
|
275
|
+
sinon.createStubInstance(TimelineUtils.AICallTree.AICallTree));
|
262
276
|
},
|
263
277
|
action: 'drjones.performance-panel-context'
|
264
278
|
},
|
265
279
|
{
|
266
|
-
flavor: TimelineUtils.
|
280
|
+
flavor: TimelineUtils.AIContext.AgentFocus,
|
267
281
|
createContext: () => {
|
268
|
-
|
269
|
-
|
270
|
-
sinon.stub(AiAssistanceModel.
|
282
|
+
// @ts-expect-error: don't need any data.
|
283
|
+
const context = AiAssistanceModel.PerformanceTraceContext.fromInsight(null, null, null);
|
284
|
+
sinon.stub(AiAssistanceModel.PerformanceTraceContext.prototype, 'getSuggestions')
|
271
285
|
.returns(Promise.resolve([{title: 'test suggestion'}]));
|
272
286
|
return context;
|
273
287
|
},
|
@@ -341,14 +355,14 @@ describeWithMockConnection('AI Assistance Panel', () => {
|
|
341
355
|
const {panel, view} = await createAiAssistancePanel({chatView});
|
342
356
|
|
343
357
|
// Firstly, start a conversation and set a context
|
344
|
-
const context =
|
345
|
-
|
346
|
-
UI.Context.Context.instance().setFlavor(TimelineUtils.
|
358
|
+
const context = AiAssistanceModel.PerformanceTraceContext.fromCallTree(
|
359
|
+
sinon.createStubInstance(TimelineUtils.AICallTree.AICallTree));
|
360
|
+
UI.Context.Context.instance().setFlavor(TimelineUtils.AIContext.AgentFocus, context.getItem());
|
347
361
|
panel.handleAction('drjones.performance-panel-context');
|
348
362
|
await view.nextInput;
|
349
363
|
|
350
364
|
// Now clear the context and check we cleared out the text
|
351
|
-
UI.Context.Context.instance().setFlavor(TimelineUtils.
|
365
|
+
UI.Context.Context.instance().setFlavor(TimelineUtils.AIContext.AgentFocus, null);
|
352
366
|
sinon.assert.callCount(chatView.clearTextInput, 1);
|
353
367
|
});
|
354
368
|
});
|
@@ -399,48 +413,52 @@ describeWithMockConnection('AI Assistance Panel', () => {
|
|
399
413
|
sinon.assert.calledWith(stub, 'chrome-ai');
|
400
414
|
});
|
401
415
|
|
402
|
-
it('should not show chat
|
403
|
-
|
416
|
+
it('should not show chat, delete history and export conversation actions when ai assistance enabled setting is disabled',
|
417
|
+
async () => {
|
418
|
+
Common.Settings.moduleSetting('ai-assistance-enabled').setDisabled(true);
|
404
419
|
|
405
|
-
|
420
|
+
const {view} = await createAiAssistancePanel();
|
406
421
|
|
407
|
-
|
408
|
-
|
409
|
-
|
422
|
+
assert.isFalse(view.input.showChatActions);
|
423
|
+
assert.isFalse(view.input.showActiveConversationActions);
|
424
|
+
});
|
410
425
|
|
411
|
-
it('should not show chat
|
412
|
-
|
426
|
+
it('should not show chat, delete history and export conversation actions when ai assistance setting is marked as false',
|
427
|
+
async () => {
|
428
|
+
Common.Settings.moduleSetting('ai-assistance-enabled').set(false);
|
413
429
|
|
414
|
-
|
430
|
+
const {view} = await createAiAssistancePanel();
|
415
431
|
|
416
|
-
|
417
|
-
|
418
|
-
|
432
|
+
assert.isFalse(view.input.showChatActions);
|
433
|
+
assert.isFalse(view.input.showActiveConversationActions);
|
434
|
+
});
|
419
435
|
|
420
|
-
it('should not show chat
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
436
|
+
it('should not show chat, delete history and export conversation actions when the user is blocked by age',
|
437
|
+
async () => {
|
438
|
+
Common.Settings.moduleSetting('ai-assistance-enabled').set(true);
|
439
|
+
updateHostConfig({
|
440
|
+
aidaAvailability: {
|
441
|
+
blockedByAge: true,
|
442
|
+
},
|
443
|
+
});
|
427
444
|
|
428
|
-
|
445
|
+
const {view} = await createAiAssistancePanel();
|
429
446
|
|
430
|
-
|
431
|
-
|
432
|
-
|
447
|
+
assert.isFalse(view.input.showChatActions);
|
448
|
+
assert.isFalse(view.input.showActiveConversationActions);
|
449
|
+
});
|
433
450
|
|
434
|
-
it('should not show chat
|
435
|
-
|
436
|
-
|
451
|
+
it('should not show chat, delete history and export conversation actions when Aida availability status is SYNC IS PAUSED',
|
452
|
+
async () => {
|
453
|
+
Common.Settings.moduleSetting('ai-assistance-enabled').set(true);
|
437
454
|
|
438
|
-
|
439
|
-
|
455
|
+
const {view} =
|
456
|
+
await createAiAssistancePanel({aidaAvailability: Host.AidaClient.AidaAccessPreconditions.SYNC_IS_PAUSED});
|
457
|
+
|
458
|
+
assert.isFalse(view.input.showChatActions);
|
459
|
+
assert.isFalse(view.input.showActiveConversationActions);
|
460
|
+
});
|
440
461
|
|
441
|
-
assert.isFalse(view.input.showChatActions);
|
442
|
-
assert.isFalse(view.input.showDeleteHistoryAction);
|
443
|
-
});
|
444
462
|
});
|
445
463
|
|
446
464
|
describe('history interactions', () => {
|
@@ -481,8 +499,7 @@ describeWithMockConnection('AI Assistance Panel', () => {
|
|
481
499
|
panel.handleAction('freestyler.elements-floating-button');
|
482
500
|
await view.nextInput;
|
483
501
|
|
484
|
-
|
485
|
-
Elements.ElementsPanel.ElementsPanel, sinon.createStubInstance(Elements.ElementsPanel.ElementsPanel));
|
502
|
+
viewManagerIsViewVisibleStub.callsFake(viewName => viewName === 'elements');
|
486
503
|
|
487
504
|
view.input.onTextSubmit('test');
|
488
505
|
|
@@ -521,6 +538,7 @@ describeWithMockConnection('AI Assistance Panel', () => {
|
|
521
538
|
(await view.nextInput).onTextSubmit('test');
|
522
539
|
await view.nextInput;
|
523
540
|
|
541
|
+
viewManagerIsViewVisibleStub.callsFake(viewName => viewName === 'timeline');
|
524
542
|
UI.Context.Context.instance().setFlavor(
|
525
543
|
Timeline.TimelinePanel.TimelinePanel, sinon.createStubInstance(Timeline.TimelinePanel.TimelinePanel));
|
526
544
|
|
@@ -561,6 +579,7 @@ describeWithMockConnection('AI Assistance Panel', () => {
|
|
561
579
|
(await view.nextInput).onTextSubmit('test');
|
562
580
|
await view.nextInput;
|
563
581
|
|
582
|
+
viewManagerIsViewVisibleStub.callsFake(viewName => viewName === 'timeline');
|
564
583
|
UI.Context.Context.instance().setFlavor(
|
565
584
|
Timeline.TimelinePanel.TimelinePanel, sinon.createStubInstance(Timeline.TimelinePanel.TimelinePanel));
|
566
585
|
|
@@ -581,7 +600,7 @@ describeWithMockConnection('AI Assistance Panel', () => {
|
|
581
600
|
view.input.onNewChatClick();
|
582
601
|
|
583
602
|
assert.deepEqual((await view.nextInput).messages, []);
|
584
|
-
assert.deepEqual(view.input.conversationType, AiAssistanceModel.ConversationType.
|
603
|
+
assert.deepEqual(view.input.conversationType, AiAssistanceModel.ConversationType.PERFORMANCE_CALL_TREE);
|
585
604
|
});
|
586
605
|
|
587
606
|
it('should switch agents and restore history', async () => {
|
@@ -649,6 +668,123 @@ describeWithMockConnection('AI Assistance Panel', () => {
|
|
649
668
|
]);
|
650
669
|
});
|
651
670
|
|
671
|
+
it('runs action-triggered prompts', async () => {
|
672
|
+
updateHostConfig({
|
673
|
+
devToolsFreestyler: {
|
674
|
+
enabled: true,
|
675
|
+
},
|
676
|
+
});
|
677
|
+
|
678
|
+
const {panel, view} = await createAiAssistancePanel({
|
679
|
+
aidaClient: mockAidaClient(
|
680
|
+
[
|
681
|
+
[{explanation: 'test'}],
|
682
|
+
],
|
683
|
+
),
|
684
|
+
});
|
685
|
+
|
686
|
+
panel.handleAction('freestyler.element-panel-context', {prompt: 'Tell me more'});
|
687
|
+
assert.deepEqual((await view.nextInput).messages, [
|
688
|
+
{
|
689
|
+
entity: AiAssistancePanel.ChatMessageEntity.USER,
|
690
|
+
text: 'Tell me more',
|
691
|
+
imageInput: undefined,
|
692
|
+
},
|
693
|
+
{
|
694
|
+
answer: 'test',
|
695
|
+
entity: AiAssistancePanel.ChatMessageEntity.MODEL,
|
696
|
+
rpcId: undefined,
|
697
|
+
suggestions: undefined,
|
698
|
+
steps: [],
|
699
|
+
},
|
700
|
+
]);
|
701
|
+
});
|
702
|
+
|
703
|
+
it('interrupts an ongoing conversation with an action-triggered prompt', async () => {
|
704
|
+
updateHostConfig({
|
705
|
+
devToolsFreestyler: {
|
706
|
+
enabled: true,
|
707
|
+
},
|
708
|
+
});
|
709
|
+
|
710
|
+
const aidaClient = sinon.createStubInstance(Host.AidaClient.AidaClient);
|
711
|
+
aidaClient.doConversation.onFirstCall().callsFake(async function*(_request, options) {
|
712
|
+
yield {
|
713
|
+
explanation: 'Thinking...',
|
714
|
+
metadata: {},
|
715
|
+
completed: false,
|
716
|
+
};
|
717
|
+
await new Promise((_resolve, reject) => {
|
718
|
+
options?.signal?.addEventListener('abort', () => {
|
719
|
+
reject(new Host.AidaClient.AidaAbortError());
|
720
|
+
});
|
721
|
+
});
|
722
|
+
});
|
723
|
+
|
724
|
+
aidaClient.doConversation.onSecondCall().callsFake(async function*() {
|
725
|
+
yield {
|
726
|
+
explanation: 'Interrupted and answered',
|
727
|
+
metadata: {},
|
728
|
+
completed: true,
|
729
|
+
};
|
730
|
+
});
|
731
|
+
|
732
|
+
const {panel, view} = await createAiAssistancePanel({aidaClient});
|
733
|
+
|
734
|
+
// Start a conversation
|
735
|
+
panel.handleAction('freestyler.element-panel-context', {prompt: 'first question'});
|
736
|
+
|
737
|
+
// Wait for the thinking part.
|
738
|
+
let currentView = await view.nextInput;
|
739
|
+
assert.isTrue(currentView.isLoading);
|
740
|
+
assert.deepEqual(currentView.messages, [
|
741
|
+
{
|
742
|
+
entity: AiAssistancePanel.ChatMessageEntity.USER,
|
743
|
+
text: 'first question',
|
744
|
+
imageInput: undefined,
|
745
|
+
},
|
746
|
+
{
|
747
|
+
answer: 'Thinking...',
|
748
|
+
entity: AiAssistancePanel.ChatMessageEntity.MODEL,
|
749
|
+
rpcId: undefined,
|
750
|
+
suggestions: undefined,
|
751
|
+
steps: [],
|
752
|
+
},
|
753
|
+
]);
|
754
|
+
|
755
|
+
// Now interrupt with another prompt.
|
756
|
+
panel.handleAction('freestyler.element-panel-context', {prompt: 'interrupting prompt'});
|
757
|
+
|
758
|
+
currentView = await view.nextInput;
|
759
|
+
assert.deepEqual(currentView.messages, [
|
760
|
+
{
|
761
|
+
entity: AiAssistancePanel.ChatMessageEntity.USER,
|
762
|
+
text: 'first question',
|
763
|
+
imageInput: undefined,
|
764
|
+
},
|
765
|
+
{
|
766
|
+
answer: 'Thinking...',
|
767
|
+
entity: AiAssistancePanel.ChatMessageEntity.MODEL,
|
768
|
+
rpcId: undefined,
|
769
|
+
suggestions: undefined,
|
770
|
+
steps: [],
|
771
|
+
error: AiAssistanceModel.ErrorType.ABORT,
|
772
|
+
},
|
773
|
+
{
|
774
|
+
entity: AiAssistancePanel.ChatMessageEntity.USER,
|
775
|
+
text: 'interrupting prompt',
|
776
|
+
imageInput: undefined,
|
777
|
+
},
|
778
|
+
{
|
779
|
+
answer: 'Interrupted and answered',
|
780
|
+
entity: AiAssistancePanel.ChatMessageEntity.MODEL,
|
781
|
+
rpcId: undefined,
|
782
|
+
suggestions: undefined,
|
783
|
+
steps: [],
|
784
|
+
},
|
785
|
+
]);
|
786
|
+
});
|
787
|
+
|
652
788
|
it('should not save partial responses to conversation history', async () => {
|
653
789
|
updateHostConfig({
|
654
790
|
devToolsFreestyler: {
|
@@ -656,12 +792,10 @@ describeWithMockConnection('AI Assistance Panel', () => {
|
|
656
792
|
},
|
657
793
|
});
|
658
794
|
const addHistoryItemStub = sinon.stub(AiAssistanceModel.Conversation.prototype, 'addHistoryItem');
|
659
|
-
|
660
|
-
Elements.ElementsPanel.ElementsPanel, sinon.createStubInstance(Elements.ElementsPanel.ElementsPanel));
|
795
|
+
viewManagerIsViewVisibleStub.callsFake(viewName => viewName === 'elements');
|
661
796
|
const {view} = await createAiAssistancePanel({
|
662
|
-
aidaClient: mockAidaClient(
|
663
|
-
|
664
|
-
]])
|
797
|
+
aidaClient: mockAidaClient(
|
798
|
+
[[{explanation: 'partially started'}, {explanation: 'partially started and now it\'s finished'}]])
|
665
799
|
});
|
666
800
|
// Trigger running the conversation (observe that there are two answers: one partial, one complete)
|
667
801
|
view.input.onTextSubmit('User question to Freestyler?');
|
@@ -679,7 +813,7 @@ describeWithMockConnection('AI Assistance Panel', () => {
|
|
679
813
|
},
|
680
814
|
});
|
681
815
|
const aiHistoryStorage = AiAssistanceModel.AiHistoryStorage.instance({forceNew: true});
|
682
|
-
const
|
816
|
+
const deleteHistoryEntrySpy = sinon.spy(aiHistoryStorage, 'deleteHistoryEntry');
|
683
817
|
const {panel, view} = await createAiAssistancePanel(
|
684
818
|
{
|
685
819
|
aidaClient: mockAidaClient(
|
@@ -705,12 +839,35 @@ describeWithMockConnection('AI Assistance Panel', () => {
|
|
705
839
|
view.input.onDeleteClick();
|
706
840
|
|
707
841
|
assert.deepEqual((await view.nextInput).messages, []);
|
708
|
-
sinon.assert.callCount(
|
709
|
-
assert.isString(
|
842
|
+
sinon.assert.callCount(deleteHistoryEntrySpy, 1);
|
843
|
+
assert.isString(deleteHistoryEntrySpy.lastCall.args[0]);
|
710
844
|
|
711
845
|
const menuAfterDelete = openHistoryContextMenu(view.input, 'User question to Freestyler?');
|
712
846
|
assert.isUndefined(menuAfterDelete.id);
|
713
847
|
});
|
848
|
+
|
849
|
+
it('should clear the list of previous conversations when all history is deleted', async () => {
|
850
|
+
const {panel, view} = await createAiAssistancePanel({aidaClient: mockAidaClient([[{explanation: 'test'}]])});
|
851
|
+
panel.handleAction('freestyler.elements-floating-button');
|
852
|
+
(await view.nextInput).onTextSubmit('test');
|
853
|
+
await view.nextInput;
|
854
|
+
|
855
|
+
let {contextMenu} = openHistoryContextMenu(view.input, 'test');
|
856
|
+
assert.isDefined(findMenuItemWithLabel(contextMenu.defaultSection(), 'test'));
|
857
|
+
contextMenu.discard();
|
858
|
+
|
859
|
+
await AiAssistanceModel.AiHistoryStorage.instance().deleteAll();
|
860
|
+
|
861
|
+
const newViewInput = await view.nextInput;
|
862
|
+
({contextMenu} = openHistoryContextMenu(newViewInput, 'test'));
|
863
|
+
|
864
|
+
const defaultSectionItems = contextMenu.defaultSection().items;
|
865
|
+
assert.lengthOf(defaultSectionItems, 1, 'Default section should have one item');
|
866
|
+
|
867
|
+
const placeholderItem = defaultSectionItems[0];
|
868
|
+
assert.strictEqual(placeholderItem.buildDescriptor().label, 'No past conversations');
|
869
|
+
assert.isFalse(placeholderItem.isEnabled(), 'Placeholder item should be disabled');
|
870
|
+
});
|
714
871
|
});
|
715
872
|
|
716
873
|
describe('empty state', () => {
|
@@ -747,8 +904,7 @@ describeWithMockConnection('AI Assistance Panel', () => {
|
|
747
904
|
enabled: true,
|
748
905
|
},
|
749
906
|
});
|
750
|
-
|
751
|
-
Elements.ElementsPanel.ElementsPanel, sinon.createStubInstance(Elements.ElementsPanel.ElementsPanel));
|
907
|
+
viewManagerIsViewVisibleStub.callsFake(viewName => viewName === 'elements');
|
752
908
|
const {panel, view} = await createAiAssistancePanel({aidaClient: mockAidaClient([[{explanation: 'test'}]])});
|
753
909
|
panel.handleAction('freestyler.elements-floating-button');
|
754
910
|
(await view.nextInput).onTextSubmit('test');
|
@@ -876,8 +1032,7 @@ describeWithMockConnection('AI Assistance Panel', () => {
|
|
876
1032
|
const {panel, view} = await createAiAssistancePanel({
|
877
1033
|
aidaClient: mockAidaClient([[{explanation: 'test'}], [{explanation: 'test2'}]]),
|
878
1034
|
});
|
879
|
-
|
880
|
-
Elements.ElementsPanel.ElementsPanel, sinon.createStubInstance(Elements.ElementsPanel.ElementsPanel));
|
1035
|
+
viewManagerIsViewVisibleStub.callsFake(viewName => viewName === 'elements');
|
881
1036
|
|
882
1037
|
panel.handleAction('freestyler.elements-floating-button');
|
883
1038
|
view.input.onTextSubmit('test');
|
@@ -897,8 +1052,7 @@ describeWithMockConnection('AI Assistance Panel', () => {
|
|
897
1052
|
},
|
898
1053
|
]);
|
899
1054
|
|
900
|
-
|
901
|
-
Elements.ElementsPanel.ElementsPanel, sinon.createStubInstance(Elements.ElementsPanel.ElementsPanel));
|
1055
|
+
viewManagerIsViewVisibleStub.callsFake(viewName => viewName === 'elements');
|
902
1056
|
|
903
1057
|
panel.handleAction('freestyler.elements-floating-button');
|
904
1058
|
view.input.onTextSubmit('test2');
|
@@ -969,46 +1123,92 @@ describeWithMockConnection('AI Assistance Panel', () => {
|
|
969
1123
|
assert.isTrue((await view.nextInput).blockedByCrossOrigin);
|
970
1124
|
assert.strictEqual(view.input.selectedContext?.getItem(), networkRequest2);
|
971
1125
|
});
|
1126
|
+
|
1127
|
+
it('starts a new chat when a predefined prompt for a cross origin request is sent', async () => {
|
1128
|
+
const networkRequest = createNetworkRequest({
|
1129
|
+
url: urlString`https://a.test`,
|
1130
|
+
});
|
1131
|
+
UI.Context.Context.instance().setFlavor(SDK.NetworkRequest.NetworkRequest, networkRequest);
|
1132
|
+
|
1133
|
+
const {panel, view} = await createAiAssistancePanel({
|
1134
|
+
aidaClient: mockAidaClient([
|
1135
|
+
[{explanation: 'test'}],
|
1136
|
+
])
|
1137
|
+
});
|
1138
|
+
panel.handleAction('drjones.network-floating-button', {prompt: 'Tell me more'});
|
1139
|
+
assert.isFalse((await view.nextInput).blockedByCrossOrigin);
|
1140
|
+
|
1141
|
+
// Change context to https://b.test.
|
1142
|
+
const networkRequest2 = createNetworkRequest({
|
1143
|
+
url: urlString`https://b.test`,
|
1144
|
+
});
|
1145
|
+
UI.Context.Context.instance().setFlavor(SDK.NetworkRequest.NetworkRequest, networkRequest2);
|
1146
|
+
|
1147
|
+
// A predefined prompt from the user on a different origin has been initiated.
|
1148
|
+
// This should automatically start a new chat, to allow for the prompt to be executed.
|
1149
|
+
panel.handleAction('drjones.network-floating-button', {prompt: 'Tell me more about another one'});
|
1150
|
+
const input = await view.nextInput;
|
1151
|
+
assert.isFalse(input.blockedByCrossOrigin);
|
1152
|
+
});
|
1153
|
+
});
|
1154
|
+
|
1155
|
+
describe('copy response', () => {
|
1156
|
+
it('should copy the response to clipboard when copy button is clicked', async () => {
|
1157
|
+
const {view} = await createAiAssistancePanel();
|
1158
|
+
const modelMessage: AiAssistancePanel.ModelChatMessage = {
|
1159
|
+
entity: AiAssistancePanel.ChatMessageEntity.MODEL,
|
1160
|
+
steps: [],
|
1161
|
+
answer: 'test',
|
1162
|
+
};
|
1163
|
+
|
1164
|
+
const copyTextStub = sinon.stub(Host.InspectorFrontendHost.InspectorFrontendHostInstance, 'copyText');
|
1165
|
+
const showSnackbarStub = sinon.stub(Snackbars.Snackbar.Snackbar, 'show');
|
1166
|
+
view.input.onCopyResponseClick(modelMessage);
|
1167
|
+
|
1168
|
+
const expectedMarkdown = AiAssistancePanel.getResponseMarkdown(modelMessage);
|
1169
|
+
sinon.assert.calledOnceWithExactly(copyTextStub, expectedMarkdown);
|
1170
|
+
sinon.assert.calledOnce(showSnackbarStub);
|
1171
|
+
});
|
972
1172
|
});
|
973
1173
|
|
974
1174
|
describe('auto agent selection for panels', () => {
|
975
1175
|
const tests: Array<{
|
976
|
-
|
1176
|
+
panelName: string,
|
977
1177
|
expectedConversationType: AiAssistanceModel.ConversationType,
|
978
1178
|
featureFlagName: string,
|
979
1179
|
}> =
|
980
1180
|
[
|
981
1181
|
{
|
982
|
-
|
1182
|
+
panelName: 'elements',
|
983
1183
|
expectedConversationType: AiAssistanceModel.ConversationType.STYLING,
|
984
1184
|
featureFlagName: 'devToolsFreestyler',
|
985
1185
|
},
|
986
1186
|
{
|
987
|
-
|
1187
|
+
panelName: 'network',
|
988
1188
|
expectedConversationType: AiAssistanceModel.ConversationType.NETWORK,
|
989
1189
|
featureFlagName: 'devToolsAiAssistanceNetworkAgent',
|
990
1190
|
},
|
991
1191
|
{
|
992
|
-
|
1192
|
+
panelName: 'sources',
|
993
1193
|
expectedConversationType: AiAssistanceModel.ConversationType.FILE,
|
994
1194
|
featureFlagName: 'devToolsAiAssistanceFileAgent',
|
995
1195
|
},
|
996
1196
|
{
|
997
|
-
|
998
|
-
expectedConversationType: AiAssistanceModel.ConversationType.
|
1197
|
+
panelName: 'timeline',
|
1198
|
+
expectedConversationType: AiAssistanceModel.ConversationType.PERFORMANCE_CALL_TREE,
|
999
1199
|
featureFlagName: 'devToolsAiAssistancePerformanceAgent',
|
1000
1200
|
}
|
1001
1201
|
];
|
1002
1202
|
|
1003
1203
|
for (const test of tests) {
|
1004
|
-
it(`should select ${test.expectedConversationType} conversation when the panel ${test.
|
1204
|
+
it(`should select ${test.expectedConversationType} conversation when the panel ${test.panelName} is opened`,
|
1005
1205
|
async () => {
|
1006
1206
|
updateHostConfig({
|
1007
1207
|
[test.featureFlagName]: {
|
1008
1208
|
enabled: true,
|
1009
1209
|
},
|
1010
1210
|
});
|
1011
|
-
|
1211
|
+
viewManagerIsViewVisibleStub.callsFake(viewName => viewName === test.panelName);
|
1012
1212
|
|
1013
1213
|
const {view} = await createAiAssistancePanel({
|
1014
1214
|
aidaClient: mockAidaClient([[{explanation: 'test'}]]),
|
@@ -1017,38 +1217,61 @@ describeWithMockConnection('AI Assistance Panel', () => {
|
|
1017
1217
|
assert.strictEqual(view.input.conversationType, test.expectedConversationType);
|
1018
1218
|
});
|
1019
1219
|
|
1020
|
-
it(`should reset the conversation when ${test.
|
1220
|
+
it(`should reset the conversation when ${test.panelName} is closed and no other panels are open`, async () => {
|
1021
1221
|
updateHostConfig({
|
1022
1222
|
[test.featureFlagName]: {
|
1023
1223
|
enabled: true,
|
1024
1224
|
},
|
1025
1225
|
});
|
1026
1226
|
|
1027
|
-
|
1227
|
+
viewManagerIsViewVisibleStub.callsFake(viewName => viewName === test.panelName);
|
1028
1228
|
|
1029
1229
|
const {view} = await createAiAssistancePanel();
|
1030
1230
|
|
1031
1231
|
assert.strictEqual(view.input.conversationType, test.expectedConversationType);
|
1032
1232
|
|
1033
|
-
|
1233
|
+
viewManagerIsViewVisibleStub.returns(false);
|
1234
|
+
UI.ViewManager.ViewManager.instance().dispatchEventToListeners(UI.ViewManager.Events.VIEW_VISIBILITY_CHANGED, {
|
1235
|
+
location: 'testLocation',
|
1236
|
+
revealedViewId: undefined,
|
1237
|
+
hiddenViewId: test.panelName,
|
1238
|
+
});
|
1034
1239
|
assert.isUndefined((await view.nextInput).conversationType);
|
1035
1240
|
});
|
1036
1241
|
|
1037
|
-
it(`should render no conversation state if the ${
|
1038
|
-
test.panel.name} panel is changed and the feature is not enabled`,
|
1242
|
+
it(`should render no conversation state if the ${test.panelName} panel is changed and the feature is not enabled`,
|
1039
1243
|
async () => {
|
1040
1244
|
updateHostConfig({
|
1041
1245
|
[test.featureFlagName]: {
|
1042
1246
|
enabled: false,
|
1043
1247
|
},
|
1044
1248
|
});
|
1045
|
-
|
1249
|
+
viewManagerIsViewVisibleStub.callsFake(viewName => viewName === test.panelName);
|
1046
1250
|
const {view} = await createAiAssistancePanel();
|
1047
1251
|
|
1048
1252
|
assert.isUndefined(view.input.conversationType);
|
1049
1253
|
});
|
1050
1254
|
}
|
1051
1255
|
|
1256
|
+
it('should refresh its state when moved', async () => {
|
1257
|
+
updateHostConfig({
|
1258
|
+
devToolsFreestyler: {
|
1259
|
+
enabled: true,
|
1260
|
+
},
|
1261
|
+
});
|
1262
|
+
viewManagerIsViewVisibleStub.callsFake(viewName => viewName === 'elements');
|
1263
|
+
const {panel, view} = await createAiAssistancePanel();
|
1264
|
+
|
1265
|
+
assert.strictEqual(view.input.conversationType, AiAssistanceModel.ConversationType.STYLING);
|
1266
|
+
|
1267
|
+
// Simulate ViewManager.moveView() that hides panel, updates locations and other panel visibility, then shows moved view
|
1268
|
+
panel.willHide();
|
1269
|
+
viewManagerIsViewVisibleStub.callsFake(viewName => viewName === 'console');
|
1270
|
+
panel.wasShown();
|
1271
|
+
|
1272
|
+
assert.isUndefined((await view.nextInput).conversationType);
|
1273
|
+
});
|
1274
|
+
|
1052
1275
|
describe('Performance Insight agent', () => {
|
1053
1276
|
it('should select the PERFORMANCE_INSIGHT agent when the performance panel is open and insights are enabled and an insight is expanded',
|
1054
1277
|
async () => {
|
@@ -1058,6 +1281,7 @@ describeWithMockConnection('AI Assistance Panel', () => {
|
|
1058
1281
|
insightsEnabled: true,
|
1059
1282
|
},
|
1060
1283
|
});
|
1284
|
+
viewManagerIsViewVisibleStub.callsFake(viewName => viewName === 'timeline');
|
1061
1285
|
UI.Context.Context.instance().setFlavor(
|
1062
1286
|
Timeline.TimelinePanel.TimelinePanel, sinon.createStubInstance(Timeline.TimelinePanel.TimelinePanel));
|
1063
1287
|
UI.Context.Context.instance().setFlavor(
|
@@ -1076,12 +1300,13 @@ describeWithMockConnection('AI Assistance Panel', () => {
|
|
1076
1300
|
insightsEnabled: true,
|
1077
1301
|
},
|
1078
1302
|
});
|
1303
|
+
viewManagerIsViewVisibleStub.callsFake(viewName => viewName === 'timeline');
|
1079
1304
|
UI.Context.Context.instance().setFlavor(
|
1080
1305
|
Timeline.TimelinePanel.TimelinePanel, sinon.createStubInstance(Timeline.TimelinePanel.TimelinePanel));
|
1081
1306
|
UI.Context.Context.instance().setFlavor(Timeline.TimelinePanel.SelectedInsight, null);
|
1082
1307
|
|
1083
1308
|
const {view} = await createAiAssistancePanel();
|
1084
|
-
assert.strictEqual(view.input.conversationType, AiAssistanceModel.ConversationType.
|
1309
|
+
assert.strictEqual(view.input.conversationType, AiAssistanceModel.ConversationType.PERFORMANCE_CALL_TREE);
|
1085
1310
|
});
|
1086
1311
|
});
|
1087
1312
|
});
|
@@ -1221,6 +1446,7 @@ describeWithMockConnection('AI Assistance Panel', () => {
|
|
1221
1446
|
enabled: true,
|
1222
1447
|
},
|
1223
1448
|
});
|
1449
|
+
viewManagerIsViewVisibleStub.callsFake(viewName => viewName === 'timeline');
|
1224
1450
|
UI.Context.Context.instance().setFlavor(
|
1225
1451
|
Timeline.TimelinePanel.TimelinePanel, sinon.createStubInstance(Timeline.TimelinePanel.TimelinePanel));
|
1226
1452
|
Common.Settings.moduleSetting('ai-assistance-enabled').set(true);
|
@@ -1244,6 +1470,7 @@ describeWithMockConnection('AI Assistance Panel', () => {
|
|
1244
1470
|
|
1245
1471
|
const timelinePanel = sinon.createStubInstance(Timeline.TimelinePanel.TimelinePanel);
|
1246
1472
|
timelinePanel.hasActiveTrace.callsFake(() => true);
|
1473
|
+
viewManagerIsViewVisibleStub.callsFake(viewName => viewName === 'timeline');
|
1247
1474
|
UI.Context.Context.instance().setFlavor(Timeline.TimelinePanel.TimelinePanel, timelinePanel);
|
1248
1475
|
Common.Settings.moduleSetting('ai-assistance-enabled').set(true);
|
1249
1476
|
const {panel, view} =
|
@@ -1265,17 +1492,20 @@ describeWithMockConnection('AI Assistance Panel', () => {
|
|
1265
1492
|
|
1266
1493
|
const timelinePanel = sinon.createStubInstance(Timeline.TimelinePanel.TimelinePanel);
|
1267
1494
|
timelinePanel.hasActiveTrace.callsFake(() => true);
|
1495
|
+
viewManagerIsViewVisibleStub.callsFake(viewName => viewName === 'timeline');
|
1268
1496
|
UI.Context.Context.instance().setFlavor(Timeline.TimelinePanel.TimelinePanel, timelinePanel);
|
1269
1497
|
|
1270
1498
|
const fakeCallTree = sinon.createStubInstance(TimelineUtils.AICallTree.AICallTree);
|
1271
|
-
|
1499
|
+
const focus = TimelineUtils.AIContext.AgentFocus.fromCallTree(fakeCallTree);
|
1500
|
+
UI.Context.Context.instance().setFlavor(TimelineUtils.AIContext.AgentFocus, focus);
|
1501
|
+
|
1272
1502
|
Common.Settings.moduleSetting('ai-assistance-enabled').set(true);
|
1273
1503
|
const {panel, view} =
|
1274
1504
|
await createAiAssistancePanel({aidaAvailability: Host.AidaClient.AidaAccessPreconditions.AVAILABLE});
|
1275
1505
|
panel.handleAction('drjones.performance-panel-context');
|
1276
1506
|
|
1277
|
-
assert.isFalse(view.input.isTextInputDisabled);
|
1278
1507
|
assert.strictEqual(view.input.inputPlaceholder, 'Ask a question about the selected item and its call tree');
|
1508
|
+
assert.isFalse(view.input.isTextInputDisabled);
|
1279
1509
|
});
|
1280
1510
|
});
|
1281
1511
|
|
@@ -1287,8 +1517,7 @@ describeWithMockConnection('AI Assistance Panel', () => {
|
|
1287
1517
|
},
|
1288
1518
|
});
|
1289
1519
|
|
1290
|
-
|
1291
|
-
Elements.ElementsPanel.ElementsPanel, sinon.createStubInstance(Elements.ElementsPanel.ElementsPanel));
|
1520
|
+
viewManagerIsViewVisibleStub.callsFake(viewName => viewName === 'elements');
|
1292
1521
|
const {panel, view} =
|
1293
1522
|
await createAiAssistancePanel({aidaAvailability: Host.AidaClient.AidaAccessPreconditions.AVAILABLE});
|
1294
1523
|
|
@@ -1331,8 +1560,7 @@ describeWithMockConnection('AI Assistance Panel', () => {
|
|
1331
1560
|
multimodal: false,
|
1332
1561
|
},
|
1333
1562
|
});
|
1334
|
-
|
1335
|
-
Elements.ElementsPanel.ElementsPanel, sinon.createStubInstance(Elements.ElementsPanel.ElementsPanel));
|
1563
|
+
viewManagerIsViewVisibleStub.callsFake(viewName => viewName === 'elements');
|
1336
1564
|
const {view} = await createAiAssistancePanel();
|
1337
1565
|
|
1338
1566
|
assert.isFalse(view.input.multimodalInputEnabled);
|
@@ -1351,8 +1579,7 @@ describeWithMockConnection('AI Assistance Panel', () => {
|
|
1351
1579
|
multimodalUploadInput: false,
|
1352
1580
|
},
|
1353
1581
|
});
|
1354
|
-
|
1355
|
-
Elements.ElementsPanel.ElementsPanel, sinon.createStubInstance(Elements.ElementsPanel.ElementsPanel));
|
1582
|
+
viewManagerIsViewVisibleStub.callsFake(viewName => viewName === 'elements');
|
1356
1583
|
const {view} = await createAiAssistancePanel();
|
1357
1584
|
|
1358
1585
|
assert.isTrue(view.input.multimodalInputEnabled);
|
@@ -1370,8 +1597,7 @@ describeWithMockConnection('AI Assistance Panel', () => {
|
|
1370
1597
|
multimodal: true,
|
1371
1598
|
},
|
1372
1599
|
});
|
1373
|
-
|
1374
|
-
Elements.ElementsPanel.ElementsPanel, sinon.createStubInstance(Elements.ElementsPanel.ElementsPanel));
|
1600
|
+
viewManagerIsViewVisibleStub.callsFake(viewName => viewName === 'elements');
|
1375
1601
|
const {view} = await createAiAssistancePanel();
|
1376
1602
|
|
1377
1603
|
assert.isTrue(view.input.multimodalInputEnabled);
|
@@ -1398,8 +1624,7 @@ describeWithMockConnection('AI Assistance Panel', () => {
|
|
1398
1624
|
multimodalUploadInput: true,
|
1399
1625
|
},
|
1400
1626
|
});
|
1401
|
-
|
1402
|
-
Elements.ElementsPanel.ElementsPanel, sinon.createStubInstance(Elements.ElementsPanel.ElementsPanel));
|
1627
|
+
viewManagerIsViewVisibleStub.callsFake(viewName => viewName === 'elements');
|
1403
1628
|
const {view} = await createAiAssistancePanel();
|
1404
1629
|
const blob = new Blob(['imageInput'], {type: 'image/jpeg'});
|
1405
1630
|
|
@@ -1426,8 +1651,7 @@ describeWithMockConnection('AI Assistance Panel', () => {
|
|
1426
1651
|
multimodal: true,
|
1427
1652
|
},
|
1428
1653
|
});
|
1429
|
-
|
1430
|
-
Elements.ElementsPanel.ElementsPanel, sinon.createStubInstance(Elements.ElementsPanel.ElementsPanel));
|
1654
|
+
viewManagerIsViewVisibleStub.callsFake(viewName => viewName === 'elements');
|
1431
1655
|
const {view} = await createAiAssistancePanel({aidaClient: mockAidaClient([[{explanation: 'test'}]])});
|
1432
1656
|
|
1433
1657
|
assert.isTrue(view.input.multimodalInputEnabled);
|
@@ -1460,8 +1684,7 @@ describeWithMockConnection('AI Assistance Panel', () => {
|
|
1460
1684
|
multimodal: true,
|
1461
1685
|
},
|
1462
1686
|
});
|
1463
|
-
|
1464
|
-
Elements.ElementsPanel.ElementsPanel, sinon.createStubInstance(Elements.ElementsPanel.ElementsPanel));
|
1687
|
+
viewManagerIsViewVisibleStub.callsFake(viewName => viewName === 'elements');
|
1465
1688
|
const {view} = await createAiAssistancePanel();
|
1466
1689
|
|
1467
1690
|
assert.isUndefined(view.input.imageInput);
|
@@ -1477,305 +1700,115 @@ describeWithMockConnection('AI Assistance Panel', () => {
|
|
1477
1700
|
});
|
1478
1701
|
});
|
1479
1702
|
|
1480
|
-
describe('
|
1481
|
-
|
1482
|
-
|
1483
|
-
|
1484
|
-
|
1485
|
-
updateHostConfig({
|
1486
|
-
devToolsFreestyler: {
|
1487
|
-
enabled: true,
|
1488
|
-
},
|
1489
|
-
});
|
1703
|
+
describe('getResponseMarkdown', () => {
|
1704
|
+
let snapshotTester: SnapshotTester;
|
1705
|
+
before(async () => {
|
1706
|
+
snapshotTester = new SnapshotTester(import.meta);
|
1707
|
+
await snapshotTester.load();
|
1490
1708
|
});
|
1491
1709
|
|
1492
|
-
|
1493
|
-
|
1494
|
-
const {panel} = await createAiAssistancePanel({
|
1495
|
-
aidaClient: mockAidaClient([[{explanation}]]),
|
1496
|
-
});
|
1497
|
-
try {
|
1498
|
-
await panel.handleExternalRequest(
|
1499
|
-
'Please help me debug this problem', AiAssistanceModel.ConversationType.STYLING);
|
1500
|
-
assert.fail('Expected `handleExternalRequest` to throw');
|
1501
|
-
} catch (err) {
|
1502
|
-
assert.strictEqual(
|
1503
|
-
err.message, 'For AI features to be available, you need to enable AI assistance in DevTools settings.');
|
1504
|
-
}
|
1710
|
+
after(async () => {
|
1711
|
+
await snapshotTester.finish();
|
1505
1712
|
});
|
1506
1713
|
|
1507
|
-
it('
|
1508
|
-
const
|
1509
|
-
|
1510
|
-
|
1511
|
-
|
1512
|
-
|
1513
|
-
|
1514
|
-
|
1515
|
-
|
1516
|
-
|
1517
|
-
|
1518
|
-
|
1519
|
-
|
1520
|
-
|
1714
|
+
it('should generate correct markdown from a message object', function() {
|
1715
|
+
const message: AiAssistancePanel.ModelChatMessage = {
|
1716
|
+
entity: AiAssistancePanel.ChatMessageEntity.MODEL,
|
1717
|
+
steps: [
|
1718
|
+
{
|
1719
|
+
isLoading: false,
|
1720
|
+
contextDetails: [
|
1721
|
+
{title: 'Detail 1', text: '*Some markdown text'},
|
1722
|
+
{title: 'Detail 2', text: 'Some text', codeLang: 'js'},
|
1723
|
+
],
|
1724
|
+
},
|
1725
|
+
{
|
1726
|
+
isLoading: false,
|
1727
|
+
title: 'Step Title',
|
1728
|
+
thought: 'Step Thought',
|
1729
|
+
code: 'console.log("hello");',
|
1730
|
+
output: 'hello',
|
1731
|
+
},
|
1732
|
+
],
|
1733
|
+
answer: 'Final answer.',
|
1734
|
+
};
|
1521
1735
|
|
1522
|
-
|
1523
|
-
|
1524
|
-
aidaAvailability: {
|
1525
|
-
blockedByAge: true,
|
1526
|
-
},
|
1527
|
-
devToolsFreestyler: {
|
1528
|
-
enabled: true,
|
1529
|
-
},
|
1530
|
-
});
|
1531
|
-
const {panel} = await createAiAssistancePanel({
|
1532
|
-
aidaClient: mockAidaClient([[{explanation}]]),
|
1533
|
-
});
|
1534
|
-
try {
|
1535
|
-
await panel.handleExternalRequest(
|
1536
|
-
'Please help me debug this problem', AiAssistanceModel.ConversationType.STYLING);
|
1537
|
-
assert.fail('Expected `handleExternalRequest` to throw');
|
1538
|
-
} catch (err) {
|
1539
|
-
assert.strictEqual(err.message, 'This feature is only available to users who are 18 years of age or older.');
|
1540
|
-
}
|
1736
|
+
const result = AiAssistancePanel.getResponseMarkdown(message);
|
1737
|
+
snapshotTester.assert(this, result);
|
1541
1738
|
});
|
1739
|
+
});
|
1542
1740
|
|
1543
|
-
|
1544
|
-
|
1545
|
-
|
1546
|
-
|
1547
|
-
const snackbarShowStub = sinon.stub(Snackbars.Snackbar.Snackbar, 'show');
|
1548
|
-
const response = await panel.handleExternalRequest(
|
1549
|
-
'Please help me debug this problem', AiAssistanceModel.ConversationType.STYLING);
|
1550
|
-
assert.strictEqual(response.response, explanation);
|
1551
|
-
sinon.assert.calledOnceWithExactly(snackbarShowStub, {message: 'DevTools received an external request'});
|
1741
|
+
describe('a11y announcements', () => {
|
1742
|
+
let liveAnnouncerStatusStub: sinon.SinonStub;
|
1743
|
+
beforeEach(() => {
|
1744
|
+
liveAnnouncerStatusStub = sinon.stub(UI.ARIAUtils.LiveAnnouncer, 'status').returns();
|
1552
1745
|
});
|
1553
1746
|
|
1554
|
-
it('
|
1555
|
-
const
|
1556
|
-
|
1557
|
-
|
1558
|
-
|
1559
|
-
|
1560
|
-
|
1561
|
-
|
1562
|
-
|
1563
|
-
});
|
1564
|
-
const executionContext = runtimeModel.defaultExecutionContext();
|
1565
|
-
assert.isNotNull(executionContext);
|
1566
|
-
const evaluateStub = sinon.stub().returns({object: {objectId: 'some-id'}});
|
1567
|
-
executionContext.evaluate = evaluateStub;
|
1568
|
-
const callFunctionOnStub = sinon.stub().returns({object: {}});
|
1569
|
-
executionContext.callFunctionOn = callFunctionOnStub;
|
1570
|
-
|
1571
|
-
const {panel} = await createAiAssistancePanel({
|
1572
|
-
aidaClient: mockAidaClient([[{explanation}]]),
|
1573
|
-
});
|
1574
|
-
const response = await panel.handleExternalRequest(
|
1575
|
-
'Please help me debug this problem', AiAssistanceModel.ConversationType.STYLING, 'h1');
|
1576
|
-
assert.strictEqual(response.response, explanation);
|
1577
|
-
sinon.assert.calledOnce(evaluateStub);
|
1578
|
-
sinon.assert.calledOnce(callFunctionOnStub);
|
1579
|
-
assert.strictEqual(callFunctionOnStub.getCall(0).args[0].arguments[1].value, 'h1');
|
1580
|
-
});
|
1747
|
+
it('should announce the context title from the agent as status', async () => {
|
1748
|
+
const stubbedResponses: AsyncGenerator<AiAssistanceModel.ResponseData> = (async function*() {
|
1749
|
+
yield {
|
1750
|
+
type: AiAssistanceModel.ResponseType.CONTEXT,
|
1751
|
+
title: 'context-title',
|
1752
|
+
details: [{title: 'mock', text: 'mock'}]
|
1753
|
+
};
|
1754
|
+
})();
|
1755
|
+
sinon.stub(AiAssistanceModel.StylingAgent.prototype, 'run').returns(stubbedResponses);
|
1756
|
+
const {panel, view} = await createAiAssistancePanel();
|
1581
1757
|
|
1582
|
-
|
1583
|
-
|
1584
|
-
|
1585
|
-
[{
|
1586
|
-
explanation: `ACTION
|
1587
|
-
$0.style.backgroundColor = 'red'
|
1588
|
-
STOP`,
|
1589
|
-
}],
|
1590
|
-
])
|
1591
|
-
});
|
1592
|
-
try {
|
1593
|
-
await panel.handleExternalRequest(
|
1594
|
-
'Please help me debug this problem', AiAssistanceModel.ConversationType.STYLING);
|
1595
|
-
assert.fail('Expected `handleExternalRequest` to throw');
|
1596
|
-
} catch (err) {
|
1597
|
-
assert.strictEqual(err.message, 'Something went wrong. No answer was generated.');
|
1598
|
-
}
|
1599
|
-
});
|
1758
|
+
panel.handleAction('freestyler.elements-floating-button');
|
1759
|
+
(await view.nextInput).onTextSubmit('test');
|
1760
|
+
await view.nextInput;
|
1600
1761
|
|
1601
|
-
|
1602
|
-
|
1603
|
-
|
1604
|
-
});
|
1605
|
-
await panel.handleExternalRequest(
|
1606
|
-
'Please help me debug this problem', AiAssistanceModel.ConversationType.STYLING);
|
1607
|
-
const {contextMenu, id} = openHistoryContextMenu(view.input, '[External] Please help me debug this problem');
|
1608
|
-
assert.isDefined(id);
|
1609
|
-
contextMenu.invokeHandler(id);
|
1610
|
-
assert.isTrue((await view.nextInput).isReadOnly);
|
1611
|
-
assert.deepEqual(view.input.messages, [
|
1612
|
-
{
|
1613
|
-
entity: AiAssistancePanel.ChatMessageEntity.USER,
|
1614
|
-
imageInput: undefined,
|
1615
|
-
text: 'Please help me debug this problem',
|
1616
|
-
},
|
1617
|
-
{
|
1618
|
-
answer: explanation,
|
1619
|
-
entity: AiAssistancePanel.ChatMessageEntity.MODEL,
|
1620
|
-
rpcId: undefined,
|
1621
|
-
suggestions: undefined,
|
1622
|
-
steps: [],
|
1623
|
-
},
|
1624
|
-
]);
|
1762
|
+
assert.isTrue(
|
1763
|
+
liveAnnouncerStatusStub.calledWith('context-title'),
|
1764
|
+
'Expected live announcer status to be called with the context title');
|
1625
1765
|
});
|
1626
1766
|
|
1627
|
-
it('
|
1628
|
-
const
|
1629
|
-
{
|
1630
|
-
|
1631
|
-
|
1632
|
-
|
1633
|
-
|
1634
|
-
|
1635
|
-
|
1636
|
-
|
1637
|
-
|
1638
|
-
|
1639
|
-
|
1640
|
-
|
1641
|
-
|
1642
|
-
|
1643
|
-
},
|
1644
|
-
{
|
1645
|
-
text: '- URL: https://a.test',
|
1646
|
-
title: 'Request initiator chain',
|
1647
|
-
},
|
1648
|
-
],
|
1649
|
-
isLoading: false,
|
1650
|
-
sideEffect: undefined,
|
1651
|
-
title: 'Analyzing network data',
|
1652
|
-
},
|
1653
|
-
] as AiAssistancePanel.Step[];
|
1654
|
-
|
1655
|
-
createTarget();
|
1656
|
-
await createNetworkPanelForMockConnection();
|
1657
|
-
updateHostConfig({
|
1658
|
-
devToolsFreestyler: {
|
1659
|
-
enabled: true,
|
1660
|
-
},
|
1661
|
-
});
|
1662
|
-
const networkRequest = createNetworkRequest({
|
1663
|
-
url: urlString`https://a.test`,
|
1664
|
-
});
|
1665
|
-
UI.Context.Context.instance().setFlavor(SDK.NetworkRequest.NetworkRequest, networkRequest);
|
1666
|
-
Common.Settings.moduleSetting('ai-assistance-enabled').set(true);
|
1667
|
-
const {panel, view} = await createAiAssistancePanel(
|
1668
|
-
{aidaClient: mockAidaClient([[{explanation: 'test'}], [{explanation: 'test2'}], [{explanation: 'test3'}]])});
|
1669
|
-
|
1670
|
-
panel.handleAction('drjones.network-floating-button');
|
1671
|
-
(await view.nextInput).onTextSubmit('User question to DrJones?');
|
1672
|
-
assert.deepEqual((await view.nextInput).messages, [
|
1673
|
-
{
|
1674
|
-
entity: AiAssistancePanel.ChatMessageEntity.USER,
|
1675
|
-
text: 'User question to DrJones?',
|
1676
|
-
imageInput: undefined,
|
1677
|
-
},
|
1678
|
-
{
|
1679
|
-
answer: 'test',
|
1680
|
-
entity: AiAssistancePanel.ChatMessageEntity.MODEL,
|
1681
|
-
rpcId: undefined,
|
1682
|
-
suggestions: undefined,
|
1683
|
-
steps,
|
1684
|
-
},
|
1685
|
-
]);
|
1686
|
-
|
1687
|
-
const response = await panel.handleExternalRequest(
|
1688
|
-
'Please help me debug this problem', AiAssistanceModel.ConversationType.STYLING);
|
1689
|
-
assert.strictEqual(response.response, 'test2');
|
1767
|
+
it('should announce answer loading when answer starts streaming as status', async () => {
|
1768
|
+
const stubbedResponses: AsyncGenerator<AiAssistanceModel.ResponseData> = (async function*() {
|
1769
|
+
yield {
|
1770
|
+
type: AiAssistanceModel.ResponseType.ANSWER,
|
1771
|
+
text: 'streaming ans',
|
1772
|
+
complete: false,
|
1773
|
+
};
|
1774
|
+
|
1775
|
+
yield {
|
1776
|
+
type: AiAssistanceModel.ResponseType.ANSWER,
|
1777
|
+
text: 'streaming answer is not compl',
|
1778
|
+
complete: false,
|
1779
|
+
};
|
1780
|
+
})();
|
1781
|
+
sinon.stub(AiAssistanceModel.StylingAgent.prototype, 'run').returns(stubbedResponses);
|
1782
|
+
const {panel, view} = await createAiAssistancePanel();
|
1690
1783
|
|
1691
|
-
|
1692
|
-
|
1693
|
-
|
1694
|
-
entity: AiAssistancePanel.ChatMessageEntity.USER,
|
1695
|
-
text: 'User question to DrJones?',
|
1696
|
-
imageInput: undefined,
|
1697
|
-
},
|
1698
|
-
{
|
1699
|
-
answer: 'test',
|
1700
|
-
entity: AiAssistancePanel.ChatMessageEntity.MODEL,
|
1701
|
-
rpcId: undefined,
|
1702
|
-
suggestions: undefined,
|
1703
|
-
steps,
|
1704
|
-
},
|
1705
|
-
{
|
1706
|
-
entity: AiAssistancePanel.ChatMessageEntity.USER,
|
1707
|
-
text: 'Follow-up question to DrJones?',
|
1708
|
-
imageInput: undefined,
|
1709
|
-
},
|
1710
|
-
{
|
1711
|
-
answer: 'test3',
|
1712
|
-
entity: AiAssistancePanel.ChatMessageEntity.MODEL,
|
1713
|
-
rpcId: undefined,
|
1714
|
-
suggestions: undefined,
|
1715
|
-
steps,
|
1716
|
-
},
|
1717
|
-
]);
|
1718
|
-
});
|
1784
|
+
panel.handleAction('freestyler.elements-floating-button');
|
1785
|
+
(await view.nextInput).onTextSubmit('test');
|
1786
|
+
await view.nextInput;
|
1719
1787
|
|
1720
|
-
|
1721
|
-
|
1722
|
-
|
1723
|
-
|
1724
|
-
try {
|
1725
|
-
await panel.handleExternalRequest('Please help me debug this problem', AiAssistanceModel.ConversationType.FILE);
|
1726
|
-
assert.fail('Expected `handleExternalRequest` to throw');
|
1727
|
-
} catch (err) {
|
1728
|
-
assert.strictEqual(
|
1729
|
-
err.message,
|
1730
|
-
`Debugging with an agent of type '${AiAssistanceModel.ConversationType.FILE}' is not implemented yet.`);
|
1731
|
-
}
|
1788
|
+
assert.isTrue(liveAnnouncerStatusStub.calledOnce, 'Expected live announcer status to be called only once');
|
1789
|
+
assert.isTrue(
|
1790
|
+
liveAnnouncerStatusStub.calledWith('Answer loading'),
|
1791
|
+
'Expected live announcer status to be called with the text "Answer loading"');
|
1732
1792
|
});
|
1733
1793
|
|
1734
|
-
it('
|
1735
|
-
const
|
1736
|
-
|
1737
|
-
|
1738
|
-
|
1739
|
-
|
1740
|
-
|
1741
|
-
|
1742
|
-
|
1743
|
-
|
1744
|
-
err.message,
|
1745
|
-
`Debugging with an agent of type '${AiAssistanceModel.ConversationType.NETWORK}' is not implemented yet.`);
|
1746
|
-
}
|
1747
|
-
});
|
1794
|
+
it('should announce answer ready when answer completes streaming', async () => {
|
1795
|
+
const stubbedResponses: AsyncGenerator<AiAssistanceModel.ResponseData> = (async function*() {
|
1796
|
+
yield {
|
1797
|
+
type: AiAssistanceModel.ResponseType.ANSWER,
|
1798
|
+
text: 'streaming answer is not completed before but now it is complete',
|
1799
|
+
complete: true,
|
1800
|
+
};
|
1801
|
+
})();
|
1802
|
+
sinon.stub(AiAssistanceModel.StylingAgent.prototype, 'run').returns(stubbedResponses);
|
1803
|
+
const {panel, view} = await createAiAssistancePanel();
|
1748
1804
|
|
1749
|
-
|
1750
|
-
|
1751
|
-
|
1752
|
-
});
|
1753
|
-
try {
|
1754
|
-
await panel.handleExternalRequest(
|
1755
|
-
'Please help me debug this problem', AiAssistanceModel.ConversationType.PERFORMANCE);
|
1756
|
-
assert.fail('Expected `handleExternalRequest` to throw');
|
1757
|
-
} catch (err) {
|
1758
|
-
assert.strictEqual(
|
1759
|
-
err.message,
|
1760
|
-
`Debugging with an agent of type '${
|
1761
|
-
AiAssistanceModel.ConversationType.PERFORMANCE}' is not implemented yet.`);
|
1762
|
-
}
|
1763
|
-
});
|
1805
|
+
panel.handleAction('freestyler.elements-floating-button');
|
1806
|
+
(await view.nextInput).onTextSubmit('test');
|
1807
|
+
await view.nextInput;
|
1764
1808
|
|
1765
|
-
|
1766
|
-
|
1767
|
-
|
1768
|
-
});
|
1769
|
-
try {
|
1770
|
-
await panel.handleExternalRequest(
|
1771
|
-
'Please help me debug this problem', AiAssistanceModel.ConversationType.PERFORMANCE_INSIGHT);
|
1772
|
-
assert.fail('Expected `handleExternalRequest` to throw');
|
1773
|
-
} catch (err) {
|
1774
|
-
assert.strictEqual(
|
1775
|
-
err.message,
|
1776
|
-
`Debugging with an agent of type '${
|
1777
|
-
AiAssistanceModel.ConversationType.PERFORMANCE_INSIGHT}' is not implemented yet.`);
|
1778
|
-
}
|
1809
|
+
assert.isTrue(
|
1810
|
+
liveAnnouncerStatusStub.calledWith('Answer ready'),
|
1811
|
+
'Expected live announcer status to be called with the text "Answer loading"');
|
1779
1812
|
});
|
1780
1813
|
});
|
1781
1814
|
});
|
@@ -1800,4 +1833,59 @@ describeWithEnvironment('AiAssistancePanel.ActionDelegate', () => {
|
|
1800
1833
|
const [size] = await setDrawerSizeCall;
|
1801
1834
|
assert.strictEqual(size, totalSizeStub / 4);
|
1802
1835
|
});
|
1836
|
+
|
1837
|
+
describe('Export conversation button', () => {
|
1838
|
+
it('is not visible for empty conversation', async () => {
|
1839
|
+
const {view} = await createAiAssistancePanel();
|
1840
|
+
assert.isFalse(view.input.showActiveConversationActions);
|
1841
|
+
});
|
1842
|
+
|
1843
|
+
it('should show export button if there are history items and disable it when loading', async () => {
|
1844
|
+
const {promise, resolve} = Promise.withResolvers<void>();
|
1845
|
+
const stubbedResponses: AsyncGenerator<AiAssistanceModel.ResponseData> = (async function*() {
|
1846
|
+
yield {
|
1847
|
+
type: AiAssistanceModel.ResponseType.THOUGHT,
|
1848
|
+
thought: 'first response answer ',
|
1849
|
+
};
|
1850
|
+
await promise;
|
1851
|
+
yield {
|
1852
|
+
type: AiAssistanceModel.ResponseType.ANSWER,
|
1853
|
+
text: 'second response answer',
|
1854
|
+
complete: true,
|
1855
|
+
};
|
1856
|
+
})();
|
1857
|
+
sinon.stub(AiAssistanceModel.StylingAgent.prototype, 'run').returns(stubbedResponses);
|
1858
|
+
|
1859
|
+
const {panel, view} = await createAiAssistancePanel();
|
1860
|
+
panel.handleAction('freestyler.elements-floating-button');
|
1861
|
+
|
1862
|
+
assert.isFalse(view.input.showActiveConversationActions, 'should not show export conversation action by default');
|
1863
|
+
(await view.nextInput).onTextSubmit('test');
|
1864
|
+
await view.nextInput;
|
1865
|
+
assert.isTrue(view.input.showActiveConversationActions, 'should show active conversation actions while loading');
|
1866
|
+
assert.isTrue(view.input.isLoading, 'button should be disabled while loading');
|
1867
|
+
resolve();
|
1868
|
+
await view.nextInput;
|
1869
|
+
assert.isTrue(view.input.showActiveConversationActions, 'should show active conversation actions after loading');
|
1870
|
+
});
|
1871
|
+
|
1872
|
+
it('should call the save function when export conversation button is clicked', async () => {
|
1873
|
+
const fileManager = Workspace.FileManager.FileManager.instance();
|
1874
|
+
const saveSpy = sinon.stub(fileManager, 'save');
|
1875
|
+
const closeSpy = sinon.stub(fileManager, 'close');
|
1876
|
+
const {panel, view} = await createAiAssistancePanel({
|
1877
|
+
aidaClient: mockAidaClient([[{explanation: 'test'}]]),
|
1878
|
+
});
|
1879
|
+
panel.handleAction('freestyler.elements-floating-button');
|
1880
|
+
(await view.nextInput).onTextSubmit('test question');
|
1881
|
+
await view.nextInput;
|
1882
|
+
await view.input.onExportConversationClick();
|
1883
|
+
|
1884
|
+
sinon.assert.calledOnce(saveSpy);
|
1885
|
+
sinon.assert.calledOnce(closeSpy);
|
1886
|
+
|
1887
|
+
const [fileName] = saveSpy.getCall(0).args;
|
1888
|
+
assert.strictEqual(fileName, 'devtools_test_question.md');
|
1889
|
+
});
|
1890
|
+
});
|
1803
1891
|
});
|