chrome-devtools-frontend 1.0.1662965 → 1.0.1664496
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/skills/{creating-a-model → devtools-model-management}/SKILL.md +0 -1
- package/.agents/skills/devtools-ux-writing-refactor/SKILL.md +2 -1
- package/.agents/skills/fixing-skipped-tests/SKILL.md +3 -3
- package/.agents/skills/merging-devtools-module/SKILL.md +1 -1
- package/.agents/skills/migrate-chromium-test/SKILL.md +3 -2
- package/.agents/skills/repro-flaky-tests/SKILL.md +71 -31
- package/.agents/skills/ui-eng-vision-widget-promoter/SKILL.md +1 -0
- package/docs/ui_engineering.md +2 -0
- package/eslint.config.mjs +1 -0
- package/front_end/core/common/Settings.ts +75 -0
- package/front_end/core/protocol_client/PuppeteerDevToolsConnection.ts +112 -0
- package/front_end/core/sdk/CPUProfilerModel.ts +21 -13
- package/front_end/core/sdk/CSSContainerQuery.ts +1 -1
- package/front_end/core/sdk/CSSLayer.ts +1 -1
- package/front_end/core/sdk/CSSMedia.ts +1 -1
- package/front_end/core/sdk/CSSModel.ts +1 -1
- package/front_end/core/sdk/CSSNavigation.ts +1 -1
- package/front_end/core/sdk/CSSProperty.ts +1 -1
- package/front_end/core/sdk/CSSQuery.ts +1 -1
- package/front_end/core/sdk/CSSRule.ts +1 -1
- package/front_end/core/sdk/CSSScope.ts +1 -1
- package/front_end/core/sdk/CSSStartingStyle.ts +1 -1
- package/front_end/core/sdk/CSSStyleDeclaration.ts +1 -1
- package/front_end/core/sdk/CSSStyleSheetHeader.ts +1 -1
- package/front_end/core/sdk/CSSSupports.ts +1 -1
- package/front_end/core/sdk/CompilerSourceMappingContentProvider.ts +1 -1
- package/front_end/core/sdk/NetworkManager.ts +1 -1
- package/front_end/core/sdk/NetworkRequest.ts +7 -7
- package/front_end/core/sdk/Resource.ts +1 -1
- package/front_end/core/sdk/ScopeTreeCache.ts +1 -1
- package/front_end/core/sdk/Script.ts +1 -1
- package/front_end/core/sdk/ServerSentEvents.ts +1 -1
- package/front_end/core/sdk/SourceMap.ts +1 -1
- package/front_end/core/sdk/SourceMapScopesInfo.ts +1 -1
- package/front_end/core/sdk/sdk-meta.ts +3 -3
- package/front_end/{models → core}/text_utils/ContentProvider.ts +4 -6
- package/front_end/{models → core}/text_utils/StaticContentProvider.ts +4 -6
- package/front_end/{models → core}/text_utils/StreamingContentData.ts +1 -2
- package/front_end/{models → core}/text_utils/TextRange.ts +6 -3
- package/front_end/{models → core}/text_utils/TextUtils.ts +7 -7
- package/front_end/{models → core}/text_utils/WasmDisassembly.ts +2 -2
- package/front_end/core/text_utils/text_utils.ts +27 -0
- package/front_end/entrypoints/formatter_worker/AcornTokenizer.ts +1 -1
- package/front_end/entrypoints/heap_snapshot_worker/HeapSnapshotLoader.ts +1 -1
- package/front_end/entrypoints/main/MainImpl.ts +14 -1
- package/front_end/foundation/Universe.ts +1 -1
- package/front_end/models/ai_assistance/AgentProject.ts +1 -1
- package/front_end/models/ai_assistance/agents/AccessibilityAgent.ts +3 -6
- package/front_end/models/ai_assistance/agents/AiAgent.ts +1 -1
- package/front_end/models/ai_assistance/agents/ContextSelectionAgent.ts +19 -11
- package/front_end/models/ai_assistance/agents/PerformanceAgent.snapshot.txt +2 -2
- package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +23 -10
- package/front_end/models/ai_assistance/agents/StorageAgent.ts +19 -18
- package/front_end/models/ai_assistance/agents/StylingAgent.ts +2 -3
- package/front_end/models/ai_assistance/contexts/FileContext.ts +7 -3
- package/front_end/models/ai_assistance/contexts/PerformanceTraceContext.ts +39 -11
- package/front_end/models/ai_assistance/data_formatters/FileFormatter.ts +6 -3
- package/front_end/models/ai_assistance/data_formatters/NetworkRequestFormatter.ts +1 -1
- package/front_end/models/ai_assistance/data_formatters/PerformanceInsightFormatter.snapshot.txt +4 -4
- package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.snapshot.txt +8 -8
- package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.ts +76 -3
- package/front_end/models/ai_assistance/tools/ListNetworkRequests.ts +11 -1
- package/front_end/models/badges/AiExplorerBadge.ts +8 -3
- package/front_end/models/badges/Badge.ts +1 -0
- package/front_end/models/badges/UserBadges.ts +11 -5
- package/front_end/models/bindings/CompilerScriptMapping.ts +1 -1
- package/front_end/models/bindings/ContentProviderBasedProject.ts +1 -1
- package/front_end/models/bindings/DebuggerLanguagePlugins.ts +2 -2
- package/front_end/models/bindings/DebuggerWorkspaceBinding.ts +1 -1
- package/front_end/models/bindings/DefaultScriptMapping.ts +1 -1
- package/front_end/models/bindings/FileUtils.ts +1 -1
- package/front_end/models/bindings/PresentationConsoleMessageHelper.ts +7 -10
- package/front_end/models/bindings/ResourceMapping.ts +1 -1
- package/front_end/models/bindings/ResourceScriptMapping.ts +1 -1
- package/front_end/models/bindings/SASSSourceMapping.ts +1 -1
- package/front_end/models/bindings/StylesSourceMapping.ts +1 -1
- package/front_end/models/breakpoints/BreakpointManager.ts +1 -1
- package/front_end/models/crux-manager/CrUXManager.ts +1 -1
- package/front_end/models/emulation/EmulatedDevices.ts +3 -2
- package/front_end/models/har/Importer.ts +1 -1
- package/front_end/models/har/Writer.ts +1 -1
- package/front_end/models/issues_manager/IssueAggregator.ts +9 -0
- package/front_end/models/issues_manager/IssuesManager.ts +5 -0
- package/front_end/models/issues_manager/LazyLoadImageIssue.ts +76 -0
- package/front_end/models/issues_manager/descriptions/lazyLoadImageZeroSize.md +7 -0
- package/front_end/models/issues_manager/issues_manager.ts +2 -0
- package/front_end/models/javascript_metadata/NativeFunctions.js +9 -10
- package/front_end/models/live-metrics/LiveMetrics.ts +2 -3
- package/front_end/models/logs/NetworkLog.ts +4 -3
- package/front_end/models/logs/logs-meta.ts +3 -3
- package/front_end/models/network_time_calculator/NetworkTimeCalculator.ts +4 -4
- package/front_end/models/persistence/Automapping.ts +1 -1
- package/front_end/models/persistence/AutomaticFileSystemWorkspaceBinding.ts +2 -2
- package/front_end/models/persistence/FileSystemWorkspaceBinding.ts +1 -1
- package/front_end/models/persistence/IsolatedFileSystem.ts +2 -2
- package/front_end/models/persistence/NetworkPersistenceManager.ts +1 -1
- package/front_end/models/persistence/PersistenceImpl.ts +1 -1
- package/front_end/models/persistence/PlatformFileSystem.ts +1 -1
- package/front_end/models/source_map_scopes/FunctionCodeResolver.ts +1 -1
- package/front_end/models/source_map_scopes/NamesResolver.ts +1 -1
- package/front_end/models/text_utils/text_utils.ts +2 -24
- package/front_end/models/trace/insights/ImageDelivery.ts +2 -2
- package/front_end/models/trace/insights/LegacyJavaScript.ts +1 -1
- package/front_end/models/trace/insights/RenderBlocking.ts +1 -1
- package/front_end/models/trace/insights/ThirdParties.ts +1 -1
- package/front_end/models/workspace/FileManager.ts +1 -1
- package/front_end/models/workspace/UISourceCode.ts +1 -1
- package/front_end/models/workspace/WorkspaceImpl.ts +1 -1
- package/front_end/models/workspace_diff/WorkspaceDiff.ts +1 -1
- package/front_end/panels/accessibility/AccessibilityNodeView.ts +1 -1
- package/front_end/panels/accessibility/AccessibilityStrings.ts +2 -2
- package/front_end/panels/ai_assistance/AiAssistancePanel.ts +1 -1
- package/front_end/panels/ai_assistance/ExportConversation.ts +1 -1
- package/front_end/panels/ai_assistance/ai_assistance-meta.ts +1 -1
- package/front_end/panels/ai_assistance/components/ChatMessage.ts +1 -1
- package/front_end/panels/application/AppManifestView.ts +4 -4
- package/front_end/panels/application/ApplicationPanelSidebar.ts +1 -2
- package/front_end/panels/application/CrashReportContextView.ts +1 -1
- package/front_end/panels/application/DOMStorageItemsView.ts +1 -1
- package/front_end/panels/application/DeviceBoundSessionsView.ts +4 -4
- package/front_end/panels/application/ExtensionStorageItemsView.ts +1 -1
- package/front_end/panels/application/FrameDetailsView.ts +1 -1
- package/front_end/panels/application/ServiceWorkerCacheTreeElement.ts +12 -2
- package/front_end/panels/application/ServiceWorkerCacheViews.ts +1 -1
- package/front_end/panels/application/application.ts +2 -0
- package/front_end/panels/application/components/BackForwardCacheView.ts +21 -5
- package/front_end/panels/application/components/CrashReportContextGrid.ts +1 -1
- package/front_end/panels/application/components/TrustTokensView.ts +2 -2
- package/front_end/panels/application/preloading/PreloadingView.ts +1 -1
- package/front_end/panels/application/preloading/components/PreloadingDisabledInfobar.ts +2 -2
- package/front_end/panels/application/preloading/components/PreloadingString.ts +2 -2
- package/front_end/panels/application/preloading/components/UsedPreloadingView.ts +4 -4
- package/front_end/panels/autofill/AutofillView.ts +1 -1
- package/front_end/panels/common/AiCodeCompletionTeaser.ts +1 -1
- package/front_end/panels/common/ExtensionServer.ts +1 -1
- package/front_end/panels/console/ConsoleFilter.ts +1 -1
- package/front_end/panels/console/ConsoleSidebar.ts +1 -1
- package/front_end/panels/console/ConsoleView.ts +1 -1
- package/front_end/panels/console/ConsoleViewMessage.ts +1 -1
- package/front_end/panels/console/PromptBuilder.ts +1 -1
- package/front_end/panels/coverage/CoverageDecorationManager.ts +9 -1
- package/front_end/panels/coverage/CoverageModel.ts +1 -1
- package/front_end/panels/css_overview/CSSOverviewCompletedView.ts +1 -1
- package/front_end/panels/developer_resources/DeveloperResourcesListView.ts +1 -1
- package/front_end/panels/developer_resources/DeveloperResourcesView.ts +1 -1
- package/front_end/panels/elements/AccessibilityTreeView.ts +38 -3
- package/front_end/panels/elements/AdoptedStyleSheetTreeElement.ts +1 -1
- package/front_end/panels/elements/ElementIssueUtils.ts +2 -2
- package/front_end/panels/elements/ElementsTreeElement.ts +10 -3
- package/front_end/panels/elements/StandaloneStylesContainer.ts +1 -1
- package/front_end/panels/elements/StylePropertiesSection.ts +1 -1
- package/front_end/panels/elements/StylePropertyTreeElement.ts +1 -1
- package/front_end/panels/elements/StylesAiCodeCompletionProvider.ts +1 -1
- package/front_end/panels/elements/StylesContainer.ts +1 -1
- package/front_end/panels/elements/StylesSidebarPane.ts +1 -1
- package/front_end/panels/elements/components/CSSPropertyDocsView.ts +1 -1
- package/front_end/panels/explain/components/ConsoleInsight.ts +2 -2
- package/front_end/panels/issues/AffectedLazyLoadImagesView.ts +76 -0
- package/front_end/panels/issues/AffectedResourcesView.ts +1 -1
- package/front_end/panels/issues/CorsIssueDetailsView.ts +1 -1
- package/front_end/panels/issues/IssueView.ts +2 -0
- package/front_end/panels/issues/issues.ts +2 -0
- package/front_end/panels/layer_viewer/Layers3DView.ts +1 -1
- package/front_end/panels/lighthouse/LighthouseController.ts +5 -0
- package/front_end/panels/lighthouse/LighthouseReportRenderer.ts +1 -1
- package/front_end/panels/network/BinaryResourceView.ts +1 -1
- package/front_end/panels/network/NetworkDataGridNode.ts +29 -7
- package/front_end/panels/network/NetworkLogView.ts +1 -1
- package/front_end/panels/network/NetworkLogViewColumns.ts +6 -6
- package/front_end/panels/network/NetworkPanel.ts +4 -4
- package/front_end/panels/network/NetworkSearchScope.ts +1 -1
- package/front_end/panels/network/RequestConditionsDrawer.ts +1 -1
- package/front_end/panels/network/RequestHTMLView.ts +1 -1
- package/front_end/panels/network/RequestPayloadView.ts +1 -1
- package/front_end/panels/network/RequestPreviewView.ts +1 -1
- package/front_end/panels/network/RequestResponseView.ts +1 -1
- package/front_end/panels/network/ResourceChunkView.ts +1 -1
- package/front_end/panels/network/ResourceDirectSocketChunkView.ts +1 -1
- package/front_end/panels/network/ResourceWebSocketFrameView.ts +1 -1
- package/front_end/panels/network/components/ResponseHeaderSection.ts +1 -1
- package/front_end/panels/network/forward/UIRequestLocation.ts +1 -1
- package/front_end/panels/network/network-meta.ts +3 -3
- package/front_end/panels/profiler/HeapProfileView.ts +6 -6
- package/front_end/panels/profiler/HeapSnapshotView.ts +1 -1
- package/front_end/panels/profiler/ProfileDataGrid.ts +12 -8
- package/front_end/panels/protocol_monitor/ProtocolMonitor.ts +1 -1
- package/front_end/panels/recorder/RecorderPanel.ts +493 -381
- package/front_end/panels/recorder/RecordingListView.ts +8 -37
- package/front_end/panels/recorder/RecordingView.ts +54 -27
- package/front_end/panels/recorder/SelectorPicker.ts +0 -13
- package/front_end/panels/recorder/StepEditor.ts +6 -14
- package/front_end/panels/recorder/StepView.ts +36 -105
- package/front_end/panels/search/SearchResultsPane.ts +1 -1
- package/front_end/panels/security/SecurityPanel.ts +3 -3
- package/front_end/panels/settings/AISettingsTab.ts +4 -4
- package/front_end/panels/settings/components/SyncSection.ts +4 -4
- package/front_end/panels/settings/emulation/components/UserAgentClientHintsForm.ts +3 -3
- package/front_end/panels/snippets/ScriptSnippetFileSystem.ts +1 -1
- package/front_end/panels/sources/BreakpointsView.ts +1 -1
- package/front_end/panels/sources/CoveragePlugin.ts +1 -1
- package/front_end/panels/sources/DebuggerPlugin.ts +4 -4
- package/front_end/panels/sources/FilteredUISourceCodeListProvider.ts +27 -3
- package/front_end/panels/sources/NavigatorView.ts +1 -1
- package/front_end/panels/sources/PersistenceActions.ts +1 -1
- package/front_end/panels/sources/SourcesNavigator.ts +1 -1
- package/front_end/panels/sources/SourcesSearchScope.ts +1 -1
- package/front_end/panels/sources/TabbedEditorContainer.ts +3 -3
- package/front_end/panels/sources/UISourceCodeFrame.ts +1 -1
- package/front_end/panels/sources/components/HeadersView.ts +1 -1
- package/front_end/panels/sources/filteredUISourceCodeListProvider.css +12 -1
- package/front_end/panels/sources/sources-meta.ts +1 -1
- package/front_end/panels/timeline/StatusDialog.ts +1 -1
- package/front_end/panels/timeline/TimelineController.ts +24 -3
- package/front_end/panels/timeline/TimelinePanel.ts +116 -25
- package/front_end/panels/timeline/TimelineSelectorStatsView.ts +2 -2
- package/front_end/panels/timeline/TimelineUIUtils.ts +1 -1
- package/front_end/panels/timeline/components/CWVMetrics.ts +1 -1
- package/front_end/panels/timeline/components/IgnoreListSetting.ts +1 -1
- package/front_end/panels/timeline/overlays/components/EntryLabelOverlay.ts +2 -2
- package/front_end/panels/timeline/timeline-meta.ts +13 -0
- package/front_end/services/tracing/TracingManager.ts +27 -2
- package/front_end/third_party/chromium/README.chromium +1 -1
- package/front_end/third_party/lighthouse/README.chromium +2 -2
- package/front_end/third_party/lighthouse/lighthouse-dt-bundle.js +1418 -1413
- package/front_end/third_party/lighthouse/locales/en-US.json +12 -6
- package/front_end/third_party/lighthouse/locales/en-XL.json +12 -6
- package/front_end/third_party/lighthouse/report-assets/report-generator.mjs +1 -1
- package/front_end/third_party/puppeteer/puppeteer.ts +20 -1
- package/front_end/ui/components/highlighting/HighlightElement.ts +4 -1
- package/front_end/ui/components/highlighting/HighlightManager.ts +1 -1
- package/front_end/ui/components/highlighting/MarkupHighlight.ts +1 -1
- package/front_end/ui/components/markdown_view/MarkdownView.ts +46 -2
- package/front_end/ui/components/markdown_view/markdownView.css +23 -0
- package/front_end/ui/components/text_editor/config.ts +1 -1
- package/front_end/ui/components/tree_outline/TreeOutline.ts +7 -1
- package/front_end/ui/legacy/Infobar.ts +1 -1
- package/front_end/ui/legacy/InspectorView.ts +12 -7
- package/front_end/ui/legacy/SuggestBox.ts +1 -1
- package/front_end/ui/legacy/TextPrompt.ts +1 -1
- package/front_end/ui/legacy/Toolbar.ts +5 -2
- package/front_end/ui/legacy/Treeoutline.ts +26 -7
- package/front_end/ui/legacy/components/color_picker/Spectrum.ts +1 -1
- package/front_end/ui/legacy/components/data_grid/DataGridElement.ts +1 -1
- package/front_end/ui/legacy/components/data_grid/ViewportDataGrid.ts +1 -1
- package/front_end/ui/legacy/components/data_grid/dataGrid.css +1 -1
- package/front_end/ui/legacy/components/inline_editor/AnimationTimingUI.ts +27 -13
- package/front_end/ui/legacy/components/inline_editor/BezierEditor.ts +5 -2
- package/front_end/ui/legacy/components/inline_editor/CSSLinearEasingModel.ts +23 -0
- package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +161 -54
- package/front_end/ui/legacy/components/quick_open/FilteredListWidget.ts +1 -1
- package/front_end/ui/legacy/components/source_frame/BinaryResourceViewFactory.ts +1 -1
- package/front_end/ui/legacy/components/source_frame/FontView.ts +1 -1
- package/front_end/ui/legacy/components/source_frame/ImageView.ts +1 -1
- package/front_end/ui/legacy/components/source_frame/JSONView.ts +105 -115
- package/front_end/ui/legacy/components/source_frame/PreviewFactory.ts +1 -1
- package/front_end/ui/legacy/components/source_frame/ResourceSourceFrame.ts +1 -1
- package/front_end/ui/legacy/components/source_frame/SourceFrame.ts +3 -3
- package/front_end/ui/legacy/components/source_frame/StreamingContentHexView.ts +1 -1
- package/front_end/ui/legacy/components/source_frame/XMLView.ts +5 -1
- package/front_end/ui/legacy/components/source_frame/jsonView.css +4 -0
- package/front_end/ui/legacy/components/utils/Linkifier.ts +1 -1
- package/front_end/ui/legacy/inspectorCommon.css +6 -2
- package/front_end/ui/settings/SettingUIRegistration.ts +105 -0
- package/front_end/ui/settings/settings.ts +9 -0
- package/front_end/ui/visual_logging/KnownContextValues.ts +13 -0
- package/mcp/mcp.ts +1 -0
- package/package.json +1 -1
- /package/.agents/skills/{verification → devtools-verification}/SKILL.md +0 -0
- /package/front_end/{models → core}/text_utils/CodeMirrorUtils.ts +0 -0
- /package/front_end/{models → core}/text_utils/ContentData.ts +0 -0
- /package/front_end/{models → core}/text_utils/Text.ts +0 -0
- /package/front_end/{models → core}/text_utils/TextCursor.ts +0 -0
- /package/front_end/{models → core}/text_utils/TextUtils.snapshot.txt +0 -0
|
@@ -7,8 +7,8 @@ import * as Host from '../../core/host/host.js';
|
|
|
7
7
|
import * as i18n from '../../core/i18n/i18n.js';
|
|
8
8
|
import * as Root from '../../core/root/root.js';
|
|
9
9
|
import type * as SDK from '../../core/sdk/sdk.js';
|
|
10
|
+
import * as TextUtils from '../../core/text_utils/text_utils.js';
|
|
10
11
|
import * as AiCodeCompletion from '../../models/ai_code_completion/ai_code_completion.js';
|
|
11
|
-
import * as TextUtils from '../../models/text_utils/text_utils.js';
|
|
12
12
|
import * as TextEditor from '../../ui/components/text_editor/text_editor.js';
|
|
13
13
|
|
|
14
14
|
export class StylesAiCodeCompletionProvider {
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
// found in the LICENSE file.
|
|
4
4
|
|
|
5
5
|
import type * as SDK from '../../core/sdk/sdk.js';
|
|
6
|
+
import type * as TextUtils from '../../core/text_utils/text_utils.js';
|
|
6
7
|
import type * as ComputedStyle from '../../models/computed_style/computed_style.js';
|
|
7
|
-
import type * as TextUtils from '../../models/text_utils/text_utils.js';
|
|
8
8
|
import type * as InlineEditor from '../../ui/legacy/components/inline_editor/inline_editor.js';
|
|
9
9
|
import type * as Components from '../../ui/legacy/components/utils/utils.js';
|
|
10
10
|
|
|
@@ -42,11 +42,11 @@ import * as Platform from '../../core/platform/platform.js';
|
|
|
42
42
|
import {assertNotNullOrUndefined} from '../../core/platform/platform.js';
|
|
43
43
|
import * as Root from '../../core/root/root.js';
|
|
44
44
|
import * as SDK from '../../core/sdk/sdk.js';
|
|
45
|
+
import * as TextUtils from '../../core/text_utils/text_utils.js';
|
|
45
46
|
import * as Protocol from '../../generated/protocol.js';
|
|
46
47
|
import * as AiCodeCompletion from '../../models/ai_code_completion/ai_code_completion.js';
|
|
47
48
|
import * as Bindings from '../../models/bindings/bindings.js';
|
|
48
49
|
import type * as ComputedStyle from '../../models/computed_style/computed_style.js';
|
|
49
|
-
import * as TextUtils from '../../models/text_utils/text_utils.js';
|
|
50
50
|
import * as CodeMirror from '../../third_party/codemirror.next/codemirror.next.js';
|
|
51
51
|
import * as TextEditor from '../../ui/components/text_editor/text_editor.js';
|
|
52
52
|
import {createIcon, Icon} from '../../ui/kit/kit.js';
|
|
@@ -22,7 +22,7 @@ const UIStrings = {
|
|
|
22
22
|
/**
|
|
23
23
|
* @description Text for a checkbox to turn off the CSS property documentation.
|
|
24
24
|
*/
|
|
25
|
-
dontShow: 'Don
|
|
25
|
+
dontShow: 'Don’t show',
|
|
26
26
|
/**
|
|
27
27
|
* @description Text indicating that the CSS property has limited availability across major browsers.
|
|
28
28
|
*/
|
|
@@ -90,9 +90,9 @@ const UIStrings = {
|
|
|
90
90
|
*/
|
|
91
91
|
learnMore: 'Learn more',
|
|
92
92
|
/**
|
|
93
|
-
* @description The error message when the user is not logged in
|
|
93
|
+
* @description The error message when the user is not logged in to Chrome.
|
|
94
94
|
*/
|
|
95
|
-
notLoggedIn: 'This feature is only available when you sign
|
|
95
|
+
notLoggedIn: 'This feature is only available when you sign in to Chrome with your Google account.',
|
|
96
96
|
/**
|
|
97
97
|
* @description The title of a button which opens the Chrome SignIn page.
|
|
98
98
|
*/
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
// Copyright 2026 The Chromium Authors
|
|
2
|
+
// Use of this source code is governed by a BSD-style license that can be
|
|
3
|
+
// found in the LICENSE file.
|
|
4
|
+
|
|
5
|
+
import * as i18n from '../../core/i18n/i18n.js';
|
|
6
|
+
import type * as Platform from '../../core/platform/platform.js';
|
|
7
|
+
import type * as IssuesManager from '../../models/issues_manager/issues_manager.js';
|
|
8
|
+
import {html, render} from '../../ui/lit/lit.js';
|
|
9
|
+
|
|
10
|
+
import {AffectedResourcesView} from './AffectedResourcesView.js';
|
|
11
|
+
import type {IssueView} from './IssueView.js';
|
|
12
|
+
|
|
13
|
+
const UIStrings = {
|
|
14
|
+
/**
|
|
15
|
+
* @description Noun for singular or plural number of affected element resource indication in issue view.
|
|
16
|
+
*/
|
|
17
|
+
nElements: '{n, plural, =1 {# element} other {# elements}}',
|
|
18
|
+
} as const;
|
|
19
|
+
const str_ = i18n.i18n.registerUIStrings('panels/issues/AffectedLazyLoadImagesView.ts', UIStrings);
|
|
20
|
+
const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
|
|
21
|
+
|
|
22
|
+
export interface ViewInput {
|
|
23
|
+
issues: Iterable<IssuesManager.LazyLoadImageIssue.LazyLoadImageIssue>;
|
|
24
|
+
issueCategory: IssuesManager.Issue.IssueCategory;
|
|
25
|
+
createElementCell: (element: IssuesManager.Issue.AffectedElement,
|
|
26
|
+
category: IssuesManager.Issue.IssueCategory) => Promise<Element>;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export type View = (input: ViewInput, output: object, target: HTMLElement) => Promise<void>;
|
|
30
|
+
|
|
31
|
+
export const DEFAULT_VIEW: View = async (input, _output, target) => {
|
|
32
|
+
const templates = [];
|
|
33
|
+
for (const issue of input.issues) {
|
|
34
|
+
for (const element of issue.elements()) {
|
|
35
|
+
templates.push(html`<tr>
|
|
36
|
+
${await input.createElementCell(element, input.issueCategory)}
|
|
37
|
+
</tr>`);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
render(html`${templates}`, target);
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
export class AffectedLazyLoadImagesView extends AffectedResourcesView {
|
|
44
|
+
readonly #view: View;
|
|
45
|
+
|
|
46
|
+
constructor(parent: IssueView, issue: IssuesManager.IssueAggregator.AggregatedIssue, jslogContext: string,
|
|
47
|
+
view = DEFAULT_VIEW) {
|
|
48
|
+
super(parent, issue, jslogContext);
|
|
49
|
+
this.#view = view;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
override update(): void {
|
|
53
|
+
this.requestResolver.clear();
|
|
54
|
+
void this.#render();
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
protected override getResourceNameWithCount(count: number): Platform.UIString.LocalizedString {
|
|
58
|
+
return i18nString(UIStrings.nElements, {n: count});
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
async #render(): Promise<void> {
|
|
62
|
+
const issues = this.issue.getLazyLoadImageIssues();
|
|
63
|
+
let count = 0;
|
|
64
|
+
for (const issue of issues) {
|
|
65
|
+
count += issue.elementCount();
|
|
66
|
+
}
|
|
67
|
+
this.updateAffectedResourceCount(count);
|
|
68
|
+
|
|
69
|
+
const input = {
|
|
70
|
+
issues,
|
|
71
|
+
issueCategory: this.issue.getCategory(),
|
|
72
|
+
createElementCell: this.createElementCell.bind(this),
|
|
73
|
+
};
|
|
74
|
+
await this.#view(input, {}, this.affectedResources);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
@@ -31,7 +31,7 @@ const UIStrings = {
|
|
|
31
31
|
/**
|
|
32
32
|
* @description Tooltip for button linking to the Elements panel
|
|
33
33
|
*/
|
|
34
|
-
clickToRevealTheFramesDomNodeIn: 'Click to reveal the frame
|
|
34
|
+
clickToRevealTheFramesDomNodeIn: 'Click to reveal the frame’s DOM node in the Elements panel',
|
|
35
35
|
/**
|
|
36
36
|
* @description Replacement text for a link to an HTML element which is not available (anymore).
|
|
37
37
|
*/
|
|
@@ -93,7 +93,7 @@ const UIStrings = {
|
|
|
93
93
|
/**
|
|
94
94
|
* @description Content for the problem column in the affected resources table for a CORS issue that indicates that the HTTP status the preflight request was not successful.
|
|
95
95
|
*/
|
|
96
|
-
preflightInvalidStatus: 'HTTP status of preflight request didn
|
|
96
|
+
preflightInvalidStatus: 'HTTP status of preflight request didn’t indicate success',
|
|
97
97
|
/**
|
|
98
98
|
* @description Title for a column in the affected resources for a CORS issue showing the origin that was allowed according to CORS headers.
|
|
99
99
|
*/
|
|
@@ -25,6 +25,7 @@ import {AffectedDirectivesView} from './AffectedDirectivesView.js';
|
|
|
25
25
|
import {AffectedDocumentsInQuirksModeView} from './AffectedDocumentsInQuirksModeView.js';
|
|
26
26
|
import {AffectedElementsView} from './AffectedElementsView.js';
|
|
27
27
|
import {AffectedHeavyAdView} from './AffectedHeavyAdView.js';
|
|
28
|
+
import {AffectedLazyLoadImagesView} from './AffectedLazyLoadImagesView.js';
|
|
28
29
|
import {AffectedMetadataAllowedSitesView} from './AffectedMetadataAllowedSitesView.js';
|
|
29
30
|
import {AffectedPartitioningBlobURLView} from './AffectedPartitioningBlobURLView.js';
|
|
30
31
|
import {AffectedPermissionElementsView} from './AffectedPermissionElementsView.js';
|
|
@@ -259,6 +260,7 @@ export class IssueView extends UI.TreeOutline.TreeElement {
|
|
|
259
260
|
new AffectedDescendantsWithinSelectElementView(this, this.#issue, 'disallowed-select-descendants-details'),
|
|
260
261
|
new AffectedPartitioningBlobURLView(this, this.#issue, 'partitioning-blob-url-details'),
|
|
261
262
|
new AffectedPermissionElementsView(this, this.#issue, 'permission-element-elements'),
|
|
263
|
+
new AffectedLazyLoadImagesView(this, this.#issue, 'lazy-load-image-details'),
|
|
262
264
|
new AffectedSelectivePermissionsInterventionView(this, this.#issue, 'selective-permissions-intervention-details'),
|
|
263
265
|
];
|
|
264
266
|
this.#hiddenIssuesMenu = new Components.HideIssuesMenu.HideIssuesMenu();
|
|
@@ -2,12 +2,14 @@
|
|
|
2
2
|
// Use of this source code is governed by a BSD-style license that can be
|
|
3
3
|
// found in the LICENSE file.
|
|
4
4
|
|
|
5
|
+
import * as AffectedLazyLoadImagesView from './AffectedLazyLoadImagesView.js';
|
|
5
6
|
import * as AffectedSelectivePermissionsInterventionView from './AffectedSelectivePermissionsInterventionView.js';
|
|
6
7
|
import * as IssueRevealer from './IssueRevealer.js';
|
|
7
8
|
import * as IssuesPane from './IssuesPane.js';
|
|
8
9
|
import * as IssueView from './IssueView.js';
|
|
9
10
|
|
|
10
11
|
export {
|
|
12
|
+
AffectedLazyLoadImagesView,
|
|
11
13
|
AffectedSelectivePermissionsInterventionView,
|
|
12
14
|
IssueRevealer,
|
|
13
15
|
IssuesPane,
|
|
@@ -900,3 +900,8 @@ export interface EventTypes {
|
|
|
900
900
|
[Events.PageWarningsChanged]: PageWarningsChangedEvent;
|
|
901
901
|
[Events.AuditProgressChanged]: AuditProgressChangedEvent;
|
|
902
902
|
}
|
|
903
|
+
|
|
904
|
+
export function clearSettingsCacheForTest(): void {
|
|
905
|
+
runtimeSettings = null;
|
|
906
|
+
presets = null;
|
|
907
|
+
}
|
|
@@ -7,8 +7,8 @@ import * as Common from '../../core/common/common.js';
|
|
|
7
7
|
import * as Host from '../../core/host/host.js';
|
|
8
8
|
import * as Platform from '../../core/platform/platform.js';
|
|
9
9
|
import * as SDK from '../../core/sdk/sdk.js';
|
|
10
|
+
import * as TextUtils from '../../core/text_utils/text_utils.js';
|
|
10
11
|
import type * as LighthouseModel from '../../models/lighthouse/lighthouse.js';
|
|
11
|
-
import * as TextUtils from '../../models/text_utils/text_utils.js';
|
|
12
12
|
import * as Workspace from '../../models/workspace/workspace.js';
|
|
13
13
|
import * as LighthouseReport from '../../third_party/lighthouse/report/report.js';
|
|
14
14
|
import * as Components from '../../ui/legacy/components/utils/utils.js';
|
|
@@ -9,7 +9,7 @@ import * as Common from '../../core/common/common.js';
|
|
|
9
9
|
import * as Host from '../../core/host/host.js';
|
|
10
10
|
import * as i18n from '../../core/i18n/i18n.js';
|
|
11
11
|
import type * as Platform from '../../core/platform/platform.js';
|
|
12
|
-
import type * as TextUtils from '../../
|
|
12
|
+
import type * as TextUtils from '../../core/text_utils/text_utils.js';
|
|
13
13
|
import * as SourceFrame from '../../ui/legacy/components/source_frame/source_frame.js';
|
|
14
14
|
import * as UI from '../../ui/legacy/legacy.js';
|
|
15
15
|
|
|
@@ -108,7 +108,7 @@ const UIStrings = {
|
|
|
108
108
|
/**
|
|
109
109
|
* @description Reason why a request was blocked shown in the Network panel
|
|
110
110
|
*/
|
|
111
|
-
coopSandboxedIframeCannotNavigateToCoopPage: 'Sandboxed iframe
|
|
111
|
+
coopSandboxedIframeCannotNavigateToCoopPage: 'Sandboxed iframe’s popup cannot navigate to COOP page',
|
|
112
112
|
/**
|
|
113
113
|
* @description Reason why a request was blocked shown in the Network panel
|
|
114
114
|
*/
|
|
@@ -610,6 +610,27 @@ export const _backgroundColors: Record<string, string> = {
|
|
|
610
610
|
FromFrame: '--network-grid-from-frame-color',
|
|
611
611
|
};
|
|
612
612
|
|
|
613
|
+
// name/path/url are the primary cells that own the request icon, the Ask AI
|
|
614
|
+
// button and the row click handlers. The first visible one is decorated, which
|
|
615
|
+
// is not necessarily visible index 0 (the pinned request-number column can come
|
|
616
|
+
// first).
|
|
617
|
+
const PRIMARY_COLUMNS = new Set(['name', 'path', 'url']);
|
|
618
|
+
|
|
619
|
+
function firstPrimaryColumn(dataGrid: DataGrid.DataGrid.DataGridImpl<unknown>|null): DataGrid.DataGrid.ColumnDescriptor|
|
|
620
|
+
undefined {
|
|
621
|
+
return dataGrid?.visibleColumnsArray.find(column => PRIMARY_COLUMNS.has(column.id));
|
|
622
|
+
}
|
|
623
|
+
|
|
624
|
+
function isFirstPrimaryColumn(dataGrid: DataGrid.DataGrid.DataGridImpl<unknown>|null, columnId: string): boolean {
|
|
625
|
+
const firstPrimary = firstPrimaryColumn(dataGrid);
|
|
626
|
+
// When the node is not attached to a grid yet there are no visible columns to
|
|
627
|
+
// inspect, so fall back to treating any primary column as the first one.
|
|
628
|
+
if (!firstPrimary) {
|
|
629
|
+
return PRIMARY_COLUMNS.has(columnId);
|
|
630
|
+
}
|
|
631
|
+
return firstPrimary.id === columnId;
|
|
632
|
+
}
|
|
633
|
+
|
|
613
634
|
export class NetworkRequestNode extends NetworkNode {
|
|
614
635
|
private initiatorCell: Element|null;
|
|
615
636
|
private requestInternal: SDK.NetworkRequest.NetworkRequest;
|
|
@@ -1351,9 +1372,8 @@ export class NetworkRequestNode extends NetworkNode {
|
|
|
1351
1372
|
}
|
|
1352
1373
|
|
|
1353
1374
|
private renderPrimaryCell(cell: HTMLElement, columnId: string, text?: string): void {
|
|
1354
|
-
const
|
|
1355
|
-
|
|
1356
|
-
if (isFirstCell) {
|
|
1375
|
+
const dataGrid = this.dataGrid as DataGrid.DataGrid.DataGridImpl<unknown>| null;
|
|
1376
|
+
if (isFirstPrimaryColumn(dataGrid, columnId)) {
|
|
1357
1377
|
const leftPadding = this.leftPadding ? this.leftPadding + 'px' : '';
|
|
1358
1378
|
cell.style.setProperty('padding-left', leftPadding);
|
|
1359
1379
|
cell.tabIndex = -1;
|
|
@@ -1814,7 +1834,8 @@ export class NetworkRequestNode extends NetworkNode {
|
|
|
1814
1834
|
export class NetworkGroupNode extends NetworkNode {
|
|
1815
1835
|
override createCells(element: Element): void {
|
|
1816
1836
|
super.createCells(element);
|
|
1817
|
-
const
|
|
1837
|
+
const dataGrid = this.dataGrid as DataGrid.DataGrid.DataGridImpl<unknown>;
|
|
1838
|
+
const primaryColumn = firstPrimaryColumn(dataGrid) ?? dataGrid.visibleColumnsArray[0];
|
|
1818
1839
|
const localizedTitle = `${primaryColumn.title}`;
|
|
1819
1840
|
const localizedLevel = i18nString(UIStrings.level);
|
|
1820
1841
|
this.nodeAccessibleText =
|
|
@@ -1822,8 +1843,9 @@ export class NetworkGroupNode extends NetworkNode {
|
|
|
1822
1843
|
}
|
|
1823
1844
|
|
|
1824
1845
|
override renderCell(c: Element, columnId: string): void {
|
|
1825
|
-
const
|
|
1826
|
-
|
|
1846
|
+
const dataGrid = this.dataGrid as DataGrid.DataGrid.DataGridImpl<unknown>;
|
|
1847
|
+
const primaryColumn = firstPrimaryColumn(dataGrid) ?? dataGrid.visibleColumnsArray[0];
|
|
1848
|
+
if (primaryColumn.id === columnId) {
|
|
1827
1849
|
const cell = (c as HTMLElement);
|
|
1828
1850
|
const leftPadding = this.leftPadding ? this.leftPadding + 'px' : '';
|
|
1829
1851
|
cell.style.setProperty('padding-left', leftPadding);
|
|
@@ -40,13 +40,13 @@ import * as Host from '../../core/host/host.js';
|
|
|
40
40
|
import * as i18n from '../../core/i18n/i18n.js';
|
|
41
41
|
import * as Platform from '../../core/platform/platform.js';
|
|
42
42
|
import * as SDK from '../../core/sdk/sdk.js';
|
|
43
|
+
import * as TextUtils from '../../core/text_utils/text_utils.js';
|
|
43
44
|
import * as Protocol from '../../generated/protocol.js';
|
|
44
45
|
import * as Bindings from '../../models/bindings/bindings.js';
|
|
45
46
|
import * as HAR from '../../models/har/har.js';
|
|
46
47
|
import * as Logs from '../../models/logs/logs.js';
|
|
47
48
|
import * as NetworkTimeCalculator from '../../models/network_time_calculator/network_time_calculator.js';
|
|
48
49
|
import * as Persistence from '../../models/persistence/persistence.js';
|
|
49
|
-
import * as TextUtils from '../../models/text_utils/text_utils.js';
|
|
50
50
|
import * as Workspace from '../../models/workspace/workspace.js';
|
|
51
51
|
import * as NetworkForward from '../../panels/network/forward/forward.js';
|
|
52
52
|
import * as Sources from '../../panels/sources/sources.js';
|
|
@@ -980,6 +980,12 @@ const DEFAULT_COLUMN_CONFIG = {
|
|
|
980
980
|
};
|
|
981
981
|
|
|
982
982
|
const DEFAULT_COLUMNS = [
|
|
983
|
+
{
|
|
984
|
+
id: 'request-number',
|
|
985
|
+
title: i18nLazyString(UIStrings.requestNumber),
|
|
986
|
+
align: DataGrid.DataGrid.Align.RIGHT,
|
|
987
|
+
sortingFunction: NetworkRequestNode.RequestNumberComparator,
|
|
988
|
+
},
|
|
983
989
|
{
|
|
984
990
|
id: 'name',
|
|
985
991
|
title: i18nLazyString(UIStrings.name),
|
|
@@ -1004,12 +1010,6 @@ const DEFAULT_COLUMNS = [
|
|
|
1004
1010
|
hideableGroup: 'path',
|
|
1005
1011
|
sortingFunction: NetworkRequestNode.RequestURLComparator,
|
|
1006
1012
|
},
|
|
1007
|
-
{
|
|
1008
|
-
id: 'request-number',
|
|
1009
|
-
title: i18nLazyString(UIStrings.requestNumber),
|
|
1010
|
-
align: DataGrid.DataGrid.Align.RIGHT,
|
|
1011
|
-
sortingFunction: NetworkRequestNode.RequestNumberComparator,
|
|
1012
|
-
},
|
|
1013
1013
|
{
|
|
1014
1014
|
id: 'method',
|
|
1015
1015
|
title: i18nLazyString(UIStrings.method),
|
|
@@ -71,13 +71,13 @@ const UIStrings = {
|
|
|
71
71
|
*/
|
|
72
72
|
search: 'Search',
|
|
73
73
|
/**
|
|
74
|
-
* @description Tooltip text that appears on the setting to
|
|
74
|
+
* @description Tooltip text that appears on the setting to keep log when hovering over the item.
|
|
75
75
|
*/
|
|
76
|
-
doNotClearLogOnPageReload: '
|
|
76
|
+
doNotClearLogOnPageReload: 'Don’t clear log on page reload / navigation',
|
|
77
77
|
/**
|
|
78
|
-
* @description Text to
|
|
78
|
+
* @description Text to keep the log after refreshing.
|
|
79
79
|
*/
|
|
80
|
-
preserveLog: '
|
|
80
|
+
preserveLog: 'Keep log',
|
|
81
81
|
/**
|
|
82
82
|
* @description Text to disable cache while DevTools is open
|
|
83
83
|
*/
|
|
@@ -6,8 +6,8 @@ import type * as Common from '../../core/common/common.js';
|
|
|
6
6
|
import * as i18n from '../../core/i18n/i18n.js';
|
|
7
7
|
import * as Platform from '../../core/platform/platform.js';
|
|
8
8
|
import type * as SDK from '../../core/sdk/sdk.js';
|
|
9
|
+
import * as TextUtils from '../../core/text_utils/text_utils.js';
|
|
9
10
|
import type * as Logs from '../../models/logs/logs.js';
|
|
10
|
-
import * as TextUtils from '../../models/text_utils/text_utils.js';
|
|
11
11
|
import type * as Workspace from '../../models/workspace/workspace.js';
|
|
12
12
|
import * as NetworkForward from '../../panels/network/forward/forward.js';
|
|
13
13
|
import type * as Search from '../search/search.js';
|
|
@@ -46,7 +46,7 @@ const UIStrings = {
|
|
|
46
46
|
* @example {Learn more} PH1
|
|
47
47
|
*/
|
|
48
48
|
noThrottlingOrBlockingPattern:
|
|
49
|
-
`To throttle or block a network request, add a rule here manually or via the network panel
|
|
49
|
+
`To throttle or block a network request, add a rule here manually or via the network panel’s context menu. {PH1}`,
|
|
50
50
|
/**
|
|
51
51
|
* @description Text in Blocked URLs Pane of the Network panel
|
|
52
52
|
* @example {4} PH1
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Use of this source code is governed by a BSD-style license that can be
|
|
3
3
|
// found in the LICENSE file.
|
|
4
4
|
|
|
5
|
-
import type * as TextUtils from '../../
|
|
5
|
+
import type * as TextUtils from '../../core/text_utils/text_utils.js';
|
|
6
6
|
import * as UI from '../../ui/legacy/legacy.js';
|
|
7
7
|
import {html, nothing, render} from '../../ui/lit/lit.js';
|
|
8
8
|
|
|
@@ -37,7 +37,7 @@ import * as Host from '../../core/host/host.js';
|
|
|
37
37
|
import * as i18n from '../../core/i18n/i18n.js';
|
|
38
38
|
import * as Platform from '../../core/platform/platform.js';
|
|
39
39
|
import * as SDK from '../../core/sdk/sdk.js';
|
|
40
|
-
import * as TextUtils from '../../
|
|
40
|
+
import * as TextUtils from '../../core/text_utils/text_utils.js';
|
|
41
41
|
import * as Buttons from '../../ui/components/buttons/buttons.js';
|
|
42
42
|
import * as ObjectUI from '../../ui/legacy/components/object_ui/object_ui.js';
|
|
43
43
|
// eslint-disable-next-line @devtools/es-modules-import
|
|
@@ -7,7 +7,7 @@ import '../../ui/legacy/legacy.js';
|
|
|
7
7
|
|
|
8
8
|
import * as i18n from '../../core/i18n/i18n.js';
|
|
9
9
|
import type * as SDK from '../../core/sdk/sdk.js';
|
|
10
|
-
import * as TextUtils from '../../
|
|
10
|
+
import * as TextUtils from '../../core/text_utils/text_utils.js';
|
|
11
11
|
import * as SourceFrame from '../../ui/legacy/components/source_frame/source_frame.js';
|
|
12
12
|
import * as UI from '../../ui/legacy/legacy.js';
|
|
13
13
|
import {render} from '../../ui/lit/lit.js';
|
|
@@ -6,7 +6,7 @@ import * as Common from '../../core/common/common.js';
|
|
|
6
6
|
import * as Host from '../../core/host/host.js';
|
|
7
7
|
import * as i18n from '../../core/i18n/i18n.js';
|
|
8
8
|
import type * as SDK from '../../core/sdk/sdk.js';
|
|
9
|
-
import * as TextUtils from '../../
|
|
9
|
+
import * as TextUtils from '../../core/text_utils/text_utils.js';
|
|
10
10
|
import * as SourceFrame from '../../ui/legacy/components/source_frame/source_frame.js';
|
|
11
11
|
import * as UI from '../../ui/legacy/legacy.js';
|
|
12
12
|
import * as Lit from '../../ui/lit/lit.js';
|
|
@@ -9,7 +9,7 @@ import * as Host from '../../core/host/host.js';
|
|
|
9
9
|
import * as i18n from '../../core/i18n/i18n.js';
|
|
10
10
|
import * as Platform from '../../core/platform/platform.js';
|
|
11
11
|
import type * as SDK from '../../core/sdk/sdk.js';
|
|
12
|
-
import * as TextUtils from '../../
|
|
12
|
+
import * as TextUtils from '../../core/text_utils/text_utils.js';
|
|
13
13
|
import * as DataGrid from '../../ui/legacy/components/data_grid/data_grid.js';
|
|
14
14
|
import * as SourceFrame from '../../ui/legacy/components/source_frame/source_frame.js';
|
|
15
15
|
import * as UI from '../../ui/legacy/legacy.js';
|
|
@@ -7,7 +7,7 @@ import * as Common from '../../core/common/common.js';
|
|
|
7
7
|
import * as i18n from '../../core/i18n/i18n.js';
|
|
8
8
|
import * as Platform from '../../core/platform/platform.js';
|
|
9
9
|
import * as SDK from '../../core/sdk/sdk.js';
|
|
10
|
-
import * as TextUtils from '../../
|
|
10
|
+
import * as TextUtils from '../../core/text_utils/text_utils.js';
|
|
11
11
|
import * as DataGrid from '../../ui/legacy/components/data_grid/data_grid.js';
|
|
12
12
|
import * as UI from '../../ui/legacy/legacy.js';
|
|
13
13
|
import * as VisualLogging from '../../ui/visual_logging/visual_logging.js';
|
|
@@ -25,7 +25,7 @@ import * as Common from '../../core/common/common.js';
|
|
|
25
25
|
import * as i18n from '../../core/i18n/i18n.js';
|
|
26
26
|
import * as Platform from '../../core/platform/platform.js';
|
|
27
27
|
import * as SDK from '../../core/sdk/sdk.js';
|
|
28
|
-
import * as TextUtils from '../../
|
|
28
|
+
import * as TextUtils from '../../core/text_utils/text_utils.js';
|
|
29
29
|
import * as UI from '../../ui/legacy/legacy.js';
|
|
30
30
|
import * as VisualLogging from '../../ui/visual_logging/visual_logging.js';
|
|
31
31
|
|
|
@@ -9,10 +9,10 @@ import * as i18n from '../../../core/i18n/i18n.js';
|
|
|
9
9
|
import * as Platform from '../../../core/platform/platform.js';
|
|
10
10
|
import type {NameValue} from '../../../core/sdk/NetworkRequest.js';
|
|
11
11
|
import type * as SDK from '../../../core/sdk/sdk.js';
|
|
12
|
+
import * as TextUtils from '../../../core/text_utils/text_utils.js';
|
|
12
13
|
import * as Protocol from '../../../generated/protocol.js';
|
|
13
14
|
import * as IssuesManager from '../../../models/issues_manager/issues_manager.js';
|
|
14
15
|
import * as Persistence from '../../../models/persistence/persistence.js';
|
|
15
|
-
import * as TextUtils from '../../../models/text_utils/text_utils.js';
|
|
16
16
|
import type * as Workspace from '../../../models/workspace/workspace.js';
|
|
17
17
|
import * as NetworkForward from '../../../panels/network/forward/forward.js';
|
|
18
18
|
import * as Sources from '../../../panels/sources/sources.js';
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
// found in the LICENSE file.
|
|
4
4
|
|
|
5
5
|
import type * as SDK from '../../../core/sdk/sdk.js';
|
|
6
|
-
import type * as TextUtils from '../../../
|
|
6
|
+
import type * as TextUtils from '../../../core/text_utils/text_utils.js';
|
|
7
7
|
|
|
8
8
|
export const enum UIHeaderSection {
|
|
9
9
|
GENERAL = 'General',
|
|
@@ -110,7 +110,7 @@ const UIStrings = {
|
|
|
110
110
|
/**
|
|
111
111
|
* @description Title of a setting under the Network category that can be invoked through the Command Menu
|
|
112
112
|
*/
|
|
113
|
-
dontGroupNetworkLogItemsByFrame: 'Don
|
|
113
|
+
dontGroupNetworkLogItemsByFrame: 'Don’t group network log items by frame',
|
|
114
114
|
/**
|
|
115
115
|
* @description Title of a button for clearing the network log
|
|
116
116
|
*/
|
|
@@ -132,13 +132,13 @@ const UIStrings = {
|
|
|
132
132
|
* @description Title of an action in the Network panel that disables options in the UI to copy or export
|
|
133
133
|
* HAR (not translatable) with sensitive data.
|
|
134
134
|
*/
|
|
135
|
-
dontAllowToGenerateHarWithSensitiveData: 'Don
|
|
135
|
+
dontAllowToGenerateHarWithSensitiveData: 'Don’t allow to generate `HAR` with sensitive data',
|
|
136
136
|
/**
|
|
137
137
|
* @description Tooltip shown as documentation when hovering the (?) icon next to the "Allow to generate
|
|
138
138
|
* HAR with sensitive data" option in the Settings panel.
|
|
139
139
|
*/
|
|
140
140
|
allowToGenerateHarWithSensitiveDataDocumentation:
|
|
141
|
-
'By default generated HAR logs are sanitized and don
|
|
141
|
+
'By default generated HAR logs are sanitized and don’t include `Cookie`, `Set-Cookie`, or `Authorization` HTTP headers. When this setting is enabled, options to export/copy HAR with sensitive data are provided.',
|
|
142
142
|
} as const;
|
|
143
143
|
const str_ = i18n.i18n.registerUIStrings('panels/network/network-meta.ts', UIStrings);
|
|
144
144
|
const i18nLazyString = i18n.i18n.getLazilyComputedLocalizedString.bind(undefined, str_);
|
|
@@ -210,7 +210,7 @@ export class HeapProfileView extends UI.View.SimpleView implements UI.Searchable
|
|
|
210
210
|
#selectedNode: ProfileDataGridNode|null = null;
|
|
211
211
|
|
|
212
212
|
readonly linkifierInternal: Components.Linkifier.Linkifier = new Components.Linkifier.Linkifier(maxLinkLength);
|
|
213
|
-
nodeFormatter!:
|
|
213
|
+
nodeFormatter!: NodeFormatter;
|
|
214
214
|
viewType!: Common.Settings.Setting<ViewTypes>;
|
|
215
215
|
bottomUpProfileDataGridTree?: BottomUpProfileDataGridTree|null;
|
|
216
216
|
topDownProfileDataGridTree?: TopDownProfileDataGridTree|null;
|
|
@@ -344,16 +344,16 @@ export class HeapProfileView extends UI.View.SimpleView implements UI.Searchable
|
|
|
344
344
|
<tr data-uid=${node.callUID} ?selected=${this.#selectedNode === node} ?expanded=${node.expanded} @select=${onSelect}
|
|
345
345
|
@contextmenu=${onContextMenu} @expand=${onExpand} @collapse=${onCollapse}>
|
|
346
346
|
<td data-value=${node.self} class="numeric-column ${node.searchMatchedSelfColumn ? 'highlight' : ''}"
|
|
347
|
-
aria-label=${`${this.nodeFormatter.formatValueAccessibleText(node.self
|
|
347
|
+
aria-label=${`${this.nodeFormatter.formatValueAccessibleText(node.self)}, ${this.nodeFormatter.formatPercent(node.selfPercent, node)}`}>
|
|
348
348
|
<div class="profile-multiple-values">
|
|
349
|
-
<span>${this.nodeFormatter.formatValue(node.self
|
|
349
|
+
<span>${this.nodeFormatter.formatValue(node.self)}</span>
|
|
350
350
|
<span class="percent-column">${this.nodeFormatter.formatPercent(node.selfPercent, node)}</span>
|
|
351
351
|
</div>
|
|
352
352
|
</td>
|
|
353
353
|
<td data-value=${node.total} class="numeric-column ${node.searchMatchedTotalColumn ? 'highlight' : ''}"
|
|
354
|
-
aria-label=${`${this.nodeFormatter.formatValueAccessibleText(node.total
|
|
354
|
+
aria-label=${`${this.nodeFormatter.formatValueAccessibleText(node.total)}, ${this.nodeFormatter.formatPercent(node.totalPercent, node)}`}>
|
|
355
355
|
<div class="profile-multiple-values">
|
|
356
|
-
<span>${this.nodeFormatter.formatValue(node.total
|
|
356
|
+
<span>${this.nodeFormatter.formatValue(node.total)}</span>
|
|
357
357
|
<span class="percent-column">${this.nodeFormatter.formatPercent(node.totalPercent, node)}</span>
|
|
358
358
|
</div>
|
|
359
359
|
</td>
|
|
@@ -525,7 +525,7 @@ export class HeapProfileView extends UI.View.SimpleView implements UI.Searchable
|
|
|
525
525
|
return this.profileInternal;
|
|
526
526
|
}
|
|
527
527
|
|
|
528
|
-
initialize(nodeFormatter:
|
|
528
|
+
initialize(nodeFormatter: NodeFormatter): void {
|
|
529
529
|
this.nodeFormatter = nodeFormatter;
|
|
530
530
|
|
|
531
531
|
this.viewType = Common.Settings.Settings.instance().createSetting('profile-view', ViewTypes.HEAVY);
|
|
@@ -277,7 +277,7 @@ const UIStrings = {
|
|
|
277
277
|
* @description Text of a DOM element in Heap Snapshot View of a profiler tool
|
|
278
278
|
*/
|
|
279
279
|
stackWasNotRecordedForThisObject:
|
|
280
|
-
'Stack wasn
|
|
280
|
+
'Stack wasn’t recorded for this object because it had been allocated before this profile recording started.',
|
|
281
281
|
/**
|
|
282
282
|
* @description Text in Heap Snapshot View of a profiler tool.
|
|
283
283
|
* This text is on a button to undo all previous "Ignore this retainer" actions.
|
|
@@ -590,16 +590,20 @@ export class ProfileDataGridTree implements UI.SearchableView.Searchable {
|
|
|
590
590
|
|
|
591
591
|
this.searchResults = [];
|
|
592
592
|
const deepSearch = this.deepSearch;
|
|
593
|
-
let current: DataGrid.DataGrid.DataGridNode<unknown>|null;
|
|
594
|
-
for (current = this.children[0]; current; current = current.traverseNextNode(!deepSearch, null, !deepSearch)) {
|
|
595
|
-
const item = (current as ProfileDataGridNode | null);
|
|
596
|
-
if (!item) {
|
|
597
|
-
break;
|
|
598
|
-
}
|
|
599
593
|
|
|
600
|
-
|
|
601
|
-
|
|
594
|
+
const walk = (node: ProfileDataGridNode): void => {
|
|
595
|
+
if (matchesQuery(node)) {
|
|
596
|
+
this.searchResults.push({profileNode: node});
|
|
597
|
+
}
|
|
598
|
+
if (deepSearch || node.expanded) {
|
|
599
|
+
for (const child of node.children as ProfileDataGridNode[]) {
|
|
600
|
+
walk(child);
|
|
601
|
+
}
|
|
602
602
|
}
|
|
603
|
+
};
|
|
604
|
+
|
|
605
|
+
for (const child of this.children as ProfileDataGridNode[]) {
|
|
606
|
+
walk(child);
|
|
603
607
|
}
|
|
604
608
|
this.searchResultIndex = jumpBackwards ? 0 : this.searchResults.length - 1;
|
|
605
609
|
this.searchableView.updateSearchMatchesCount(this.searchResults.length);
|
|
@@ -9,8 +9,8 @@ import * as i18n from '../../core/i18n/i18n.js';
|
|
|
9
9
|
import * as Platform from '../../core/platform/platform.js';
|
|
10
10
|
import * as ProtocolClient from '../../core/protocol_client/protocol_client.js';
|
|
11
11
|
import * as SDK from '../../core/sdk/sdk.js';
|
|
12
|
+
import * as TextUtils from '../../core/text_utils/text_utils.js';
|
|
12
13
|
import * as Bindings from '../../models/bindings/bindings.js';
|
|
13
|
-
import * as TextUtils from '../../models/text_utils/text_utils.js';
|
|
14
14
|
import * as Workspace from '../../models/workspace/workspace.js';
|
|
15
15
|
import * as Buttons from '../../ui/components/buttons/buttons.js';
|
|
16
16
|
import * as UIHelpers from '../../ui/helpers/helpers.js';
|