chrome-devtools-frontend 1.0.1571573 → 1.0.1573331

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 (158) hide show
  1. package/front_end/Images/geminiInDevTools.png +0 -0
  2. package/front_end/Images/geminiInDevTools_2x.png +0 -0
  3. package/front_end/Images/src/database-off.svg +1 -0
  4. package/front_end/Images/src/lock-person.svg +1 -1
  5. package/front_end/core/common/Debouncer.ts +10 -1
  6. package/front_end/core/common/SettingRegistration.ts +1 -1
  7. package/front_end/core/host/AidaClient.ts +8 -0
  8. package/front_end/core/host/InspectorFrontendHostAPI.ts +0 -6
  9. package/front_end/core/host/UserMetrics.ts +0 -30
  10. package/front_end/core/root/ExperimentNames.ts +30 -0
  11. package/front_end/core/root/Runtime.ts +12 -27
  12. package/front_end/core/root/root.ts +2 -0
  13. package/front_end/core/sdk/CSSModel.ts +36 -13
  14. package/front_end/core/sdk/CSSProperty.ts +1 -1
  15. package/front_end/core/sdk/CSSPropertyParserMatchers.ts +9 -0
  16. package/front_end/core/sdk/CookieModel.ts +2 -1
  17. package/front_end/core/sdk/DOMModel.ts +1 -1
  18. package/front_end/core/sdk/DebuggerModel.ts +1 -1
  19. package/front_end/core/sdk/IsolateManager.ts +0 -7
  20. package/front_end/core/sdk/OverlayModel.ts +1 -1
  21. package/front_end/core/sdk/SourceMap.ts +1 -1
  22. package/front_end/devtools_compatibility.js +0 -6
  23. package/front_end/entrypoints/main/MainImpl.ts +34 -25
  24. package/front_end/entrypoints/main/main-meta.ts +1 -1
  25. package/front_end/generated/SupportedCSSProperties.js +4 -8
  26. package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +0 -180
  27. package/front_end/models/ai_assistance/agents/StylingAgent.snapshot.txt +7 -7
  28. package/front_end/models/ai_assistance/agents/StylingAgent.ts +4 -4
  29. package/front_end/models/ai_assistance/ai_assistance.ts +0 -2
  30. package/front_end/models/breakpoints/BreakpointManager.ts +3 -3
  31. package/front_end/models/issues_manager/ContrastCheckTrigger.ts +2 -2
  32. package/front_end/models/source_map_scopes/NamesResolver.ts +1 -1
  33. package/front_end/models/trace/EventsSerializer.ts +5 -1
  34. package/front_end/models/trace/types/TraceEvents.ts +4 -0
  35. package/front_end/panels/accessibility/AXBreadcrumbsPane.ts +1 -1
  36. package/front_end/panels/accessibility/AccessibilitySidebarView.ts +1 -1
  37. package/front_end/panels/ai_assistance/AiAssistancePanel.ts +8 -63
  38. package/front_end/panels/ai_assistance/PatchWidget.ts +3 -4
  39. package/front_end/panels/ai_assistance/SelectWorkspaceDialog.ts +1 -1
  40. package/front_end/panels/ai_assistance/aiAssistancePanel.css +0 -16
  41. package/front_end/panels/ai_assistance/ai_assistance.ts +0 -1
  42. package/front_end/panels/ai_assistance/components/ChatView.ts +123 -108
  43. package/front_end/panels/ai_assistance/components/PerformanceAgentMarkdownRenderer.ts +1 -145
  44. package/front_end/panels/application/AppManifestView.ts +5 -5
  45. package/front_end/panels/application/DeviceBoundSessionsModel.ts +55 -4
  46. package/front_end/panels/application/DeviceBoundSessionsTreeElement.ts +46 -1
  47. package/front_end/panels/application/FrameDetailsView.ts +10 -10
  48. package/front_end/panels/application/components/BackForwardCacheView.ts +6 -8
  49. package/front_end/panels/application/components/BounceTrackingMitigationsView.ts +4 -3
  50. package/front_end/panels/application/components/ProtocolHandlersView.ts +5 -6
  51. package/front_end/panels/application/components/ReportsGrid.ts +8 -9
  52. package/front_end/panels/application/components/SharedStorageAccessGrid.ts +5 -4
  53. package/front_end/panels/application/components/TrustTokensView.ts +4 -6
  54. package/front_end/panels/application/preloading/PreloadingView.ts +9 -8
  55. package/front_end/panels/application/preloading/components/PreloadingDetailsReportView.ts +237 -230
  56. package/front_end/panels/application/preloading/components/PreloadingGrid.ts +3 -2
  57. package/front_end/panels/application/preloading/components/UsedPreloadingView.ts +6 -10
  58. package/front_end/panels/application/resourcesSidebar.css +8 -0
  59. package/front_end/panels/autofill/AutofillView.ts +4 -3
  60. package/front_end/panels/common/AiCodeCompletionSummaryToolbar.ts +1 -1
  61. package/front_end/panels/common/AiCodeCompletionTeaser.ts +1 -1
  62. package/front_end/panels/common/AiCodeGenerationTeaser.ts +35 -4
  63. package/front_end/panels/common/AiCodeGenerationUpgradeDialog.ts +2 -2
  64. package/front_end/panels/common/BadgeNotification.ts +18 -14
  65. package/front_end/panels/common/GdpSignUpDialog.ts +5 -6
  66. package/front_end/panels/common/GeminiRebrandPromoDialog.ts +192 -0
  67. package/front_end/panels/common/aiCodeGenerationTeaser.css +16 -1
  68. package/front_end/panels/common/common.ts +1 -0
  69. package/front_end/panels/common/geminiRebrandPromoDialog.css +47 -0
  70. package/front_end/panels/console/ConsoleInsightTeaser.ts +3 -3
  71. package/front_end/panels/console/ErrorStackParser.ts +11 -16
  72. package/front_end/panels/css_overview/CSSOverviewCompletedView.ts +2 -2
  73. package/front_end/panels/css_overview/CSSOverviewModel.ts +1 -1
  74. package/front_end/panels/elements/ComputedStyleModel.ts +7 -54
  75. package/front_end/panels/elements/ElementsPanel.ts +33 -6
  76. package/front_end/panels/elements/ElementsTreeOutline.ts +1 -1
  77. package/front_end/panels/elements/StylePropertiesSection.ts +16 -8
  78. package/front_end/panels/elements/StylePropertyTreeElement.ts +67 -32
  79. package/front_end/panels/elements/StylesSidebarPane.ts +28 -11
  80. package/front_end/panels/elements/components/CSSHintDetailsView.ts +3 -2
  81. package/front_end/panels/elements/components/CSSPropertyDocsView.ts +3 -2
  82. package/front_end/panels/elements/elements-meta.ts +1 -1
  83. package/front_end/panels/explain/components/ConsoleInsight.ts +7 -7
  84. package/front_end/panels/issues/IssueView.ts +6 -6
  85. package/front_end/panels/network/RequestConditionsDrawer.ts +8 -7
  86. package/front_end/panels/network/RequestCookiesView.ts +3 -4
  87. package/front_end/panels/network/RequestTimingView.ts +3 -8
  88. package/front_end/panels/network/components/HeaderSectionRow.ts +3 -2
  89. package/front_end/panels/network/components/RequestHeaderSection.ts +3 -1
  90. package/front_end/panels/network/components/RequestHeadersView.ts +2 -2
  91. package/front_end/panels/profiler/HeapProfileView.ts +3 -3
  92. package/front_end/panels/profiler/HeapSnapshotView.ts +1 -1
  93. package/front_end/panels/profiler/IsolateSelector.ts +1 -2
  94. package/front_end/panels/profiler/profiler-meta.ts +3 -3
  95. package/front_end/panels/protocol_monitor/protocol_monitor-meta.ts +1 -1
  96. package/front_end/panels/recorder/RecorderController.ts +4 -9
  97. package/front_end/panels/recorder/components/CreateRecordingView.ts +6 -6
  98. package/front_end/panels/recorder/components/RecordingView.ts +0 -38
  99. package/front_end/panels/recorder/components/ReplaySection.ts +0 -14
  100. package/front_end/panels/recorder/components/StepEditor.ts +2 -40
  101. package/front_end/panels/recorder/recorderController.css +3 -3
  102. package/front_end/panels/security/CookieReportView.ts +17 -17
  103. package/front_end/panels/security/cookieControlsView.css +1 -1
  104. package/front_end/panels/security/cookieReportView.css +1 -1
  105. package/front_end/panels/settings/AISettingsTab.ts +8 -10
  106. package/front_end/panels/settings/components/SyncSection.ts +1 -1
  107. package/front_end/panels/settings/emulation/components/UserAgentClientHintsForm.ts +4 -12
  108. package/front_end/panels/settings/settings-meta.ts +1 -1
  109. package/front_end/panels/sources/BreakpointEditDialog.ts +4 -3
  110. package/front_end/panels/sources/FilteredUISourceCodeListProvider.ts +1 -1
  111. package/front_end/panels/sources/NavigatorView.ts +4 -4
  112. package/front_end/panels/sources/SourcesPanel.ts +5 -4
  113. package/front_end/panels/sources/components/HeadersView.ts +2 -2
  114. package/front_end/panels/timeline/CompatibilityTracksAppender.ts +3 -2
  115. package/front_end/panels/timeline/ThreadAppender.ts +2 -1
  116. package/front_end/panels/timeline/TimelineController.ts +3 -3
  117. package/front_end/panels/timeline/TimelinePanel.ts +6 -4
  118. package/front_end/panels/timeline/TimelineUIUtils.ts +2 -2
  119. package/front_end/panels/timeline/components/ExportTraceOptions.ts +4 -4
  120. package/front_end/panels/timeline/components/FieldSettingsDialog.ts +13 -6
  121. package/front_end/panels/timeline/components/LiveMetricsView.ts +13 -9
  122. package/front_end/panels/timeline/components/exportTraceOptions.css +1 -1
  123. package/front_end/panels/timeline/components/fieldSettingsDialog.css +1 -1
  124. package/front_end/panels/timeline/components/insights/BaseInsightComponent.ts +2 -19
  125. package/front_end/panels/timeline/components/insights/InsightRenderer.ts +3 -4
  126. package/front_end/panels/timeline/components/insights/baseInsightComponent.css +0 -5
  127. package/front_end/panels/timeline/components/liveMetricsView.css +1 -1
  128. package/front_end/panels/whats_new/ReleaseNoteView.ts +1 -1
  129. package/front_end/third_party/chromium/README.chromium +1 -1
  130. package/front_end/ui/components/buttons/button.css +4 -0
  131. package/front_end/ui/components/markdown_view/CodeBlock.ts +1 -1
  132. package/front_end/ui/components/panel_feedback/PanelFeedback.ts +1 -1
  133. package/front_end/ui/components/panel_feedback/PreviewToggle.ts +5 -5
  134. package/front_end/ui/components/panel_feedback/previewToggle.css +2 -2
  135. package/front_end/ui/components/text_editor/AiCodeGenerationParser.ts +27 -8
  136. package/front_end/ui/components/text_editor/AiCodeGenerationProvider.ts +36 -6
  137. package/front_end/ui/components/text_editor/AutocompleteHistory.ts +33 -1
  138. package/front_end/ui/legacy/ActionRegistration.ts +1 -1
  139. package/front_end/ui/legacy/ContextMenu.ts +2 -2
  140. package/front_end/ui/legacy/EmptyWidget.ts +3 -3
  141. package/front_end/ui/legacy/LinkContextMenuProvider.ts +42 -0
  142. package/front_end/ui/legacy/ViewRegistration.ts +1 -1
  143. package/front_end/ui/legacy/XLink.ts +0 -27
  144. package/front_end/ui/legacy/components/color_picker/ContrastDetails.ts +1 -1
  145. package/front_end/ui/legacy/components/color_picker/ContrastOverlay.ts +4 -4
  146. package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +2 -2
  147. package/front_end/ui/legacy/components/perf_ui/perf_ui-meta.ts +1 -1
  148. package/front_end/ui/legacy/inspectorCommon.css +2 -1
  149. package/front_end/ui/legacy/legacy.ts +3 -1
  150. package/front_end/ui/visual_logging/KnownContextValues.ts +2 -0
  151. package/front_end/ui/visual_logging/LoggingDriver.ts +3 -0
  152. package/package.json +1 -1
  153. package/front_end/models/ai_assistance/ArtifactsManager.ts +0 -67
  154. package/front_end/panels/ai_assistance/components/ArtifactsViewer.ts +0 -183
  155. package/front_end/panels/ai_assistance/components/CollapsibleAssistanceContentWidget.ts +0 -89
  156. package/front_end/panels/ai_assistance/components/PerformanceAgentFlameChart.ts +0 -133
  157. package/front_end/panels/ai_assistance/components/artifactsViewer.css +0 -15
  158. package/front_end/panels/ai_assistance/components/collapsibleAssistanceContentWidget.css +0 -32
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 -960 960 960" width="20px" fill="#e3e3e3"><path d="M449-449Zm97-87Zm-97 87Zm97-87Zm-97 87Zm97-87ZM768-90 90-768l51-51 678 678-51 51Zm-287.52-54Q339-144 241.5-185.85T144-288v-384q0-23 16-44.5t45-38.5l226 226q-65-4-120.5-18T216-583v109q44 32 111.5 49T480-408q17.96 0 35.02-.5 17.06-.5 34.12-2.5L612-348q-31 6-64.07 9-33.07 3-67.93 3-80 0-148.5-14.5T216-391v103q10 26 93.5 49T480-216q62 0 123-12t99-29l53 52q-45.91 28.22-117.59 44.61Q565.74-144 480.48-144ZM807-255l-63-63v-73q-11 6-23.94 11.33Q707.12-374.33 693-369l-57-57q32-8 59-20t49-28v-109q-40 22-94.5 35T532-530l-70-70q23 1 65-2.5t85.5-12q43.5-8.5 81-22.5t50.5-35q-18-28-98.5-50T480-744q-37 0-74 4.5T335-727l-59-59q43-14 94.5-22t109.5-8q139.07 0 237.53 42Q816-732 816-672v384q0 8-2 16.5t-7 16.5Z"/></svg>
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e3e3e3"><path d="M720-240q25 0 42.5-17.5T780-300q0-25-17.5-42.5T720-360q-25 0-42.5 17.5T660-300q0 25 17.5 42.5T720-240Zm0 120q30 0 56-14t43-39q-23-14-48-20.5t-51-6.5q-26 0-51 6.5T621-173q17 25 43 39t56 14ZM360-640h240v-80q0-50-35-85t-85-35q-50 0-85 35t-35 85v80ZM490-80H240q-33 0-56.5-23.5T160-160v-400q0-33 23.5-56.5T240-640h40v-80q0-83 58.5-141.5T480-920q83 0 141.5 58.5T680-720v80h40q33 0 56.5 23.5T800-560v52q-18-6-37.5-9t-42.5-3v-40H240v400h212q8 24 16 41.5T490-80Zm230 40q-83 0-141.5-58.5T520-240q0-83 58.5-141.5T720-440q83 0 141.5 58.5T920-240q0 83-58.5 141.5T720-40ZM240-560v400-400Z"/></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 -960 960 960" width="20px" fill="#e3e3e3"><path d="M720-240q25 0 42.5-17.5T780-300q0-25-17.5-42.5T720-360q-25 0-42.5 17.5T660-300q0 25 17.5 42.5T720-240Zm0 120q32 0 59-16t43-42q-23-13-48.5-19.5T720-204q-28 0-53.5 7T618-178q16 26 43 42t59 16ZM360-624h240v-96q0-50-35-85t-85-35q-50 0-85 35t-35 85v96ZM499-96H264q-29.7 0-50.85-21.15Q192-138.3 192-168v-384q0-29.7 21.15-50.85Q234.3-624 264-624h24v-96q0-79.68 56.23-135.84 56.22-56.16 136-56.16Q560-912 616-855.84q56 56.16 56 135.84v96h24q29.7 0 50.85 21.15Q768-581.7 768-552v53q-17.05-3-35.53-4.5Q714-505 696-503v-49H264v384h202q6 20 14 38t19 34Zm220.77 48Q640-48 584-104.23q-56-56.22-56-136Q528-320 584.23-376q56.22-56 136-56Q800-432 856-375.77q56 56.22 56 136Q912-160 855.77-104q-56.22 56-136 56ZM264-552v384-384Z"/></svg>
@@ -9,7 +9,16 @@ export const debounce = function(func: (...args: any[]) => void, delay: number):
9
9
  let timer: ReturnType<typeof setTimeout>;
