chrome-devtools-frontend 1.0.1535712 → 1.0.1536371
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/docs/contributing/images/issues-nearestslo.png +0 -0
- package/docs/contributing/issues.md +17 -21
- package/front_end/core/common/Console.ts +1 -8
- package/front_end/core/common/ParsedURL.ts +10 -20
- package/front_end/core/common/SegmentedRange.ts +1 -2
- package/front_end/core/common/StringOutputStream.ts +1 -4
- package/front_end/core/i18n/i18nImpl.ts +0 -24
- package/front_end/core/sdk/AnimationModel.ts +1 -2
- package/front_end/core/sdk/CSSMatchedStyles.ts +2 -2
- package/front_end/core/sdk/CSSModel.ts +1 -1
- package/front_end/core/sdk/CSSProperty.ts +3 -6
- package/front_end/core/sdk/CSSStyleDeclaration.ts +4 -4
- package/front_end/core/sdk/DebuggerModel.ts +1 -2
- package/front_end/core/sdk/EnhancedTracesParser.ts +4 -0
- package/front_end/core/sdk/SourceMap.ts +2 -3
- package/front_end/entrypoints/node_app/NodeConnectionsPanel.ts +2 -1
- package/front_end/generated/InspectorBackendCommands.js +1 -2
- package/front_end/generated/SupportedCSSProperties.js +19 -0
- package/front_end/generated/protocol.ts +0 -27
- package/front_end/panels/accessibility/AccessibilityNodeView.ts +18 -17
- package/front_end/panels/accessibility/AccessibilitySidebarView.ts +9 -12
- package/front_end/panels/ai_assistance/components/ChatView.ts +5 -4
- package/front_end/panels/application/AppManifestView.ts +7 -6
- package/front_end/panels/application/ApplicationPanelSidebar.ts +4 -4
- package/front_end/panels/application/OpenedWindowDetailsView.ts +6 -6
- package/front_end/panels/application/StorageView.ts +9 -8
- package/front_end/panels/application/components/BackForwardCacheView.ts +333 -314
- package/front_end/panels/application/components/ProtocolHandlersView.ts +3 -2
- package/front_end/panels/application/preloading/components/PreloadingDisabledInfobar.ts +2 -1
- package/front_end/panels/browser_debugger/ObjectEventListenersSidebarPane.ts +8 -8
- package/front_end/panels/common/BadgeNotification.ts +2 -1
- package/front_end/panels/common/GdpSignUpDialog.ts +2 -1
- package/front_end/panels/console/ConsoleInsightTeaser.ts +8 -2
- package/front_end/panels/console/ConsolePinPane.ts +12 -7
- package/front_end/panels/developer_resources/DeveloperResourcesView.ts +9 -9
- package/front_end/panels/elements/ComputedStyleWidget.ts +7 -7
- package/front_end/panels/elements/EventListenersWidget.ts +9 -9
- package/front_end/panels/elements/NodeStackTraceWidget.ts +6 -6
- package/front_end/panels/elements/PlatformFontsWidget.ts +5 -5
- package/front_end/panels/elements/PropertiesWidget.ts +8 -8
- package/front_end/panels/layer_viewer/Layers3DView.ts +2 -1
- package/front_end/panels/layer_viewer/PaintProfilerView.ts +3 -3
- package/front_end/panels/network/RequestCookiesView.ts +2 -1
- package/front_end/panels/network/RequestTimingView.ts +2 -1
- package/front_end/panels/recorder/RecorderController.ts +34 -23
- package/front_end/panels/recorder/components/CreateRecordingView.ts +249 -240
- package/front_end/panels/security/CookieControlsView.ts +2 -1
- package/front_end/panels/security/CookieReportView.ts +3 -2
- package/front_end/panels/settings/AISettingsTab.ts +2 -1
- package/front_end/panels/settings/KeybindsSettingsTab.ts +6 -0
- package/front_end/panels/settings/components/SyncSection.ts +2 -1
- package/front_end/panels/sources/DebuggerPausedMessage.ts +4 -3
- package/front_end/panels/sources/ResourceOriginPlugin.ts +3 -2
- package/front_end/panels/sources/SourcesNavigator.ts +2 -1
- package/front_end/panels/sources/TabbedEditorContainer.ts +3 -2
- package/front_end/panels/sources/WatchExpressionsSidebarPane.ts +9 -9
- package/front_end/panels/timeline/TimelineUIUtils.ts +3 -2
- package/front_end/panels/timeline/components/DetailsView.ts +5 -4
- package/front_end/panels/timeline/components/FieldSettingsDialog.ts +2 -1
- package/front_end/panels/timeline/components/LiveMetricsView.ts +5 -4
- package/front_end/panels/timeline/components/MetricCompareStrings.ts +25 -24
- package/front_end/panels/timeline/components/insights/LCPDiscovery.ts +2 -1
- package/front_end/third_party/chromium/README.chromium +1 -1
- package/front_end/ui/components/docs/tooltip/basic.ts +1 -1
- package/front_end/ui/components/tooltips/Tooltip.ts +32 -17
- package/front_end/ui/i18n/i18n.ts +31 -0
- package/front_end/ui/legacy/SoftDropDown.ts +1 -12
- package/front_end/ui/legacy/ViewManager.ts +2 -4
- package/front_end/ui/legacy/Widget.ts +33 -17
- package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +2 -1
- package/front_end/ui/legacy/legacy.ts +0 -2
- package/front_end/ui/visual_logging/KnownContextValues.ts +3 -0
- package/mcp/mcp.ts +1 -0
- package/package.json +1 -1
- package/front_end/ui/components/docs/recorder_create_recording_view/basic.html +0 -20
- package/front_end/ui/components/docs/recorder_create_recording_view/basic.ts +0 -27
- package/front_end/ui/legacy/ThrottledWidget.ts +0 -48
|
@@ -12,6 +12,7 @@ import * as SDK from '../../core/sdk/sdk.js';
|
|
|
12
12
|
import * as Protocol from '../../generated/protocol.js';
|
|
13
13
|
import * as IssuesManager from '../../models/issues_manager/issues_manager.js';
|
|
14
14
|
import type * as TextUtils from '../../models/text_utils/text_utils.js';
|
|
15
|
+
import * as uiI18n from '../../ui/i18n/i18n.js';
|
|
15
16
|
import * as UI from '../../ui/legacy/legacy.js';
|
|
16
17
|
import * as Lit from '../../ui/lit/lit.js';
|
|
17
18
|
import * as VisualLogging from '../../ui/visual_logging/visual_logging.js';
|
|
@@ -448,7 +449,7 @@ export class CookieReportView extends UI.Widget.VBox {
|
|
|
448
449
|
'https://github.com/privacysandbox/privacy-sandbox-dev-support/blob/main/3pc-migration-readiness.md',
|
|
449
450
|
i18nString(UIStrings.guidance), undefined, undefined, 'readiness-list-link');
|
|
450
451
|
|
|
451
|
-
return html`${
|
|
452
|
+
return html`${uiI18n.getFormatLocalizedString(str_, UIStrings.gitHubResource, {
|
|
452
453
|
PH1: githubLink,
|
|
453
454
|
})}`;
|
|
454
455
|
}
|
|
@@ -461,7 +462,7 @@ export class CookieReportView extends UI.Widget.VBox {
|
|
|
461
462
|
(domain.charAt(0) === '.' ? domain.substring(1) : domain),
|
|
462
463
|
i18nString(UIStrings.reportedIssues), undefined, undefined, 'compatibility-lookup-link');
|
|
463
464
|
|
|
464
|
-
return html`${
|
|
465
|
+
return html`${uiI18n.getFormatLocalizedString(str_, UIStrings.gracePeriod, {
|
|
465
466
|
PH1: gracePeriodLink,
|
|
466
467
|
})}`;
|
|
467
468
|
}
|
|
@@ -13,6 +13,7 @@ import * as Buttons from '../../ui/components/buttons/buttons.js';
|
|
|
13
13
|
import * as Input from '../../ui/components/input/input.js';
|
|
14
14
|
import * as LegacyWrapper from '../../ui/components/legacy_wrapper/legacy_wrapper.js';
|
|
15
15
|
import * as Switch from '../../ui/components/switch/switch.js';
|
|
16
|
+
import * as uiI18n from '../../ui/i18n/i18n.js';
|
|
16
17
|
import * as UI from '../../ui/legacy/legacy.js';
|
|
17
18
|
import * as Lit from '../../ui/lit/lit.js';
|
|
18
19
|
import * as VisualLogging from '../../ui/visual_logging/visual_logging.js';
|
|
@@ -515,7 +516,7 @@ export class AISettingsTab extends LegacyWrapper.LegacyWrapper.WrappableComponen
|
|
|
515
516
|
},
|
|
516
517
|
{
|
|
517
518
|
icon: 'policy',
|
|
518
|
-
text: html`${
|
|
519
|
+
text: html`${uiI18n.getFormatLocalizedString(str_, UIStrings.termsOfServicePrivacyNotice, {
|
|
519
520
|
PH1: tosLink,
|
|
520
521
|
PH2: privacyNoticeLink,
|
|
521
522
|
})}`,
|
|
@@ -42,6 +42,11 @@ const UIStrings = {
|
|
|
42
42
|
* @description Link text in the settings pane to add another shortcut for an action
|
|
43
43
|
*/
|
|
44
44
|
addAShortcut: 'Add a shortcut',
|
|
45
|
+
/**
|
|
46
|
+
* @description Placeholder text in the settings pane when adding a new shortcut.
|
|
47
|
+
* Explaining that key strokes are going to be recoded.
|
|
48
|
+
*/
|
|
49
|
+
recordingKeys: 'Recoding keys',
|
|
45
50
|
/**
|
|
46
51
|
* @description Label for a button in the settings pane that confirms changes to a keyboard shortcut
|
|
47
52
|
*/
|
|
@@ -446,6 +451,7 @@ export class ShortcutListItem {
|
|
|
446
451
|
if (this.isEditing) {
|
|
447
452
|
const shortcutInput = shortcutElement.createChild('input', 'harmony-input');
|
|
448
453
|
shortcutInput.setAttribute('jslog', `${VisualLogging.textField().track({change: true})}`);
|
|
454
|
+
shortcutInput.setAttribute('placeholder', i18nString(UIStrings.recordingKeys));
|
|
449
455
|
shortcutInput.spellcheck = false;
|
|
450
456
|
shortcutInput.maxLength = 0;
|
|
451
457
|
this.shortcutInputs.set(shortcut, shortcutInput);
|
|
@@ -16,6 +16,7 @@ import * as Badges from '../../../models/badges/badges.js';
|
|
|
16
16
|
import * as Buttons from '../../../ui/components/buttons/buttons.js';
|
|
17
17
|
import * as ComponentHelpers from '../../../ui/components/helpers/helpers.js';
|
|
18
18
|
import type * as SettingsComponents from '../../../ui/components/settings/settings.js';
|
|
19
|
+
import * as uiI18n from '../../../ui/i18n/i18n.js';
|
|
19
20
|
import * as Lit from '../../../ui/lit/lit.js';
|
|
20
21
|
import * as VisualLogging from '../../../ui/visual_logging/visual_logging.js';
|
|
21
22
|
import * as PanelCommon from '../../common/common.js';
|
|
@@ -112,7 +113,7 @@ function renderDataDisclaimer(): HTMLElement {
|
|
|
112
113
|
|
|
113
114
|
const container = document.createElement('span');
|
|
114
115
|
Lit.render(relevantDataTooltipTemplate, container);
|
|
115
|
-
cachedTooltipElement =
|
|
116
|
+
cachedTooltipElement = uiI18n.getFormatLocalizedString(str_, UIStrings.dataDisclaimer, {
|
|
116
117
|
PH1: container,
|
|
117
118
|
});
|
|
118
119
|
return cachedTooltipElement;
|
|
@@ -11,6 +11,7 @@ import * as Protocol from '../../generated/protocol.js';
|
|
|
11
11
|
import type * as Bindings from '../../models/bindings/bindings.js';
|
|
12
12
|
import type * as BreakpointManager from '../../models/breakpoints/breakpoints.js';
|
|
13
13
|
import * as IconButton from '../../ui/components/icon_button/icon_button.js';
|
|
14
|
+
import * as uiI18n from '../../ui/i18n/i18n.js';
|
|
14
15
|
import * as UI from '../../ui/legacy/legacy.js';
|
|
15
16
|
import * as VisualLogging from '../../ui/visual_logging/visual_logging.js';
|
|
16
17
|
|
|
@@ -175,12 +176,12 @@ export class DebuggerPausedMessage {
|
|
|
175
176
|
let messageElement;
|
|
176
177
|
if (data.insertion) {
|
|
177
178
|
if (data.targetNode === data.node) {
|
|
178
|
-
messageElement =
|
|
179
|
+
messageElement = uiI18n.getFormatLocalizedString(str_, UIStrings.childSAdded, {PH1: targetNodeLink});
|
|
179
180
|
} else {
|
|
180
|
-
messageElement =
|
|
181
|
+
messageElement = uiI18n.getFormatLocalizedString(str_, UIStrings.descendantSAdded, {PH1: targetNodeLink});
|
|
181
182
|
}
|
|
182
183
|
} else {
|
|
183
|
-
messageElement =
|
|
184
|
+
messageElement = uiI18n.getFormatLocalizedString(str_, UIStrings.descendantSRemoved, {PH1: targetNodeLink});
|
|
184
185
|
}
|
|
185
186
|
subElement.appendChild(document.createElement('br'));
|
|
186
187
|
subElement.appendChild(messageElement);
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
import * as i18n from '../../core/i18n/i18n.js';
|
|
7
7
|
import * as Bindings from '../../models/bindings/bindings.js';
|
|
8
8
|
import type * as Workspace from '../../models/workspace/workspace.js';
|
|
9
|
+
import * as uiI18n from '../../ui/i18n/i18n.js';
|
|
9
10
|
import * as Components from '../../ui/legacy/components/utils/utils.js';
|
|
10
11
|
import * as UI from '../../ui/legacy/legacy.js';
|
|
11
12
|
|
|
@@ -62,14 +63,14 @@ export class ResourceOriginPlugin extends Plugin {
|
|
|
62
63
|
}
|
|
63
64
|
element.append(link);
|
|
64
65
|
});
|
|
65
|
-
return [new UI.Toolbar.ToolbarItem(
|
|
66
|
+
return [new UI.Toolbar.ToolbarItem(uiI18n.getFormatLocalizedString(str_, UIStrings.fromS, {PH1: element}))];
|
|
66
67
|
}
|
|
67
68
|
|
|
68
69
|
// Handle anonymous scripts with an originStackTrace.
|
|
69
70
|
for (const script of debuggerWorkspaceBinding.scriptsForUISourceCode(this.uiSourceCode)) {
|
|
70
71
|
if (script.originStackTrace?.callFrames.length) {
|
|
71
72
|
const link = linkifier.linkifyStackTraceTopFrame(script.debuggerModel.target(), script.originStackTrace);
|
|
72
|
-
return [new UI.Toolbar.ToolbarItem(
|
|
73
|
+
return [new UI.Toolbar.ToolbarItem(uiI18n.getFormatLocalizedString(str_, UIStrings.fromS, {PH1: link}))];
|
|
73
74
|
}
|
|
74
75
|
}
|
|
75
76
|
|
|
@@ -15,6 +15,7 @@ import * as Bindings from '../../models/bindings/bindings.js';
|
|
|
15
15
|
import * as Persistence from '../../models/persistence/persistence.js';
|
|
16
16
|
import * as TextUtils from '../../models/text_utils/text_utils.js';
|
|
17
17
|
import * as Workspace from '../../models/workspace/workspace.js';
|
|
18
|
+
import * as uiI18n from '../../ui/i18n/i18n.js';
|
|
18
19
|
import * as UI from '../../ui/legacy/legacy.js';
|
|
19
20
|
import * as Snippets from '../snippets/snippets.js';
|
|
20
21
|
|
|
@@ -190,7 +191,7 @@ export class FilesNavigatorView extends NavigatorView {
|
|
|
190
191
|
const link =
|
|
191
192
|
UI.XLink.XLink.create('https://goo.gle/devtools-automatic-workspace-folders', 'com.chrome.devtools.json');
|
|
192
193
|
this.#automaticFileSystemNudge =
|
|
193
|
-
|
|
194
|
+
uiI18n.getFormatLocalizedString(str_, UIStrings.automaticWorkspaceNudge, {PH1: link});
|
|
194
195
|
this.#automaticFileSystemNudge.classList.add('automatic-file-system-nudge');
|
|
195
196
|
this.contentElement.insertBefore(this.#automaticFileSystemNudge, this.contentElement.firstChild);
|
|
196
197
|
|
|
@@ -12,6 +12,7 @@ import * as Workspace from '../../models/workspace/workspace.js';
|
|
|
12
12
|
import type * as CodeMirror from '../../third_party/codemirror.next/codemirror.next.js';
|
|
13
13
|
import * as IconButton from '../../ui/components/icon_button/icon_button.js';
|
|
14
14
|
import * as Tooltips from '../../ui/components/tooltips/tooltips.js';
|
|
15
|
+
import * as uiI18n from '../../ui/i18n/i18n.js';
|
|
15
16
|
import * as SourceFrame from '../../ui/legacy/components/source_frame/source_frame.js';
|
|
16
17
|
import * as UI from '../../ui/legacy/legacy.js';
|
|
17
18
|
import * as VisualLogging from '../../ui/visual_logging/visual_logging.js';
|
|
@@ -633,11 +634,11 @@ export class TabbedEditorContainer extends Common.ObjectWrapper.ObjectWrapper<Ev
|
|
|
633
634
|
await UI.ViewManager.ViewManager.instance().showView('navigator-files');
|
|
634
635
|
await automaticFileSystemManager.connectAutomaticFileSystem(/* addIfMissing= */ true);
|
|
635
636
|
});
|
|
636
|
-
tooltip.append(
|
|
637
|
+
tooltip.append(uiI18n.getFormatLocalizedString(
|
|
637
638
|
str_, UIStrings.changesWereNotSavedToFileSystemToSaveAddFolderToWorkspace, {PH1: link}));
|
|
638
639
|
} else {
|
|
639
640
|
const link = UI.XLink.XLink.create('https://developer.chrome.com/docs/devtools/workspaces/', 'Workspace');
|
|
640
|
-
tooltip.append(
|
|
641
|
+
tooltip.append(uiI18n.getFormatLocalizedString(
|
|
641
642
|
str_, UIStrings.changesWereNotSavedToFileSystemToSaveSetUpYourWorkspace, {PH1: link}));
|
|
642
643
|
}
|
|
643
644
|
suffixElement.append(icon, tooltip);
|
|
@@ -94,7 +94,7 @@ const str_ = i18n.i18n.registerUIStrings('panels/sources/WatchExpressionsSidebar
|
|
|
94
94
|
const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
|
|
95
95
|
let watchExpressionsSidebarPaneInstance: WatchExpressionsSidebarPane;
|
|
96
96
|
|
|
97
|
-
export class WatchExpressionsSidebarPane extends UI.
|
|
97
|
+
export class WatchExpressionsSidebarPane extends UI.Widget.VBox implements
|
|
98
98
|
UI.ActionRegistration.ActionDelegate, UI.Toolbar.ItemsProvider,
|
|
99
99
|
UI.ContextMenu.Provider<ObjectUI.ObjectPropertiesSection.ObjectPropertyTreeElement|UISourceCodeFrame> {
|
|
100
100
|
private watchExpressions: WatchExpression[];
|
|
@@ -106,7 +106,7 @@ export class WatchExpressionsSidebarPane extends UI.ThrottledWidget.ThrottledWid
|
|
|
106
106
|
private readonly expandController: ObjectUI.ObjectPropertiesSection.ObjectPropertiesSectionsTreeExpandController;
|
|
107
107
|
private readonly linkifier: Components.Linkifier.Linkifier;
|
|
108
108
|
private constructor() {
|
|
109
|
-
super(true);
|
|
109
|
+
super({useShadowDom: true});
|
|
110
110
|
this.registerRequiredCSS(watchExpressionsSidebarPaneStyles, objectValueStyles);
|
|
111
111
|
|
|
112
112
|
// TODO(szuend): Replace with a Set once the web test
|
|
@@ -125,7 +125,7 @@ export class WatchExpressionsSidebarPane extends UI.ThrottledWidget.ThrottledWid
|
|
|
125
125
|
this.refreshButton = new UI.Toolbar.ToolbarButton(
|
|
126
126
|
i18nString(UIStrings.refreshWatchExpressions), 'refresh', undefined, 'refresh-watch-expressions');
|
|
127
127
|
this.refreshButton.setSize(Buttons.Button.Size.SMALL);
|
|
128
|
-
this.refreshButton.addEventListener(UI.Toolbar.ToolbarButton.Events.CLICK, this.
|
|
128
|
+
this.refreshButton.addEventListener(UI.Toolbar.ToolbarButton.Events.CLICK, this.requestUpdate, this);
|
|
129
129
|
|
|
130
130
|
this.contentElement.classList.add('watch-expressions');
|
|
131
131
|
this.contentElement.setAttribute('jslog', `${VisualLogging.section('sources.watch')}`);
|
|
@@ -138,10 +138,10 @@ export class WatchExpressionsSidebarPane extends UI.ThrottledWidget.ThrottledWid
|
|
|
138
138
|
this.expandController =
|
|
139
139
|
new ObjectUI.ObjectPropertiesSection.ObjectPropertiesSectionsTreeExpandController(this.treeOutline);
|
|
140
140
|
|
|
141
|
-
UI.Context.Context.instance().addFlavorChangeListener(SDK.RuntimeModel.ExecutionContext, this.
|
|
142
|
-
UI.Context.Context.instance().addFlavorChangeListener(SDK.DebuggerModel.CallFrame, this.
|
|
141
|
+
UI.Context.Context.instance().addFlavorChangeListener(SDK.RuntimeModel.ExecutionContext, this.requestUpdate, this);
|
|
142
|
+
UI.Context.Context.instance().addFlavorChangeListener(SDK.DebuggerModel.CallFrame, this.requestUpdate, this);
|
|
143
143
|
this.linkifier = new Components.Linkifier.Linkifier();
|
|
144
|
-
this.
|
|
144
|
+
this.requestUpdate();
|
|
145
145
|
}
|
|
146
146
|
|
|
147
147
|
static instance(): WatchExpressionsSidebarPane {
|
|
@@ -182,7 +182,7 @@ export class WatchExpressionsSidebarPane extends UI.ThrottledWidget.ThrottledWid
|
|
|
182
182
|
this.createWatchExpression(null).startEditing();
|
|
183
183
|
}
|
|
184
184
|
|
|
185
|
-
override async
|
|
185
|
+
override async performUpdate(): Promise<void> {
|
|
186
186
|
this.linkifier.reset();
|
|
187
187
|
this.contentElement.removeChildren();
|
|
188
188
|
this.treeOutline.removeChildren();
|
|
@@ -265,14 +265,14 @@ export class WatchExpressionsSidebarPane extends UI.ThrottledWidget.ThrottledWid
|
|
|
265
265
|
private deleteAllButtonClicked(): void {
|
|
266
266
|
this.watchExpressions = [];
|
|
267
267
|
this.saveExpressions();
|
|
268
|
-
this.
|
|
268
|
+
this.requestUpdate();
|
|
269
269
|
}
|
|
270
270
|
|
|
271
271
|
private async focusAndAddExpressionToWatch(expression: string): Promise<void> {
|
|
272
272
|
await UI.ViewManager.ViewManager.instance().showView('sources.watch');
|
|
273
273
|
this.createWatchExpression(expression);
|
|
274
274
|
this.saveExpressions();
|
|
275
|
-
this.
|
|
275
|
+
this.requestUpdate();
|
|
276
276
|
}
|
|
277
277
|
|
|
278
278
|
handleAction(_context: UI.Context.Context, _actionId: string): boolean {
|
|
@@ -48,6 +48,7 @@ import * as Tracing from '../../services/tracing/tracing.js';
|
|
|
48
48
|
import * as CodeHighlighter from '../../ui/components/code_highlighter/code_highlighter.js';
|
|
49
49
|
// eslint-disable-next-line @devtools/es-modules-import
|
|
50
50
|
import codeHighlighterStyles from '../../ui/components/code_highlighter/codeHighlighter.css.js';
|
|
51
|
+
import * as uiI18n from '../../ui/i18n/i18n.js';
|
|
51
52
|
import * as PerfUI from '../../ui/legacy/components/perf_ui/perf_ui.js';
|
|
52
53
|
// eslint-disable-next-line @devtools/es-modules-import
|
|
53
54
|
import imagePreviewStyles from '../../ui/legacy/components/utils/imagePreview.css.js';
|
|
@@ -1899,7 +1900,7 @@ export class TimelineUIUtils {
|
|
|
1899
1900
|
const niceNodeLink = createLinkForInvalidationNode(invalidation);
|
|
1900
1901
|
|
|
1901
1902
|
const text = scriptLink ?
|
|
1902
|
-
|
|
1903
|
+
uiI18n.getFormatLocalizedString(
|
|
1903
1904
|
str_, UIStrings.invalidationWithCallFrame, {PH1: niceNodeLink, PH2: scriptLink}) as HTMLElement :
|
|
1904
1905
|
niceNodeLink;
|
|
1905
1906
|
|
|
@@ -2207,7 +2208,7 @@ export class TimelineUIUtils {
|
|
|
2207
2208
|
PH1: i18n.TimeUtilities.millisToString(durationMilli, true),
|
|
2208
2209
|
PH2: i18n.TimeUtilities.millisToString(offsetMilli, true),
|
|
2209
2210
|
});
|
|
2210
|
-
return
|
|
2211
|
+
return uiI18n.getFormatLocalizedString(str_, UIStrings.emptyPlaceholder, {PH1: durationText});
|
|
2211
2212
|
}
|
|
2212
2213
|
|
|
2213
2214
|
static quadWidth(quad: number[]): number {
|
|
@@ -7,6 +7,7 @@ import * as i18n from '../../../core/i18n/i18n.js';
|
|
|
7
7
|
import * as Platform from '../../../core/platform/platform.js';
|
|
8
8
|
import type * as Protocol from '../../../generated/protocol.js';
|
|
9
9
|
import * as Trace from '../../../models/trace/trace.js';
|
|
10
|
+
import * as uiI18n from '../../../ui/i18n/i18n.js';
|
|
10
11
|
import * as UI from '../../../ui/legacy/legacy.js';
|
|
11
12
|
|
|
12
13
|
// *********************************************************************
|
|
@@ -86,8 +87,8 @@ export function buildWarningElementsForEvent(
|
|
|
86
87
|
const forcedReflowLink = UI.XLink.XLink.create(
|
|
87
88
|
'https://developers.google.com/web/fundamentals/performance/rendering/avoid-large-complex-layouts-and-layout-thrashing#avoid-forced-synchronous-layouts',
|
|
88
89
|
i18nString(UIStrings.forcedReflow), undefined, undefined, 'forced-reflow');
|
|
89
|
-
span.appendChild(
|
|
90
|
-
str_, UIStrings.sIsALikelyPerformanceBottleneck, {PH1: forcedReflowLink}));
|
|
90
|
+
span.appendChild(
|
|
91
|
+
uiI18n.getFormatLocalizedString(str_, UIStrings.sIsALikelyPerformanceBottleneck, {PH1: forcedReflowLink}));
|
|
91
92
|
break;
|
|
92
93
|
}
|
|
93
94
|
case 'IDLE_CALLBACK_OVER_TIME': {
|
|
@@ -103,7 +104,7 @@ export function buildWarningElementsForEvent(
|
|
|
103
104
|
case 'LONG_TASK': {
|
|
104
105
|
const longTaskLink = UI.XLink.XLink.create(
|
|
105
106
|
'https://web.dev/optimize-long-tasks/', i18nString(UIStrings.longTask), undefined, undefined, 'long-tasks');
|
|
106
|
-
span.appendChild(
|
|
107
|
+
span.appendChild(uiI18n.getFormatLocalizedString(
|
|
107
108
|
str_, UIStrings.sTookS,
|
|
108
109
|
{PH1: longTaskLink, PH2: i18n.TimeUtilities.millisToString((duration || 0), true)}));
|
|
109
110
|
break;
|
|
@@ -111,7 +112,7 @@ export function buildWarningElementsForEvent(
|
|
|
111
112
|
case 'LONG_INTERACTION': {
|
|
112
113
|
const longInteractionINPLink = UI.XLink.XLink.create(
|
|
113
114
|
'https://web.dev/inp', i18nString(UIStrings.longInteractionINP), undefined, undefined, 'long-interaction');
|
|
114
|
-
span.appendChild(
|
|
115
|
+
span.appendChild(uiI18n.getFormatLocalizedString(
|
|
115
116
|
str_, UIStrings.sIsLikelyPoorPageResponsiveness, {PH1: longInteractionINPLink}));
|
|
116
117
|
break;
|
|
117
118
|
}
|
|
@@ -11,6 +11,7 @@ import * as Buttons from '../../../ui/components/buttons/buttons.js';
|
|
|
11
11
|
import * as Dialogs from '../../../ui/components/dialogs/dialogs.js';
|
|
12
12
|
import * as ComponentHelpers from '../../../ui/components/helpers/helpers.js';
|
|
13
13
|
import * as Input from '../../../ui/components/input/input.js';
|
|
14
|
+
import * as uiI18n from '../../../ui/i18n/i18n.js';
|
|
14
15
|
import * as UI from '../../../ui/legacy/legacy.js';
|
|
15
16
|
import * as Lit from '../../../ui/lit/lit.js';
|
|
16
17
|
import * as VisualLogging from '../../../ui/visual_logging/visual_logging.js';
|
|
@@ -331,7 +332,7 @@ export class FieldSettingsDialog extends HTMLElement {
|
|
|
331
332
|
#render = (): void => {
|
|
332
333
|
const linkEl =
|
|
333
334
|
UI.XLink.XLink.create('https://developer.chrome.com/docs/crux', i18n.i18n.lockedString('Chrome UX Report'));
|
|
334
|
-
const descriptionEl =
|
|
335
|
+
const descriptionEl = uiI18n.getFormatLocalizedString(str_, UIStrings.fetchAggregated, {PH1: linkEl});
|
|
335
336
|
|
|
336
337
|
// clang-format off
|
|
337
338
|
const output = html`
|
|
@@ -25,6 +25,7 @@ import * as LegacyWrapper from '../../../ui/components/legacy_wrapper/legacy_wra
|
|
|
25
25
|
import type * as Menus from '../../../ui/components/menus/menus.js';
|
|
26
26
|
import * as RenderCoordinator from '../../../ui/components/render_coordinator/render_coordinator.js';
|
|
27
27
|
import type * as Settings from '../../../ui/components/settings/settings.js';
|
|
28
|
+
import * as uiI18n from '../../../ui/i18n/i18n.js';
|
|
28
29
|
import * as UI from '../../../ui/legacy/legacy.js';
|
|
29
30
|
import * as Lit from '../../../ui/lit/lit.js';
|
|
30
31
|
import * as VisualLogging from '../../../ui/visual_logging/visual_logging.js';
|
|
@@ -629,8 +630,8 @@ export class LiveMetricsView extends LegacyWrapper.LegacyWrapper.WrappableCompon
|
|
|
629
630
|
<div class="device-toolbar-description">${md(i18nString(UIStrings.useDeviceToolbar))}</div>
|
|
630
631
|
${fieldEnabled ? html`
|
|
631
632
|
<ul class="environment-recs-list">
|
|
632
|
-
<li>${
|
|
633
|
-
<li>${
|
|
633
|
+
<li>${uiI18n.getFormatLocalizedString(str_, UIStrings.device, {PH1: deviceRecEl})}</li>
|
|
634
|
+
<li>${uiI18n.getFormatLocalizedString(str_, UIStrings.network, {PH1: networkRecEl})}</li>
|
|
634
635
|
</ul>
|
|
635
636
|
` : nothing}
|
|
636
637
|
<div class="environment-option">
|
|
@@ -839,7 +840,7 @@ export class LiveMetricsView extends LegacyWrapper.LegacyWrapper.WrappableCompon
|
|
|
839
840
|
dateEl.classList.add('collection-period-range');
|
|
840
841
|
dateEl.textContent = range || i18nString(UIStrings.notEnoughData);
|
|
841
842
|
|
|
842
|
-
const message =
|
|
843
|
+
const message = uiI18n.getFormatLocalizedString(str_, UIStrings.collectionPeriod, {
|
|
843
844
|
PH1: dateEl,
|
|
844
845
|
});
|
|
845
846
|
|
|
@@ -862,7 +863,7 @@ export class LiveMetricsView extends LegacyWrapper.LegacyWrapper.WrappableCompon
|
|
|
862
863
|
|
|
863
864
|
const linkEl =
|
|
864
865
|
UI.XLink.XLink.create('https://developer.chrome.com/docs/crux', i18n.i18n.lockedString('Chrome UX Report'));
|
|
865
|
-
const messageEl =
|
|
866
|
+
const messageEl = uiI18n.getFormatLocalizedString(str_, UIStrings.seeHowYourLocalMetricsCompare, {PH1: linkEl});
|
|
866
867
|
|
|
867
868
|
return html`
|
|
868
869
|
<div class="field-data-message">${messageEl}</div>
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
// found in the LICENSE file.
|
|
4
4
|
|
|
5
5
|
import * as i18n from '../../../core/i18n/i18n.js';
|
|
6
|
+
import * as uiI18n from '../../../ui/i18n/i18n.js';
|
|
6
7
|
|
|
7
8
|
import type {MetricRating} from './Utils.js';
|
|
8
9
|
|
|
@@ -185,40 +186,40 @@ export function renderCompareText(
|
|
|
185
186
|
};
|
|
186
187
|
|
|
187
188
|
if (rating === 'good' && compare === 'better') {
|
|
188
|
-
return
|
|
189
|
+
return uiI18n.getFormatLocalizedString(str_, UIStrings.goodBetterCompare, values);
|
|
189
190
|
}
|
|
190
191
|
if (rating === 'good' && compare === 'worse') {
|
|
191
|
-
return
|
|
192
|
+
return uiI18n.getFormatLocalizedString(str_, UIStrings.goodWorseCompare, values);
|
|
192
193
|
}
|
|
193
194
|
if (rating === 'good' && compare === 'similar') {
|
|
194
|
-
return
|
|
195
|
+
return uiI18n.getFormatLocalizedString(str_, UIStrings.goodSimilarCompare, values);
|
|
195
196
|
}
|
|
196
197
|
if (rating === 'good' && !compare) {
|
|
197
|
-
return
|
|
198
|
+
return uiI18n.getFormatLocalizedString(str_, UIStrings.goodSummarized, values);
|
|
198
199
|
}
|
|
199
200
|
if (rating === 'needs-improvement' && compare === 'better') {
|
|
200
|
-
return
|
|
201
|
+
return uiI18n.getFormatLocalizedString(str_, UIStrings.needsImprovementBetterCompare, values);
|
|
201
202
|
}
|
|
202
203
|
if (rating === 'needs-improvement' && compare === 'worse') {
|
|
203
|
-
return
|
|
204
|
+
return uiI18n.getFormatLocalizedString(str_, UIStrings.needsImprovementWorseCompare, values);
|
|
204
205
|
}
|
|
205
206
|
if (rating === 'needs-improvement' && compare === 'similar') {
|
|
206
|
-
return
|
|
207
|
+
return uiI18n.getFormatLocalizedString(str_, UIStrings.needsImprovementSimilarCompare, values);
|
|
207
208
|
}
|
|
208
209
|
if (rating === 'needs-improvement' && !compare) {
|
|
209
|
-
return
|
|
210
|
+
return uiI18n.getFormatLocalizedString(str_, UIStrings.needsImprovementSummarized, values);
|
|
210
211
|
}
|
|
211
212
|
if (rating === 'poor' && compare === 'better') {
|
|
212
|
-
return
|
|
213
|
+
return uiI18n.getFormatLocalizedString(str_, UIStrings.poorBetterCompare, values);
|
|
213
214
|
}
|
|
214
215
|
if (rating === 'poor' && compare === 'worse') {
|
|
215
|
-
return
|
|
216
|
+
return uiI18n.getFormatLocalizedString(str_, UIStrings.poorWorseCompare, values);
|
|
216
217
|
}
|
|
217
218
|
if (rating === 'poor' && compare === 'similar') {
|
|
218
|
-
return
|
|
219
|
+
return uiI18n.getFormatLocalizedString(str_, UIStrings.poorSimilarCompare, values);
|
|
219
220
|
}
|
|
220
221
|
if (rating === 'poor' && !compare) {
|
|
221
|
-
return
|
|
222
|
+
return uiI18n.getFormatLocalizedString(str_, UIStrings.poorSummarized, values);
|
|
222
223
|
}
|
|
223
224
|
|
|
224
225
|
throw new Error('Compare string not found');
|
|
@@ -241,40 +242,40 @@ export function renderDetailedCompareText(options: {
|
|
|
241
242
|
};
|
|
242
243
|
|
|
243
244
|
if (localRating === 'good' && fieldRating === 'good') {
|
|
244
|
-
return
|
|
245
|
+
return uiI18n.getFormatLocalizedString(str_, UIStrings.goodGoodDetailedCompare, values);
|
|
245
246
|
}
|
|
246
247
|
if (localRating === 'good' && fieldRating === 'needs-improvement') {
|
|
247
|
-
return
|
|
248
|
+
return uiI18n.getFormatLocalizedString(str_, UIStrings.goodNeedsImprovementDetailedCompare, values);
|
|
248
249
|
}
|
|
249
250
|
if (localRating === 'good' && fieldRating === 'poor') {
|
|
250
|
-
return
|
|
251
|
+
return uiI18n.getFormatLocalizedString(str_, UIStrings.goodPoorDetailedCompare, values);
|
|
251
252
|
}
|
|
252
253
|
if (localRating === 'good' && !fieldRating) {
|
|
253
|
-
return
|
|
254
|
+
return uiI18n.getFormatLocalizedString(str_, UIStrings.goodSummarized, values);
|
|
254
255
|
}
|
|
255
256
|
if (localRating === 'needs-improvement' && fieldRating === 'good') {
|
|
256
|
-
return
|
|
257
|
+
return uiI18n.getFormatLocalizedString(str_, UIStrings.needsImprovementGoodDetailedCompare, values);
|
|
257
258
|
}
|
|
258
259
|
if (localRating === 'needs-improvement' && fieldRating === 'needs-improvement') {
|
|
259
|
-
return
|
|
260
|
+
return uiI18n.getFormatLocalizedString(str_, UIStrings.needsImprovementNeedsImprovementDetailedCompare, values);
|
|
260
261
|
}
|
|
261
262
|
if (localRating === 'needs-improvement' && fieldRating === 'poor') {
|
|
262
|
-
return
|
|
263
|
+
return uiI18n.getFormatLocalizedString(str_, UIStrings.needsImprovementPoorDetailedCompare, values);
|
|
263
264
|
}
|
|
264
265
|
if (localRating === 'needs-improvement' && !fieldRating) {
|
|
265
|
-
return
|
|
266
|
+
return uiI18n.getFormatLocalizedString(str_, UIStrings.needsImprovementSummarized, values);
|
|
266
267
|
}
|
|
267
268
|
if (localRating === 'poor' && fieldRating === 'good') {
|
|
268
|
-
return
|
|
269
|
+
return uiI18n.getFormatLocalizedString(str_, UIStrings.poorGoodDetailedCompare, values);
|
|
269
270
|
}
|
|
270
271
|
if (localRating === 'poor' && fieldRating === 'needs-improvement') {
|
|
271
|
-
return
|
|
272
|
+
return uiI18n.getFormatLocalizedString(str_, UIStrings.poorNeedsImprovementDetailedCompare, values);
|
|
272
273
|
}
|
|
273
274
|
if (localRating === 'poor' && fieldRating === 'poor') {
|
|
274
|
-
return
|
|
275
|
+
return uiI18n.getFormatLocalizedString(str_, UIStrings.poorPoorDetailedCompare, values);
|
|
275
276
|
}
|
|
276
277
|
if (localRating === 'poor' && !fieldRating) {
|
|
277
|
-
return
|
|
278
|
+
return uiI18n.getFormatLocalizedString(str_, UIStrings.poorSummarized, values);
|
|
278
279
|
}
|
|
279
280
|
|
|
280
281
|
throw new Error('Detailed compare string not found');
|
|
@@ -8,6 +8,7 @@ import './Checklist.js';
|
|
|
8
8
|
import * as i18n from '../../../../core/i18n/i18n.js';
|
|
9
9
|
import type {LCPDiscoveryInsightModel} from '../../../../models/trace/insights/LCPDiscovery.js';
|
|
10
10
|
import * as Trace from '../../../../models/trace/trace.js';
|
|
11
|
+
import * as uiI18n from '../../../../ui/i18n/i18n.js';
|
|
11
12
|
import * as Lit from '../../../../ui/lit/lit.js';
|
|
12
13
|
|
|
13
14
|
import {BaseInsightComponent} from './BaseInsightComponent.js';
|
|
@@ -63,7 +64,7 @@ export class LCPDiscovery extends BaseInsightComponent<LCPDiscoveryInsightModel>
|
|
|
63
64
|
const timeWrapper = document.createElement('span');
|
|
64
65
|
timeWrapper.classList.add('discovery-time-ms');
|
|
65
66
|
timeWrapper.innerText = i18n.TimeUtilities.formatMicroSecondsAsMillisFixed(delay);
|
|
66
|
-
return
|
|
67
|
+
return uiI18n.getFormatLocalizedString(str_, UIStrings.lcpLoadDelay, {PH1: timeWrapper});
|
|
67
68
|
}
|
|
68
69
|
|
|
69
70
|
override renderContent(): Lit.LitTemplate {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Name: Dependencies sourced from the upstream `chromium` repository
|
|
2
2
|
URL: https://source.chromium.org/chromium/chromium/src/+/main:components/variations/proto/devtools/
|
|
3
3
|
Version: N/A
|
|
4
|
-
Revision:
|
|
4
|
+
Revision: 02e01d70b196feed2ae409aa37b1c99afb6c2ef3
|
|
5
5
|
Update Mechanism: Manual (https://crbug.com/428069060)
|
|
6
6
|
License: BSD-3-Clause
|
|
7
7
|
License File: LICENSE
|
|
@@ -31,7 +31,7 @@ Lit.render(
|
|
|
31
31
|
>
|
|
32
32
|
Non-button click trigger
|
|
33
33
|
</span>
|
|
34
|
-
<devtools-tooltip id="rich-tooltip" variant="rich"
|
|
34
|
+
<devtools-tooltip id="rich-tooltip" variant="rich" trigger="click">
|
|
35
35
|
<p>Rich tooltip</p>
|
|
36
36
|
<button>Action</button>
|
|
37
37
|
</devtools-tooltip>
|