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.
Files changed (77) hide show
  1. package/docs/contributing/images/issues-nearestslo.png +0 -0
  2. package/docs/contributing/issues.md +17 -21
  3. package/front_end/core/common/Console.ts +1 -8
  4. package/front_end/core/common/ParsedURL.ts +10 -20
  5. package/front_end/core/common/SegmentedRange.ts +1 -2
  6. package/front_end/core/common/StringOutputStream.ts +1 -4
  7. package/front_end/core/i18n/i18nImpl.ts +0 -24
  8. package/front_end/core/sdk/AnimationModel.ts +1 -2
  9. package/front_end/core/sdk/CSSMatchedStyles.ts +2 -2
  10. package/front_end/core/sdk/CSSModel.ts +1 -1
  11. package/front_end/core/sdk/CSSProperty.ts +3 -6
  12. package/front_end/core/sdk/CSSStyleDeclaration.ts +4 -4
  13. package/front_end/core/sdk/DebuggerModel.ts +1 -2
  14. package/front_end/core/sdk/EnhancedTracesParser.ts +4 -0
  15. package/front_end/core/sdk/SourceMap.ts +2 -3
  16. package/front_end/entrypoints/node_app/NodeConnectionsPanel.ts +2 -1
  17. package/front_end/generated/InspectorBackendCommands.js +1 -2
  18. package/front_end/generated/SupportedCSSProperties.js +19 -0
  19. package/front_end/generated/protocol.ts +0 -27
  20. package/front_end/panels/accessibility/AccessibilityNodeView.ts +18 -17
  21. package/front_end/panels/accessibility/AccessibilitySidebarView.ts +9 -12
  22. package/front_end/panels/ai_assistance/components/ChatView.ts +5 -4
  23. package/front_end/panels/application/AppManifestView.ts +7 -6
  24. package/front_end/panels/application/ApplicationPanelSidebar.ts +4 -4
  25. package/front_end/panels/application/OpenedWindowDetailsView.ts +6 -6
  26. package/front_end/panels/application/StorageView.ts +9 -8
  27. package/front_end/panels/application/components/BackForwardCacheView.ts +333 -314
  28. package/front_end/panels/application/components/ProtocolHandlersView.ts +3 -2
  29. package/front_end/panels/application/preloading/components/PreloadingDisabledInfobar.ts +2 -1
  30. package/front_end/panels/browser_debugger/ObjectEventListenersSidebarPane.ts +8 -8
  31. package/front_end/panels/common/BadgeNotification.ts +2 -1
  32. package/front_end/panels/common/GdpSignUpDialog.ts +2 -1
  33. package/front_end/panels/console/ConsoleInsightTeaser.ts +8 -2
  34. package/front_end/panels/console/ConsolePinPane.ts +12 -7
  35. package/front_end/panels/developer_resources/DeveloperResourcesView.ts +9 -9
  36. package/front_end/panels/elements/ComputedStyleWidget.ts +7 -7
  37. package/front_end/panels/elements/EventListenersWidget.ts +9 -9
  38. package/front_end/panels/elements/NodeStackTraceWidget.ts +6 -6
  39. package/front_end/panels/elements/PlatformFontsWidget.ts +5 -5
  40. package/front_end/panels/elements/PropertiesWidget.ts +8 -8
  41. package/front_end/panels/layer_viewer/Layers3DView.ts +2 -1
  42. package/front_end/panels/layer_viewer/PaintProfilerView.ts +3 -3
  43. package/front_end/panels/network/RequestCookiesView.ts +2 -1
  44. package/front_end/panels/network/RequestTimingView.ts +2 -1
  45. package/front_end/panels/recorder/RecorderController.ts +34 -23
  46. package/front_end/panels/recorder/components/CreateRecordingView.ts +249 -240
  47. package/front_end/panels/security/CookieControlsView.ts +2 -1
  48. package/front_end/panels/security/CookieReportView.ts +3 -2
  49. package/front_end/panels/settings/AISettingsTab.ts +2 -1
  50. package/front_end/panels/settings/KeybindsSettingsTab.ts +6 -0
  51. package/front_end/panels/settings/components/SyncSection.ts +2 -1
  52. package/front_end/panels/sources/DebuggerPausedMessage.ts +4 -3
  53. package/front_end/panels/sources/ResourceOriginPlugin.ts +3 -2
  54. package/front_end/panels/sources/SourcesNavigator.ts +2 -1
  55. package/front_end/panels/sources/TabbedEditorContainer.ts +3 -2
  56. package/front_end/panels/sources/WatchExpressionsSidebarPane.ts +9 -9
  57. package/front_end/panels/timeline/TimelineUIUtils.ts +3 -2
  58. package/front_end/panels/timeline/components/DetailsView.ts +5 -4
  59. package/front_end/panels/timeline/components/FieldSettingsDialog.ts +2 -1
  60. package/front_end/panels/timeline/components/LiveMetricsView.ts +5 -4
  61. package/front_end/panels/timeline/components/MetricCompareStrings.ts +25 -24
  62. package/front_end/panels/timeline/components/insights/LCPDiscovery.ts +2 -1
  63. package/front_end/third_party/chromium/README.chromium +1 -1
  64. package/front_end/ui/components/docs/tooltip/basic.ts +1 -1
  65. package/front_end/ui/components/tooltips/Tooltip.ts +32 -17
  66. package/front_end/ui/i18n/i18n.ts +31 -0
  67. package/front_end/ui/legacy/SoftDropDown.ts +1 -12
  68. package/front_end/ui/legacy/ViewManager.ts +2 -4
  69. package/front_end/ui/legacy/Widget.ts +33 -17
  70. package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +2 -1
  71. package/front_end/ui/legacy/legacy.ts +0 -2
  72. package/front_end/ui/visual_logging/KnownContextValues.ts +3 -0
  73. package/mcp/mcp.ts +1 -0
  74. package/package.json +1 -1
  75. package/front_end/ui/components/docs/recorder_create_recording_view/basic.html +0 -20
  76. package/front_end/ui/components/docs/recorder_create_recording_view/basic.ts +0 -27
  77. 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`${i18n.i18n.getFormatLocalizedString(str_, UIStrings.gitHubResource, {
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`${i18n.i18n.getFormatLocalizedString(str_, UIStrings.gracePeriod, {
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`${i18n.i18n.getFormatLocalizedString(str_, UIStrings.termsOfServicePrivacyNotice, {
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 = i18n.i18n.getFormatLocalizedString(str_, UIStrings.dataDisclaimer, {
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 = i18n.i18n.getFormatLocalizedString(str_, UIStrings.childSAdded, {PH1: targetNodeLink});
179
+ messageElement = uiI18n.getFormatLocalizedString(str_, UIStrings.childSAdded, {PH1: targetNodeLink});
179
180
  } else {
180
- messageElement = i18n.i18n.getFormatLocalizedString(str_, UIStrings.descendantSAdded, {PH1: targetNodeLink});
181
+ messageElement = uiI18n.getFormatLocalizedString(str_, UIStrings.descendantSAdded, {PH1: targetNodeLink});
181
182
  }
182
183
  } else {
183
- messageElement = i18n.i18n.getFormatLocalizedString(str_, UIStrings.descendantSRemoved, {PH1: targetNodeLink});
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(i18n.i18n.getFormatLocalizedString(str_, UIStrings.fromS, {PH1: element}))];
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(i18n.i18n.getFormatLocalizedString(str_, UIStrings.fromS, {PH1: link}))];
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
- i18n.i18n.getFormatLocalizedString(str_, UIStrings.automaticWorkspaceNudge, {PH1: link});
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(i18n.i18n.getFormatLocalizedString(
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(i18n.i18n.getFormatLocalizedString(
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.ThrottledWidget.ThrottledWidget implements
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.update, 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.update, this);
142
- UI.Context.Context.instance().addFlavorChangeListener(SDK.DebuggerModel.CallFrame, this.update, 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.update();
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 doUpdate(): Promise<void> {
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.update();
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.update();
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
- i18n.i18n.getFormatLocalizedString(
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 i18n.i18n.getFormatLocalizedString(str_, UIStrings.emptyPlaceholder, {PH1: durationText});
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(i18n.i18n.getFormatLocalizedString(
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(i18n.i18n.getFormatLocalizedString(
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(i18n.i18n.getFormatLocalizedString(
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 = i18n.i18n.getFormatLocalizedString(str_, UIStrings.fetchAggregated, {PH1: linkEl});
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>${i18n.i18n.getFormatLocalizedString(str_, UIStrings.device, {PH1: deviceRecEl})}</li>
633
- <li>${i18n.i18n.getFormatLocalizedString(str_, UIStrings.network, {PH1: networkRecEl})}</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 = i18n.i18n.getFormatLocalizedString(str_, UIStrings.collectionPeriod, {
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 = i18n.i18n.getFormatLocalizedString(str_, UIStrings.seeHowYourLocalMetricsCompare, {PH1: linkEl});
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 i18n.i18n.getFormatLocalizedString(str_, UIStrings.goodBetterCompare, values);
189
+ return uiI18n.getFormatLocalizedString(str_, UIStrings.goodBetterCompare, values);
189
190
  }
190
191
  if (rating === 'good' && compare === 'worse') {
191
- return i18n.i18n.getFormatLocalizedString(str_, UIStrings.goodWorseCompare, values);
192
+ return uiI18n.getFormatLocalizedString(str_, UIStrings.goodWorseCompare, values);
192
193
  }
193
194
  if (rating === 'good' && compare === 'similar') {
194
- return i18n.i18n.getFormatLocalizedString(str_, UIStrings.goodSimilarCompare, values);
195
+ return uiI18n.getFormatLocalizedString(str_, UIStrings.goodSimilarCompare, values);
195
196
  }
196
197
  if (rating === 'good' && !compare) {
197
- return i18n.i18n.getFormatLocalizedString(str_, UIStrings.goodSummarized, values);
198
+ return uiI18n.getFormatLocalizedString(str_, UIStrings.goodSummarized, values);
198
199
  }
199
200
  if (rating === 'needs-improvement' && compare === 'better') {
200
- return i18n.i18n.getFormatLocalizedString(str_, UIStrings.needsImprovementBetterCompare, values);
201
+ return uiI18n.getFormatLocalizedString(str_, UIStrings.needsImprovementBetterCompare, values);
201
202
  }
202
203
  if (rating === 'needs-improvement' && compare === 'worse') {
203
- return i18n.i18n.getFormatLocalizedString(str_, UIStrings.needsImprovementWorseCompare, values);
204
+ return uiI18n.getFormatLocalizedString(str_, UIStrings.needsImprovementWorseCompare, values);
204
205
  }
205
206
  if (rating === 'needs-improvement' && compare === 'similar') {
206
- return i18n.i18n.getFormatLocalizedString(str_, UIStrings.needsImprovementSimilarCompare, values);
207
+ return uiI18n.getFormatLocalizedString(str_, UIStrings.needsImprovementSimilarCompare, values);
207
208
  }
208
209
  if (rating === 'needs-improvement' && !compare) {
209
- return i18n.i18n.getFormatLocalizedString(str_, UIStrings.needsImprovementSummarized, values);
210
+ return uiI18n.getFormatLocalizedString(str_, UIStrings.needsImprovementSummarized, values);
210
211
  }
211
212
  if (rating === 'poor' && compare === 'better') {
212
- return i18n.i18n.getFormatLocalizedString(str_, UIStrings.poorBetterCompare, values);
213
+ return uiI18n.getFormatLocalizedString(str_, UIStrings.poorBetterCompare, values);
213
214
  }
214
215
  if (rating === 'poor' && compare === 'worse') {
215
- return i18n.i18n.getFormatLocalizedString(str_, UIStrings.poorWorseCompare, values);
216
+ return uiI18n.getFormatLocalizedString(str_, UIStrings.poorWorseCompare, values);
216
217
  }
217
218
  if (rating === 'poor' && compare === 'similar') {
218
- return i18n.i18n.getFormatLocalizedString(str_, UIStrings.poorSimilarCompare, values);
219
+ return uiI18n.getFormatLocalizedString(str_, UIStrings.poorSimilarCompare, values);
219
220
  }
220
221
  if (rating === 'poor' && !compare) {
221
- return i18n.i18n.getFormatLocalizedString(str_, UIStrings.poorSummarized, values);
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 i18n.i18n.getFormatLocalizedString(str_, UIStrings.goodGoodDetailedCompare, values);
245
+ return uiI18n.getFormatLocalizedString(str_, UIStrings.goodGoodDetailedCompare, values);
245
246
  }
246
247
  if (localRating === 'good' && fieldRating === 'needs-improvement') {
247
- return i18n.i18n.getFormatLocalizedString(str_, UIStrings.goodNeedsImprovementDetailedCompare, values);
248
+ return uiI18n.getFormatLocalizedString(str_, UIStrings.goodNeedsImprovementDetailedCompare, values);
248
249
  }
249
250
  if (localRating === 'good' && fieldRating === 'poor') {
250
- return i18n.i18n.getFormatLocalizedString(str_, UIStrings.goodPoorDetailedCompare, values);
251
+ return uiI18n.getFormatLocalizedString(str_, UIStrings.goodPoorDetailedCompare, values);
251
252
  }
252
253
  if (localRating === 'good' && !fieldRating) {
253
- return i18n.i18n.getFormatLocalizedString(str_, UIStrings.goodSummarized, values);
254
+ return uiI18n.getFormatLocalizedString(str_, UIStrings.goodSummarized, values);
254
255
  }
255
256
  if (localRating === 'needs-improvement' && fieldRating === 'good') {
256
- return i18n.i18n.getFormatLocalizedString(str_, UIStrings.needsImprovementGoodDetailedCompare, values);
257
+ return uiI18n.getFormatLocalizedString(str_, UIStrings.needsImprovementGoodDetailedCompare, values);
257
258
  }
258
259
  if (localRating === 'needs-improvement' && fieldRating === 'needs-improvement') {
259
- return i18n.i18n.getFormatLocalizedString(str_, UIStrings.needsImprovementNeedsImprovementDetailedCompare, values);
260
+ return uiI18n.getFormatLocalizedString(str_, UIStrings.needsImprovementNeedsImprovementDetailedCompare, values);
260
261
  }
261
262
  if (localRating === 'needs-improvement' && fieldRating === 'poor') {
262
- return i18n.i18n.getFormatLocalizedString(str_, UIStrings.needsImprovementPoorDetailedCompare, values);
263
+ return uiI18n.getFormatLocalizedString(str_, UIStrings.needsImprovementPoorDetailedCompare, values);
263
264
  }
264
265
  if (localRating === 'needs-improvement' && !fieldRating) {
265
- return i18n.i18n.getFormatLocalizedString(str_, UIStrings.needsImprovementSummarized, values);
266
+ return uiI18n.getFormatLocalizedString(str_, UIStrings.needsImprovementSummarized, values);
266
267
  }
267
268
  if (localRating === 'poor' && fieldRating === 'good') {
268
- return i18n.i18n.getFormatLocalizedString(str_, UIStrings.poorGoodDetailedCompare, values);
269
+ return uiI18n.getFormatLocalizedString(str_, UIStrings.poorGoodDetailedCompare, values);
269
270
  }
270
271
  if (localRating === 'poor' && fieldRating === 'needs-improvement') {
271
- return i18n.i18n.getFormatLocalizedString(str_, UIStrings.poorNeedsImprovementDetailedCompare, values);
272
+ return uiI18n.getFormatLocalizedString(str_, UIStrings.poorNeedsImprovementDetailedCompare, values);
272
273
  }
273
274
  if (localRating === 'poor' && fieldRating === 'poor') {
274
- return i18n.i18n.getFormatLocalizedString(str_, UIStrings.poorPoorDetailedCompare, values);
275
+ return uiI18n.getFormatLocalizedString(str_, UIStrings.poorPoorDetailedCompare, values);
275
276
  }
276
277
  if (localRating === 'poor' && !fieldRating) {
277
- return i18n.i18n.getFormatLocalizedString(str_, UIStrings.poorSummarized, values);
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 i18n.i18n.getFormatLocalizedString(str_, UIStrings.lcpLoadDelay, {PH1: timeWrapper});
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: c7f689c4ea24e98a4a1e06c78b10633db5a9f78f
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" use-click>
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>