10
10
  const debounced = (...args: any[]): void => {
11
11
  clearTimeout(timer);
12
- timer = setTimeout(() => func(...args), delay);
12
+ timer = setTimeout(() => func(...args), testDebounceOverride ? 0 : delay);
13
13
  };
14
14
  return debounced;
15
15
  };
16
+
17
+ let testDebounceOverride = false;
18
+ export function enableTestOverride(): void {
19
+ testDebounceOverride = true;
20
+ }
21
+
22
+ export function disableTestOverride(): void {
23
+ testDebounceOverride = false;
24
+ }
@@ -277,7 +277,7 @@ export interface SettingRegistration {
277
277
  * The name of the experiment a setting is associated with. Enabling and disabling the declared
278
278
  * experiment will enable and disable the setting respectively.
279
279
  */
280
- experiment?: Root.Runtime.ExperimentName;
280
+ experiment?: Root.ExperimentNames.ExperimentName;
281
281
  /**
282
282
  * A condition is a function that will make the setting available if it
283
283
  * returns true, and not available, otherwise. Make sure that objects you
@@ -531,6 +531,14 @@ export class AidaClient {
531
531
  if (!InspectorFrontendHostInstance.doAidaConversation) {
532
532
  throw new Error('doAidaConversation is not available');
533
533
  }
534
+
535
+ // Disable logging for now.
536
+ // For context, see b/454563259#comment35.
537
+ // We should be able to remove this ~end of April.
538
+ if (Root.Runtime.hostConfig.devToolsGeminiRebranding?.enabled) {
539
+ request.metadata.disable_user_content_logging = true;
540
+ }
541
+
534
542
  const stream = (() => {
535
543
  let {promise, resolve, reject} = Promise.withResolvers<string|null>();
536
544
  options?.signal?.addEventListener('abort', () => {
@@ -536,13 +536,7 @@ export const enum EnumeratedHistogram {
536
536
  DeveloperResourceScheme = 'DevTools.DeveloperResourceScheme',
537
537
  Language = 'DevTools.Language',
538
538
  SyncSetting = 'DevTools.SyncSetting',
539
- RecordingAssertion = 'DevTools.RecordingAssertion',
540
- RecordingCodeToggled = 'DevTools.RecordingCodeToggled',
541
- RecordingCopiedToClipboard = 'DevTools.RecordingCopiedToClipboard',
542
- RecordingEdited = 'DevTools.RecordingEdited',
543
- RecordingExported = 'DevTools.RecordingExported',
544
539
  RecordingReplayFinished = 'DevTools.RecordingReplayFinished',
545
- RecordingReplaySpeed = 'DevTools.RecordingReplaySpeed',
546
540
  RecordingReplayStarted = 'DevTools.RecordingReplayStarted',
547
541
  RecordingToggled = 'DevTools.RecordingToggled',
548
542
  SourcesPanelFileDebugged = 'DevTools.SourcesPanelFileDebugged',
@@ -209,11 +209,6 @@ export class UserMetrics {
209
209
  });
210
210
  }
211
211
 
212
- recordingAssertion(value: RecordingAssertion): void {
213
- InspectorFrontendHostInstance.recordEnumeratedHistogram(
214
- EnumeratedHistogram.RecordingAssertion, value, RecordingAssertion.MAX_VALUE);
215
- }
216
-
217
212
  recordingToggled(value: RecordingToggled): void {
218
213
  InspectorFrontendHostInstance.recordEnumeratedHistogram(
219
214
  EnumeratedHistogram.RecordingToggled, value, RecordingToggled.MAX_VALUE);
@@ -224,36 +219,11 @@ export class UserMetrics {
224
219
  EnumeratedHistogram.RecordingReplayFinished, value, RecordingReplayFinished.MAX_VALUE);
225
220
  }
226
221
 
227
- recordingReplaySpeed(value: RecordingReplaySpeed): void {
228
- InspectorFrontendHostInstance.recordEnumeratedHistogram(
229
- EnumeratedHistogram.RecordingReplaySpeed, value, RecordingReplaySpeed.MAX_VALUE);
230
- }
231
-
232
222
  recordingReplayStarted(value: RecordingReplayStarted): void {
233
223
  InspectorFrontendHostInstance.recordEnumeratedHistogram(
234
224
  EnumeratedHistogram.RecordingReplayStarted, value, RecordingReplayStarted.MAX_VALUE);
235
225
  }
236
226
 
237
- recordingEdited(value: RecordingEdited): void {
238
- InspectorFrontendHostInstance.recordEnumeratedHistogram(
239
- EnumeratedHistogram.RecordingEdited, value, RecordingEdited.MAX_VALUE);
240
- }
241
-
242
- recordingExported(value: RecordingExported): void {
243
- InspectorFrontendHostInstance.recordEnumeratedHistogram(
244
- EnumeratedHistogram.RecordingExported, value, RecordingExported.MAX_VALUE);
245
- }
246
-
247
- recordingCodeToggled(value: RecordingCodeToggled): void {
248
- InspectorFrontendHostInstance.recordEnumeratedHistogram(
249
- EnumeratedHistogram.RecordingCodeToggled, value, RecordingCodeToggled.MAX_VALUE);
250
- }
251
-
252
- recordingCopiedToClipboard(value: RecordingCopiedToClipboard): void {
253
- InspectorFrontendHostInstance.recordEnumeratedHistogram(
254
- EnumeratedHistogram.RecordingCopiedToClipboard, value, RecordingCopiedToClipboard.MAX_VALUE);
255
- }
256
-
257
227
  lighthouseModeRun(type: LighthouseModeRun): void {
258
228
  InspectorFrontendHostInstance.recordEnumeratedHistogram(
259
229
  EnumeratedHistogram.LighthouseModeRun, type, LighthouseModeRun.MAX_VALUE);
@@ -0,0 +1,30 @@
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
+ export enum ExperimentName {
6
+ ALL = '*',
7
+ CAPTURE_NODE_CREATION_STACKS = 'capture-node-creation-stacks',
8
+ LIVE_HEAP_PROFILE = 'live-heap-profile',
9
+ PROTOCOL_MONITOR = 'protocol-monitor',
10
+ SAMPLING_HEAP_PROFILER_TIMELINE = 'sampling-heap-profiler-timeline',
11
+ SHOW_OPTION_TO_EXPOSE_INTERNALS_IN_HEAP_SNAPSHOT = 'show-option-to-expose-internals-in-heap-snapshot',
12
+ TIMELINE_INVALIDATION_TRACKING = 'timeline-invalidation-tracking',
13
+ TIMELINE_SHOW_ALL_EVENTS = 'timeline-show-all-events',
14
+ TIMELINE_V8_RUNTIME_CALL_STATS = 'timeline-v8-runtime-call-stats',
15
+ APCA = 'apca',
16
+ FONT_EDITOR = 'font-editor',
17
+ FULL_ACCESSIBILITY_TREE = 'full-accessibility-tree',
18
+ CONTRAST_ISSUES = 'contrast-issues',
19
+ EXPERIMENTAL_COOKIE_FEATURES = 'experimental-cookie-features',
20
+ INSTRUMENTATION_BREAKPOINTS = 'instrumentation-breakpoints',
21
+ AUTHORED_DEPLOYED_GROUPING = 'authored-deployed-grouping',
22
+ JUST_MY_CODE = 'just-my-code',
23
+ USE_SOURCE_MAP_SCOPES = 'use-source-map-scopes',
24
+ TIMELINE_SHOW_POST_MESSAGE_EVENTS = 'timeline-show-postmessage-events',
25
+ TIMELINE_DEBUG_MODE = 'timeline-debug-mode',
26
+ // Adding or removing an entry from this enum?
27
+ // You will need to update:
28
+ // 1. DevToolsExperiments enum in host/UserMetrics.ts
29
+ // 2. Maybe REGISTERED_EXPERIMENTS in EnvironmentHelpers.ts (to create this experiment in the test env)
30
+ }
@@ -4,6 +4,8 @@
4
4
 
5
5
  import * as Platform from '../platform/platform.js';
6
6
 
7
+ import type {ExperimentName} from './ExperimentNames.js';
8
+
7
9
  let runtimePlatform = '';
8
10
 
9
11
  let runtimeInstance: Runtime|undefined;
@@ -333,33 +335,6 @@ export class Experiment {
333
335
  /** This must be constructed after the query parameters have been parsed. **/
334
336
  export const experiments = new ExperimentsSupport();
335
337
 
336
- export enum ExperimentName {
337
- ALL = '*',
338
- CAPTURE_NODE_CREATION_STACKS = 'capture-node-creation-stacks',
339
- LIVE_HEAP_PROFILE = 'live-heap-profile',
340
- PROTOCOL_MONITOR = 'protocol-monitor',
341
- SAMPLING_HEAP_PROFILER_TIMELINE = 'sampling-heap-profiler-timeline',
342
- SHOW_OPTION_TO_EXPOSE_INTERNALS_IN_HEAP_SNAPSHOT = 'show-option-to-expose-internals-in-heap-snapshot',
343
- TIMELINE_INVALIDATION_TRACKING = 'timeline-invalidation-tracking',
344
- TIMELINE_SHOW_ALL_EVENTS = 'timeline-show-all-events',
345
- TIMELINE_V8_RUNTIME_CALL_STATS = 'timeline-v8-runtime-call-stats',
346
- APCA = 'apca',
347
- FONT_EDITOR = 'font-editor',
348
- FULL_ACCESSIBILITY_TREE = 'full-accessibility-tree',
349
- CONTRAST_ISSUES = 'contrast-issues',
350
- EXPERIMENTAL_COOKIE_FEATURES = 'experimental-cookie-features',
351
- INSTRUMENTATION_BREAKPOINTS = 'instrumentation-breakpoints',
352
- AUTHORED_DEPLOYED_GROUPING = 'authored-deployed-grouping',
353
- JUST_MY_CODE = 'just-my-code',
354
- USE_SOURCE_MAP_SCOPES = 'use-source-map-scopes',
355
- TIMELINE_SHOW_POST_MESSAGE_EVENTS = 'timeline-show-postmessage-events',
356
- TIMELINE_DEBUG_MODE = 'timeline-debug-mode',
357
- // Adding or removing an entry from this enum?
358
- // You will need to update:
359
- // 1. DevToolsExperiments enum in host/UserMetrics.ts
360
- // 2. Maybe REGISTERED_EXPERIMENTS in EnvironmentHelpers.ts (to create this experiment in the test env)
361
- }
362
-
363
338
  export enum GenAiEnterprisePolicyValue {
364
339
  ALLOW = 0,
365
340
  ALLOW_WITHOUT_LOGGING = 1,
@@ -444,6 +419,10 @@ export interface HostConfigGreenDevUi {
444
419
  enabled: boolean;
445
420
  }
446
421
 
422
+ export interface HostConfigGeminiRebranding {
423
+ enabled: boolean;
424
+ }
425
+
447
426
  export interface HostConfigVeLogging {
448
427
  enabled: boolean;
449
428
  testing: boolean;
@@ -476,6 +455,10 @@ export interface HostConfigThirdPartyCookieControls {
476
455
  managedBlockThirdPartyCookies: string|boolean;
477
456
  }
478
457
 
458
+ export interface HostConfigAiAssistanceV2 {
459
+ enabled: boolean;
460
+ }
461
+
479
462
  interface AiGeneratedTimelineLabels {
480
463
  enabled: boolean;
481
464
  }
@@ -564,6 +547,7 @@ export type HostConfig = Platform.TypeScriptUtilities.RecursivePartial<{
564
547
  devToolsAiAssistanceNetworkAgent: HostConfigAiAssistanceNetworkAgent,
565
548
  devToolsAiAssistanceFileAgent: HostConfigAiAssistanceFileAgent,
566
549
  devToolsAiAssistancePerformanceAgent: HostConfigAiAssistancePerformanceAgent,
550
+ devToolsAiAssistanceV2: HostConfigAiAssistanceV2,
567
551
  devToolsAiCodeCompletion: HostConfigAiCodeCompletion,
568
552
  devToolsAiCodeGeneration: HostConfigAiCodeGeneration,
569
553
  devToolsVeLogging: HostConfigVeLogging,
@@ -590,6 +574,7 @@ export type HostConfig = Platform.TypeScriptUtilities.RecursivePartial<{
590
574
  devToolsEnableDurableMessages: DevToolsEnableDurableMessages,
591
575
  devToolsAiAssistanceContextSelectionAgent: HostConfigAiAssistanceContextSelectionAgent,
592
576
  devToolsConsoleInsightsTeasers: ConsoleInsightsTeasers,
577
+ devToolsGeminiRebranding: HostConfigGeminiRebranding,
593
578
  }>;
594
579
 
595
580
  /**
@@ -3,9 +3,11 @@
3
3
  // found in the LICENSE file.
4
4
 
5
5
  import * as DevToolsContext from './DevToolsContext.js';
6
+ import * as ExperimentNames from './ExperimentNames.js';
6
7
  import * as Runtime from './Runtime.js';
7
8
 
8
9
  export {
9
10
  DevToolsContext,
11
+ ExperimentNames,
10
12
  Runtime,
11
13
  };
@@ -379,6 +379,13 @@ export class CSSModel extends SDKModel<EventTypes> {
379
379
  return await this.#styleLoader.computedStylePromise(nodeId);
380
380
  }
381
381
 
382
+ async getComputedStyleExtraFields(nodeId: Protocol.DOM.NodeId): Promise<Protocol.CSS.ComputedStyleExtraFields> {
383
+ if (!this.isEnabled()) {
384
+ await this.enable();
385
+ }
386
+ return await this.#styleLoader.extraFieldsPromise(nodeId);
387
+ }
388
+
382
389
  async getLayoutPropertiesFromComputedStyle(nodeId: Protocol.DOM.NodeId): Promise<LayoutProperties|null> {
383
390
  const styles = await this.getComputedStyle(nodeId);
384
391
  if (!styles) {
@@ -1051,32 +1058,48 @@ class CSSDispatcher implements ProtocolProxyApi.CSSDispatcher {
1051
1058
  }
1052
1059
  }
1053
1060
 
1061
+ interface ComputedStyleWithExtraFields {
1062
+ style: Map<string, string>|null;
1063
+ extraFields: Protocol.CSS.ComputedStyleExtraFields;
1064
+ }
1065
+
1054
1066
  class ComputedStyleLoader {
1055
1067
  #cssModel: CSSModel;
1056
- #nodeIdToPromise = new Map<number, Promise<Map<string, string>|null>>();
1068
+ #nodeIdToPromise = new Map<number, Promise<ComputedStyleWithExtraFields>>();
1057
1069
  constructor(cssModel: CSSModel) {
1058
1070
  this.#cssModel = cssModel;
1059
1071
  }
1060
1072
 
1061
- computedStylePromise(nodeId: Protocol.DOM.NodeId): Promise<Map<string, string>|null> {
1073
+ #getResponsePromise(nodeId: Protocol.DOM.NodeId): Promise<ComputedStyleWithExtraFields> {
1062
1074
  let promise = this.#nodeIdToPromise.get(nodeId);
1063
1075
  if (promise) {
1064
1076
  return promise;
1065
1077
  }
1066
- promise = this.#cssModel.getAgent().invoke_getComputedStyleForNode({nodeId}).then(({computedStyle}) => {
1067
- this.#nodeIdToPromise.delete(nodeId);
1068
- if (!computedStyle?.length) {
1069
- return null;
1070
- }
1071
- const result = new Map<string, string>();
1072
- for (const property of computedStyle) {
1073
- result.set(property.name, property.value);
1074
- }
1075
- return result;
1076
- });
1078
+ promise =
1079
+ this.#cssModel.getAgent().invoke_getComputedStyleForNode({nodeId}).then(({computedStyle, extraFields}) => {
1080
+ this.#nodeIdToPromise.delete(nodeId);
1081
+ if (!computedStyle?.length) {
1082
+ return {style: null, extraFields};
1083
+ }
1084
+ const result = new Map<string, string>();
1085
+ for (const property of computedStyle) {
1086
+ result.set(property.name, property.value);
1087
+ }
1088
+ return {style: result, extraFields};
1089
+ });
1077
1090
  this.#nodeIdToPromise.set(nodeId, promise);
1078
1091
  return promise;
1079
1092
  }
1093
+
1094
+ async computedStylePromise(nodeId: Protocol.DOM.NodeId): Promise<Map<string, string>|null> {
1095
+ const computedStyleWithExtraFields = await this.#getResponsePromise(nodeId);
1096
+ return computedStyleWithExtraFields.style;
1097
+ }
1098
+
1099
+ async extraFieldsPromise(nodeId: Protocol.DOM.NodeId): Promise<Protocol.CSS.ComputedStyleExtraFields> {
1100
+ const computedStyleWithExtraFields = await this.#getResponsePromise(nodeId);
1101
+ return computedStyleWithExtraFields.extraFields;
1102
+ }
1080
1103
  }
1081
1104
 
1082
1105
  export class InlineStyleResult {
@@ -115,7 +115,7 @@ export class CSSProperty extends Common.ObjectWrapper.ObjectWrapper<EventTypes>
115
115
  const matchers = matchedStyles.propertyMatchers(this.ownerStyle, computedStyles);
116
116
 
117
117
  matchers.push(new CSSWideKeywordMatcher(this, matchedStyles));
118
- if (Root.Runtime.experiments.isEnabled(Root.Runtime.ExperimentName.FONT_EDITOR)) {
118
+ if (Root.Runtime.experiments.isEnabled(Root.ExperimentNames.ExperimentName.FONT_EDITOR)) {
119
119
  matchers.push(new FontMatcher());
120
120
  }
121
121
  return matchers;
@@ -983,6 +983,9 @@ export const enum ArithmeticFunction {
983
983
  CALC = 'calc',
984
984
  SIBLING_COUNT = 'sibling-count',
985
985
  SIBLING_INDEX = 'sibling-index',
986
+ ROUND = 'round',
987
+ MOD = 'mod',
988
+ REM = 'rem',
986
989
  }
987
990
  type MathFunction = SelectFunction|ArithmeticFunction;
988
991
 
@@ -1000,6 +1003,9 @@ export class MathFunctionMatch extends BaseFunctionMatch<MathFunction> {
1000
1003
  case ArithmeticFunction.CALC:
1001
1004
  case ArithmeticFunction.SIBLING_COUNT:
1002
1005
  case ArithmeticFunction.SIBLING_INDEX:
1006
+ case ArithmeticFunction.ROUND:
1007
+ case ArithmeticFunction.MOD:
1008
+ case ArithmeticFunction.REM:
1003
1009
  return true;
1004
1010
  }
1005
1011
  // This assignment catches missed values in the switch above.
@@ -1021,6 +1027,9 @@ export class MathFunctionMatcher extends matcherBase(MathFunctionMatch) {
1021
1027
  case ArithmeticFunction.CALC:
1022
1028
  case ArithmeticFunction.SIBLING_COUNT:
1023
1029
  case ArithmeticFunction.SIBLING_INDEX:
1030
+ case ArithmeticFunction.ROUND:
1031
+ case ArithmeticFunction.MOD:
1032
+ case ArithmeticFunction.REM:
1024
1033
  return maybeFunc;
1025
1034
  }
1026
1035
  // This assignment catches missed values in the switch above.
@@ -99,7 +99,8 @@ export class CookieModel extends SDKModel<EventTypes> {
99
99
  if (cookie.expires()) {
100
100
  expires = Math.floor(Date.parse(`${cookie.expires()}`) / 1000);
101
101
  }
102
- const enabled = Root.Runtime.experiments.isEnabled(Root.Runtime.ExperimentName.EXPERIMENTAL_COOKIE_FEATURES);
102
+ const enabled =
103
+ Root.Runtime.experiments.isEnabled(Root.ExperimentNames.ExperimentName.EXPERIMENTAL_COOKIE_FEATURES);
103
104
  const preserveUnset = (scheme: Protocol.Network.CookieSourceScheme): Protocol.Network.CookieSourceScheme.Unset|
104
105
  undefined => scheme === Protocol.Network.CookieSourceScheme.Unset ? scheme : undefined;
105
106
  const protocolCookie = {
@@ -1319,7 +1319,7 @@ export class DOMModel extends SDKModel<EventTypes> {
1319
1319
  void this.agent.invoke_enable({});
1320
1320
  }
1321
1321
 
1322
- if (Root.Runtime.experiments.isEnabled(Root.Runtime.ExperimentName.CAPTURE_NODE_CREATION_STACKS)) {
1322
+ if (Root.Runtime.experiments.isEnabled(Root.ExperimentNames.ExperimentName.CAPTURE_NODE_CREATION_STACKS)) {
1323
1323
  void this.agent.invoke_setNodeStackTracesEnabled({enable: true});
1324
1324
  }
1325
1325
  }
@@ -267,7 +267,7 @@ export class DebuggerModel extends SDKModel<EventTypes> {
267
267
  const maxScriptsCacheSize = isRemoteFrontend ? 10e6 : 100e6;
268
268
  const enablePromise = this.agent.invoke_enable({maxScriptsCacheSize});
269
269
  let instrumentationPromise: Promise<Protocol.Debugger.SetInstrumentationBreakpointResponse>|undefined;
270
- if (Root.Runtime.experiments.isEnabled(Root.Runtime.ExperimentName.INSTRUMENTATION_BREAKPOINTS)) {
270
+ if (Root.Runtime.experiments.isEnabled(Root.ExperimentNames.ExperimentName.INSTRUMENTATION_BREAKPOINTS)) {
271
271
  instrumentationPromise = this.agent.invoke_setInstrumentationBreakpoint({
272
272
  instrumentation: Protocol.Debugger.SetInstrumentationBreakpointRequestInstrumentation.BeforeScriptExecution,
273
273
  });
@@ -49,13 +49,6 @@ export class IsolateManager extends Common.ObjectWrapper.ObjectWrapper<EventType
49
49
  }
50
50
  }
51
51
 
52
- unobserveIsolates(observer: Observer): void {
53
- this.#observers.delete(observer);
54
- if (!this.#observers.size) {
55
- this.#pollId++;
56
- }
57
- }
58
-
59
52
  modelAdded(model: RuntimeModel): void {
60
53
  void this.#modelAdded(model);
61
54
  }
@@ -534,7 +534,7 @@ export class OverlayModel extends SDKModel<EventTypes> implements ProtocolProxyA
534
534
  gridHighlightConfig: {},
535
535
  flexContainerHighlightConfig: {},
536
536
  flexItemHighlightConfig: {},
537
- contrastAlgorithm: Root.Runtime.experiments.isEnabled(Root.Runtime.ExperimentName.APCA) ?
537
+ contrastAlgorithm: Root.Runtime.experiments.isEnabled(Root.ExperimentNames.ExperimentName.APCA) ?
538
538
  Protocol.Overlay.ContrastAlgorithm.Apca :
539
539
  Protocol.Overlay.ContrastAlgorithm.Aa,
540
540
  };
@@ -578,7 +578,7 @@ export class SourceMap {
578
578
  lineNumber, columnNumber, sourceIndex, sourceURL, sourceLineNumber, sourceColumnNumber, names[nameIndex]));
579
579
  }
580
580
 
581
- if (Root.Runtime.experiments.isEnabled(Root.Runtime.ExperimentName.USE_SOURCE_MAP_SCOPES)) {
581
+ if (Root.Runtime.experiments.isEnabled(Root.ExperimentNames.ExperimentName.USE_SOURCE_MAP_SCOPES)) {
582
582
  if (!this.#scopesInfo) {
583
583
  this.#scopesInfo = new SourceMapScopesInfo(this, {scopes: [], ranges: []});
584
584
  }
@@ -435,13 +435,7 @@
435
435
  LighthouseModeRun: 'DevTools.LighthouseModeRun',
436
436
  LighthouseCategoryUsed: 'DevTools.LighthouseCategoryUsed',
437
437
  PanelShown: 'DevTools.PanelShown',
438
- RecordingAssertion: 'DevTools.RecordingAssertion',
439
- RecordingCodeToggled: 'DevTools.RecordingCodeToggled',
440
- RecordingCopiedToClipboard: 'DevTools.RecordingCopiedToClipboard',
441
- RecordingEdited: 'DevTools.RecordingEdited',
442
- RecordingExported: 'DevTools.RecordingExported',
443
438
  RecordingReplayFinished: 'DevTools.RecordingReplayFinished',
444
- RecordingReplaySpeed: 'DevTools.RecordingReplaySpeed',
445
439
  RecordingReplayStarted: 'DevTools.RecordingReplayStarted',
446
440
  RecordingToggled: 'DevTools.RecordingToggled',
447
441
  SourcesPanelFileDebugged: 'DevTools.SourcesPanelFileDebugged',
@@ -330,77 +330,82 @@ export class MainImpl {
330
330
 
331
331
  #initializeExperiments(): void {
332
332
  Root.Runtime.experiments.register(
333
- Root.Runtime.ExperimentName.CAPTURE_NODE_CREATION_STACKS, 'Capture node creation stacks');
334
- Root.Runtime.experiments.register(Root.Runtime.ExperimentName.LIVE_HEAP_PROFILE, 'Live heap profile');
333
+ Root.ExperimentNames.ExperimentName.CAPTURE_NODE_CREATION_STACKS, 'Capture node creation stacks');
334
+ Root.Runtime.experiments.register(Root.ExperimentNames.ExperimentName.LIVE_HEAP_PROFILE, 'Live heap profile');
335
335
  Root.Runtime.experiments.register(
336
- Root.Runtime.ExperimentName.PROTOCOL_MONITOR, 'Protocol Monitor',
336
+ Root.ExperimentNames.ExperimentName.PROTOCOL_MONITOR, 'Protocol Monitor',
337
337
  'https://developer.chrome.com/blog/new-in-devtools-92/#protocol-monitor');
338
338
  Root.Runtime.experiments.register(
339
- Root.Runtime.ExperimentName.SAMPLING_HEAP_PROFILER_TIMELINE, 'Sampling heap profiler timeline');
339
+ Root.ExperimentNames.ExperimentName.SAMPLING_HEAP_PROFILER_TIMELINE, 'Sampling heap profiler timeline');
340
340
  Root.Runtime.experiments.register(
341
- Root.Runtime.ExperimentName.SHOW_OPTION_TO_EXPOSE_INTERNALS_IN_HEAP_SNAPSHOT,
341
+ Root.ExperimentNames.ExperimentName.SHOW_OPTION_TO_EXPOSE_INTERNALS_IN_HEAP_SNAPSHOT,
342
342
  'Show option to expose internals in heap snapshots');
343
343
 
344
344
  // Timeline
345
345
  Root.Runtime.experiments.register(
346
- Root.Runtime.ExperimentName.TIMELINE_INVALIDATION_TRACKING, 'Performance panel: invalidation tracking');
346
+ Root.ExperimentNames.ExperimentName.TIMELINE_INVALIDATION_TRACKING, 'Performance panel: invalidation tracking');
347
347
  Root.Runtime.experiments.register(
348
- Root.Runtime.ExperimentName.TIMELINE_SHOW_ALL_EVENTS, 'Performance panel: show all events');
348
+ Root.ExperimentNames.ExperimentName.TIMELINE_SHOW_ALL_EVENTS, 'Performance panel: show all events');
349
349
  Root.Runtime.experiments.register(
350
- Root.Runtime.ExperimentName.TIMELINE_V8_RUNTIME_CALL_STATS, 'Performance panel: V8 runtime call stats');
350
+ Root.ExperimentNames.ExperimentName.TIMELINE_V8_RUNTIME_CALL_STATS, 'Performance panel: V8 runtime call stats');
351
351
  Root.Runtime.experiments.register(
352
- Root.Runtime.ExperimentName.TIMELINE_DEBUG_MODE, 'Performance panel: debug mode (trace event details, etc)');
352
+ Root.ExperimentNames.ExperimentName.TIMELINE_DEBUG_MODE,
353
+ 'Performance panel: debug mode (trace event details, etc)');
353
354
 
354
355
  // Debugging
355
356
  Root.Runtime.experiments.register(
356
- Root.Runtime.ExperimentName.INSTRUMENTATION_BREAKPOINTS, 'Instrumentation breakpoints');
357
+ Root.ExperimentNames.ExperimentName.INSTRUMENTATION_BREAKPOINTS, 'Instrumentation breakpoints');
357
358
  Root.Runtime.experiments.register(
358
- Root.Runtime.ExperimentName.USE_SOURCE_MAP_SCOPES, 'Use scope information from source maps');
359
+ Root.ExperimentNames.ExperimentName.USE_SOURCE_MAP_SCOPES, 'Use scope information from source maps');
359
360
 
360
361
  // Advanced Perceptual Contrast Algorithm.
361
362
  Root.Runtime.experiments.register(
362
- Root.Runtime.ExperimentName.APCA,
363
+ Root.ExperimentNames.ExperimentName.APCA,
363
364
  'Advanced Perceptual Contrast Algorithm (APCA) replacing previous contrast ratio and AA/AAA guidelines',
364
365
  'https://developer.chrome.com/blog/new-in-devtools-89/#apca');
365
366
 
366
367
  // Full Accessibility Tree
367
368
  Root.Runtime.experiments.register(
368
- Root.Runtime.ExperimentName.FULL_ACCESSIBILITY_TREE, 'Full accessibility tree view in the Elements panel',
369
+ Root.ExperimentNames.ExperimentName.FULL_ACCESSIBILITY_TREE,
370
+ 'Full accessibility tree view in the Elements panel',
369
371
  'https://developer.chrome.com/blog/new-in-devtools-90/#accessibility-tree',
370
372
  'https://g.co/devtools/a11y-tree-feedback');
371
373
 
372
374
  // Font Editor
373
375
  Root.Runtime.experiments.register(
374
- Root.Runtime.ExperimentName.FONT_EDITOR, 'New font editor in the Styles tab',
376
+ Root.ExperimentNames.ExperimentName.FONT_EDITOR, 'New font editor in the Styles tab',
375
377
  'https://developer.chrome.com/blog/new-in-devtools-89/#font');
376
378
 
377
379
  // Contrast issues reported via the Issues panel.
378
380
  Root.Runtime.experiments.register(
379
- Root.Runtime.ExperimentName.CONTRAST_ISSUES, 'Automatic contrast issue reporting via the Issues panel',
381
+ Root.ExperimentNames.ExperimentName.CONTRAST_ISSUES, 'Automatic contrast issue reporting via the Issues panel',
380
382
  'https://developer.chrome.com/blog/new-in-devtools-90/#low-contrast');
381
383
 
382
384
  // New cookie features.
383
385
  Root.Runtime.experiments.register(
384
- Root.Runtime.ExperimentName.EXPERIMENTAL_COOKIE_FEATURES, 'Experimental cookie features');
386
+ Root.ExperimentNames.ExperimentName.EXPERIMENTAL_COOKIE_FEATURES, 'Experimental cookie features');
385
387
 
386
388
  // Change grouping of sources panel to use Authored/Deployed trees
387
389
  Root.Runtime.experiments.register(
388
- Root.Runtime.ExperimentName.AUTHORED_DEPLOYED_GROUPING, 'Group sources into authored and deployed trees',
389
- 'https://goo.gle/authored-deployed', 'https://goo.gle/authored-deployed-feedback');
390
+ Root.ExperimentNames.ExperimentName.AUTHORED_DEPLOYED_GROUPING,
391
+ 'Group sources into authored and deployed trees', 'https://goo.gle/authored-deployed',
392
+ 'https://goo.gle/authored-deployed-feedback');
390
393
 
391
394
  // Hide third party code (as determined by ignore lists or source maps)
392
395
  Root.Runtime.experiments.register(
393
- Root.Runtime.ExperimentName.JUST_MY_CODE, 'Hide ignore-listed code in Sources tree view');
396
+ Root.ExperimentNames.ExperimentName.JUST_MY_CODE, 'Hide ignore-listed code in Sources tree view');
394
397
 
395
398
  Root.Runtime.experiments.register(
396
- Root.Runtime.ExperimentName.TIMELINE_SHOW_POST_MESSAGE_EVENTS,
399
+ Root.ExperimentNames.ExperimentName.TIMELINE_SHOW_POST_MESSAGE_EVENTS,
397
400
  'Performance panel: show postMessage dispatch and handling flows',
398
401
  );
399
402
 
400
403
  Root.Runtime.experiments.enableExperimentsByDefault([
401
- Root.Runtime.ExperimentName.FULL_ACCESSIBILITY_TREE,
402
- Root.Runtime.ExperimentName.USE_SOURCE_MAP_SCOPES,
403
- ...(Root.Runtime.Runtime.queryParam('isChromeForTesting') ? [Root.Runtime.ExperimentName.PROTOCOL_MONITOR] : []),
404
+ Root.ExperimentNames.ExperimentName.FULL_ACCESSIBILITY_TREE,
405
+ Root.ExperimentNames.ExperimentName.USE_SOURCE_MAP_SCOPES,
406
+ ...(Root.Runtime.Runtime.queryParam('isChromeForTesting') ?
407
+ [Root.ExperimentNames.ExperimentName.PROTOCOL_MONITOR] :
408
+ []),
404
409
  ]);
405
410
 
406
411
  Root.Runtime.experiments.cleanUpStaleExperiments();
@@ -413,7 +418,7 @@ export class MainImpl {
413
418
  if (Host.InspectorFrontendHost.isUnderTest()) {
414
419
  const testParam = Root.Runtime.Runtime.queryParam('test');
415
420
  if (testParam?.includes('live-line-level-heap-profile.js')) {
416
- Root.Runtime.experiments.enableForTest(Root.Runtime.ExperimentName.LIVE_HEAP_PROFILE);
421
+ Root.Runtime.experiments.enableForTest(Root.ExperimentNames.ExperimentName.LIVE_HEAP_PROFILE);
417
422
  }
418
423
  }
419
424
 
@@ -576,6 +581,10 @@ export class MainImpl {
576
581
  AiAssistanceModel.ConversationHandler.ConversationHandlerEvents.EXTERNAL_CONVERSATION_STARTED,
577
582
  event => void VisualLogging.logFunctionCall(`start-conversation-${event.data}`, 'external'));
578
583
 
584
+ if (Root.Runtime.hostConfig.devToolsGeminiRebranding?.enabled) {
585
+ await PanelCommon.GeminiRebrandPromoDialog.maybeShow();
586
+ }
587
+
579
588
  MainImpl.timeEnd('Main._createAppUI');
580
589
 
581
590
  const appProvider = Common.AppProvider.getRegisteredAppProviders()[0];
@@ -683,7 +692,7 @@ export class MainImpl {
683
692
  const runnable = await lateInitializationLoader();
684
693
  return await runnable.run();
685
694
  });
686
- if (Root.Runtime.experiments.isEnabled(Root.Runtime.ExperimentName.LIVE_HEAP_PROFILE)) {
695
+ if (Root.Runtime.experiments.isEnabled(Root.ExperimentNames.ExperimentName.LIVE_HEAP_PROFILE)) {
687
696
  const PerfUI = await import('../../ui/legacy/components/perf_ui/perf_ui.js');
688
697
  const setting = 'memory-live-heap-profile';
689
698
  if (Common.Settings.Settings.instance().moduleSetting(setting).get()) {
@@ -877,7 +877,7 @@ UI.ContextMenu.registerProvider({
877
877
  ];
878
878
  },
879
879
  async loadProvider() {
880
- return new UI.XLink.ContextMenuProvider();
880
+ return new UI.LinkContextMenuProvider.LinkContextMenuProvider();
881
881
  },
882
882
  experiment: undefined,
883
883
  });
@@ -1793,8 +1793,7 @@ export const generatedProperties = [
1793
1793
  "keywords": [
1794
1794
  "all",
1795
1795
  "around",
1796
- "between",
1797
- "none"
1796
+ "between"
1798
1797
  ],
1799
1798
  "name": "column-rule-visibility-items"
1800
1799
  },
@@ -3825,8 +3824,7 @@ export const generatedProperties = [
3825
3824
  "keywords": [
3826
3825
  "all",
3827
3826
  "around",
3828
- "between",
3829
- "none"
3827
+ "between"
3830
3828
  ],
3831
3829
  "name": "row-rule-visibility-items"
3832
3830
  },
@@ -5521,8 +5519,7 @@ export const generatedPropertyValues = {
5521
5519
  "values": [
5522
5520
  "all",
5523
5521
  "around",
5524
- "between",
5525
- "none"
5522
+ "between"
5526
5523
  ]
5527
5524
  },
5528
5525
  "column-rule-width": {
@@ -6645,8 +6642,7 @@ export const generatedPropertyValues = {
6645
6642
  "values": [
6646
6643
  "all",
6647
6644
  "around",
6648
- "between",
6649
- "none"
6645
+ "between"
6650
6646
  ]
6651
6647
  },
6652
6648
  "row-rule-width": {