chrome-devtools-frontend 1.0.1512147 → 1.0.1513662

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 (337) hide show
  1. package/docs/cookbook/release_management.md +15 -13
  2. package/docs/get_the_code.md +114 -35
  3. package/front_end/Images/src/ai-explorer-badge.svg +114 -0
  4. package/front_end/Images/src/code-whisperer-badge.svg +166 -0
  5. package/front_end/Images/src/devtools-user-badge.svg +129 -0
  6. package/front_end/Images/src/dom-detective-badge.svg +136 -0
  7. package/front_end/Images/src/speedster-badge.svg +166 -0
  8. package/front_end/core/common/Color.ts +40 -44
  9. package/front_end/core/common/Console.ts +4 -4
  10. package/front_end/core/common/ParsedURL.ts +14 -14
  11. package/front_end/core/common/ResourceType.ts +20 -20
  12. package/front_end/core/common/SegmentedRange.ts +13 -14
  13. package/front_end/core/common/Settings.ts +4 -4
  14. package/front_end/core/common/StringOutputStream.ts +4 -4
  15. package/front_end/core/host/GdpClient.ts +76 -2
  16. package/front_end/core/host/InspectorFrontendHost.ts +4 -1
  17. package/front_end/core/host/InspectorFrontendHostAPI.ts +2 -0
  18. package/front_end/core/host/ResourceLoader.ts +2 -2
  19. package/front_end/core/host/UserMetrics.ts +0 -2
  20. package/front_end/core/i18n/NumberFormatter.ts +7 -0
  21. package/front_end/core/protocol_client/InspectorBackend.ts +9 -9
  22. package/front_end/core/root/Runtime.ts +5 -2
  23. package/front_end/core/sdk/AccessibilityModel.ts +48 -48
  24. package/front_end/core/sdk/AnimationModel.ts +78 -79
  25. package/front_end/core/sdk/CPUProfilerModel.ts +5 -5
  26. package/front_end/core/sdk/CPUThrottlingManager.ts +17 -17
  27. package/front_end/core/sdk/CSSMatchedStyles.ts +44 -44
  28. package/front_end/core/sdk/CSSMedia.ts +22 -22
  29. package/front_end/core/sdk/CSSModel.ts +4 -4
  30. package/front_end/core/sdk/CSSProperty.ts +9 -9
  31. package/front_end/core/sdk/CSSPropertyParser.ts +1 -2
  32. package/front_end/core/sdk/CSSRule.ts +3 -3
  33. package/front_end/core/sdk/CSSStyleDeclaration.ts +27 -28
  34. package/front_end/core/sdk/CSSStyleSheetHeader.ts +13 -13
  35. package/front_end/core/sdk/CategorizedBreakpoint.ts +4 -4
  36. package/front_end/core/sdk/ChildTargetManager.ts +6 -6
  37. package/front_end/core/sdk/CompilerSourceMappingContentProvider.ts +4 -4
  38. package/front_end/core/sdk/ConsoleModel.ts +24 -24
  39. package/front_end/core/sdk/Cookie.ts +16 -16
  40. package/front_end/core/sdk/CookieParser.ts +6 -6
  41. package/front_end/core/sdk/DOMDebuggerModel.ts +88 -89
  42. package/front_end/core/sdk/DOMModel.ts +113 -113
  43. package/front_end/core/sdk/DebuggerModel.ts +102 -103
  44. package/front_end/core/sdk/EmulationModel.ts +6 -6
  45. package/front_end/core/sdk/EventBreakpointsModel.ts +5 -5
  46. package/front_end/core/sdk/HeapProfilerModel.ts +5 -5
  47. package/front_end/core/sdk/IsolateManager.ts +26 -26
  48. package/front_end/core/sdk/LayerTreeBase.ts +29 -30
  49. package/front_end/core/sdk/OverlayModel.ts +6 -6
  50. package/front_end/core/sdk/Resource.ts +43 -43
  51. package/front_end/core/sdk/ResourceTreeModel.ts +58 -61
  52. package/front_end/core/sdk/RuntimeModel.ts +12 -13
  53. package/front_end/core/sdk/SDKModel.ts +3 -3
  54. package/front_end/core/sdk/Script.ts +17 -17
  55. package/front_end/core/sdk/SecurityOriginManager.ts +14 -14
  56. package/front_end/core/sdk/ServerTiming.ts +2 -2
  57. package/front_end/core/sdk/ServiceWorkerCacheModel.ts +15 -15
  58. package/front_end/core/sdk/ServiceWorkerManager.ts +19 -24
  59. package/front_end/core/sdk/SourceMap.ts +10 -10
  60. package/front_end/core/sdk/StorageKeyManager.ts +12 -12
  61. package/front_end/core/sdk/Target.ts +33 -34
  62. package/front_end/core/sdk/TargetManager.ts +20 -20
  63. package/front_end/entrypoints/formatter_worker/AcornTokenizer.ts +8 -8
  64. package/front_end/entrypoints/formatter_worker/HTMLFormatter.ts +7 -7
  65. package/front_end/entrypoints/heap_snapshot_worker/AllocationProfile.ts +7 -7
  66. package/front_end/entrypoints/heap_snapshot_worker/HeapSnapshot.ts +24 -24
  67. package/front_end/entrypoints/main/GlobalAiButton.ts +3 -3
  68. package/front_end/entrypoints/main/MainImpl.ts +16 -14
  69. package/front_end/entrypoints/main/main-meta.ts +1 -2
  70. package/front_end/generated/InspectorBackendCommands.js +3 -2
  71. package/front_end/generated/SupportedCSSProperties.js +20 -0
  72. package/front_end/generated/protocol-mapping.d.ts +4 -0
  73. package/front_end/generated/protocol-proxy-api.d.ts +5 -0
  74. package/front_end/generated/protocol.ts +20 -0
  75. package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +18 -35
  76. package/front_end/models/ai_assistance/ai_assistance.ts +1 -1
  77. package/front_end/models/ai_assistance/data_formatters/NetworkRequestFormatter.ts +7 -6
  78. package/front_end/models/ai_assistance/data_formatters/PerformanceInsightFormatter.snapshot.txt +246 -119
  79. package/front_end/models/ai_assistance/data_formatters/PerformanceInsightFormatter.ts +187 -73
  80. package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.snapshot.txt +106 -100
  81. package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.ts +20 -27
  82. package/front_end/models/ai_assistance/data_formatters/UnitFormatters.ts +151 -0
  83. package/front_end/models/badges/AiExplorerBadge.ts +21 -0
  84. package/front_end/models/badges/Badge.ts +10 -9
  85. package/front_end/models/badges/CodeWhispererBadge.ts +21 -0
  86. package/front_end/models/badges/DOMDetectiveBadge.ts +21 -0
  87. package/front_end/models/badges/SpeedsterBadge.ts +7 -2
  88. package/front_end/models/badges/StarterBadge.ts +6 -1
  89. package/front_end/models/badges/UserBadges.ts +61 -9
  90. package/front_end/models/bindings/CSSWorkspaceBinding.ts +6 -6
  91. package/front_end/models/bindings/DebuggerLanguagePlugins.ts +18 -18
  92. package/front_end/models/bindings/FileUtils.ts +15 -15
  93. package/front_end/models/bindings/ResourceScriptMapping.ts +14 -14
  94. package/front_end/models/elements/ElementUpdateRecord.ts +11 -11
  95. package/front_end/models/emulation/DeviceModeModel.ts +123 -131
  96. package/front_end/models/emulation/EmulatedDevices.ts +22 -22
  97. package/front_end/models/extensions/ExtensionPanel.ts +24 -24
  98. package/front_end/models/extensions/ExtensionServer.ts +4 -4
  99. package/front_end/models/javascript_metadata/NativeFunctions.js +14 -2
  100. package/front_end/models/persistence/IsolatedFileSystem.ts +18 -19
  101. package/front_end/models/persistence/IsolatedFileSystemManager.ts +13 -13
  102. package/front_end/models/trace/EventsSerializer.ts +5 -5
  103. package/front_end/models/trace/LanternComputationData.ts +10 -10
  104. package/front_end/models/trace/ModelImpl.ts +32 -54
  105. package/front_end/models/trace/Processor.ts +28 -30
  106. package/front_end/models/trace/extras/FilmStrip.ts +6 -6
  107. package/front_end/models/trace/extras/StackTraceForEvent.ts +22 -25
  108. package/front_end/models/trace/extras/ThirdParties.ts +16 -17
  109. package/front_end/models/trace/extras/TraceFilter.ts +1 -1
  110. package/front_end/models/trace/handlers/Threads.ts +10 -10
  111. package/front_end/models/trace/handlers/helpers.ts +9 -9
  112. package/front_end/models/trace/handlers/types.ts +3 -3
  113. package/front_end/models/trace/insights/CLSCulprits.ts +12 -14
  114. package/front_end/models/trace/insights/Cache.ts +8 -4
  115. package/front_end/models/trace/insights/DOMSize.ts +8 -5
  116. package/front_end/models/trace/insights/DocumentLatency.ts +2 -2
  117. package/front_end/models/trace/insights/DuplicatedJavaScript.ts +3 -3
  118. package/front_end/models/trace/insights/FontDisplay.ts +3 -4
  119. package/front_end/models/trace/insights/ForcedReflow.ts +3 -3
  120. package/front_end/models/trace/insights/INPBreakdown.ts +2 -2
  121. package/front_end/models/trace/insights/ImageDelivery.ts +11 -11
  122. package/front_end/models/trace/insights/LCPBreakdown.ts +4 -4
  123. package/front_end/models/trace/insights/LCPDiscovery.ts +4 -4
  124. package/front_end/models/trace/insights/LegacyJavaScript.ts +2 -2
  125. package/front_end/models/trace/insights/ModernHTTP.ts +4 -5
  126. package/front_end/models/trace/insights/NetworkDependencyTree.ts +12 -12
  127. package/front_end/models/trace/insights/RenderBlocking.ts +9 -10
  128. package/front_end/models/trace/insights/SlowCSSSelector.ts +2 -2
  129. package/front_end/models/trace/insights/ThirdParties.ts +4 -5
  130. package/front_end/models/trace/insights/Viewport.ts +8 -5
  131. package/front_end/models/trace/insights/types.ts +1 -0
  132. package/front_end/models/trace/lantern/testing/MetricTestUtils.ts +10 -10
  133. package/front_end/panels/accessibility/AXBreadcrumbsPane.ts +52 -52
  134. package/front_end/panels/accessibility/AccessibilitySidebarView.ts +8 -8
  135. package/front_end/panels/animation/AnimationTimeline.ts +5 -5
  136. package/front_end/panels/animation/AnimationUI.ts +22 -23
  137. package/front_end/panels/application/ApplicationPanelSidebar.ts +12 -12
  138. package/front_end/panels/application/DOMStorageModel.ts +23 -23
  139. package/front_end/panels/application/ExtensionStorageModel.ts +31 -31
  140. package/front_end/panels/application/IndexedDBModel.ts +1 -0
  141. package/front_end/panels/application/PreloadingTreeElement.ts +8 -8
  142. package/front_end/panels/application/ServiceWorkersView.ts +0 -53
  143. package/front_end/panels/application/preloading/components/PreloadingDisabledInfobar.ts +2 -2
  144. package/front_end/panels/application/preloading/components/UsedPreloadingView.ts +2 -2
  145. package/front_end/panels/common/BadgeNotification.ts +140 -10
  146. package/front_end/panels/common/GdpSignUpDialog.ts +5 -0
  147. package/front_end/panels/common/badgeNotification.css +30 -9
  148. package/front_end/panels/console/ConsoleContextSelector.ts +9 -9
  149. package/front_end/panels/console/ConsolePrompt.ts +8 -5
  150. package/front_end/panels/console/ConsoleView.ts +13 -13
  151. package/front_end/panels/console/ConsoleViewport.ts +29 -29
  152. package/front_end/panels/coverage/CoverageModel.ts +22 -22
  153. package/front_end/panels/elements/ClassesPaneWidget.ts +1 -1
  154. package/front_end/panels/elements/ComputedStyleModel.ts +17 -18
  155. package/front_end/panels/elements/DOMPath.ts +2 -2
  156. package/front_end/panels/elements/ElementsPanel.ts +13 -13
  157. package/front_end/panels/elements/ElementsTreeElement.ts +30 -18
  158. package/front_end/panels/elements/ElementsTreeOutline.ts +44 -48
  159. package/front_end/panels/elements/ShortcutTreeElement.ts +4 -4
  160. package/front_end/panels/elements/StylePropertiesSection.ts +7 -4
  161. package/front_end/panels/elements/StylePropertyTreeElement.ts +54 -50
  162. package/front_end/panels/elements/StylesSidebarPane.ts +19 -19
  163. package/front_end/panels/emulation/DeviceModeToolbar.ts +7 -7
  164. package/front_end/panels/emulation/DeviceModeView.ts +6 -6
  165. package/front_end/panels/emulation/MediaQueryInspector.ts +18 -18
  166. package/front_end/panels/event_listeners/EventListenersView.ts +13 -14
  167. package/front_end/panels/layer_viewer/LayerTreeOutline.ts +3 -3
  168. package/front_end/panels/layer_viewer/LayerViewHost.ts +13 -13
  169. package/front_end/panels/layer_viewer/PaintProfilerView.ts +9 -10
  170. package/front_end/panels/layer_viewer/TransformController.ts +34 -36
  171. package/front_end/panels/layers/LayerTreeModel.ts +41 -40
  172. package/front_end/panels/lighthouse/LighthouseReportSelector.ts +13 -13
  173. package/front_end/panels/lighthouse/LighthouseStartView.ts +7 -7
  174. package/front_end/panels/media/PlayerMessagesView.ts +5 -5
  175. package/front_end/panels/media/TickingFlameChart.ts +24 -24
  176. package/front_end/panels/media/TickingFlameChartHelpers.ts +32 -32
  177. package/front_end/panels/network/NetworkItemView.ts +4 -4
  178. package/front_end/panels/network/NetworkLogViewColumns.ts +29 -29
  179. package/front_end/panels/network/NetworkPanel.ts +8 -5
  180. package/front_end/panels/network/ResourceWebSocketFrameView.ts +10 -10
  181. package/front_end/panels/profiler/HeapDetachedElementsView.ts +3 -3
  182. package/front_end/panels/profiler/HeapProfileView.ts +1 -1
  183. package/front_end/panels/profiler/ProfileFlameChartDataProvider.ts +3 -4
  184. package/front_end/panels/profiler/ProfileHeader.ts +25 -25
  185. package/front_end/panels/profiler/ProfileLauncherView.ts +5 -6
  186. package/front_end/panels/recorder/components/ReplaySection.ts +3 -1
  187. package/front_end/panels/security/OriginTreeElement.ts +8 -8
  188. package/front_end/panels/security/SecurityPanel.ts +5 -5
  189. package/front_end/panels/settings/SettingsScreen.ts +18 -18
  190. package/front_end/panels/settings/components/SyncSection.ts +26 -8
  191. package/front_end/panels/sources/AiCodeCompletionPlugin.ts +3 -0
  192. package/front_end/panels/sources/DebuggerPausedMessage.ts +8 -9
  193. package/front_end/panels/sources/NavigatorView.ts +43 -46
  194. package/front_end/panels/sources/SourcesPanel.ts +35 -35
  195. package/front_end/panels/sources/SourcesView.ts +13 -13
  196. package/front_end/panels/sources/TabbedEditorContainer.ts +19 -22
  197. package/front_end/panels/sources/UISourceCodeFrame.ts +4 -4
  198. package/front_end/panels/sources/WatchExpressionsSidebarPane.ts +34 -36
  199. package/front_end/panels/timeline/AnimationsTrackAppender.ts +3 -3
  200. package/front_end/panels/timeline/CompatibilityTracksAppender.ts +8 -8
  201. package/front_end/panels/timeline/CountersGraph.ts +16 -16
  202. package/front_end/panels/timeline/EntriesFilter.ts +4 -3
  203. package/front_end/panels/timeline/EventsTimelineTreeView.ts +3 -3
  204. package/front_end/panels/timeline/GPUTrackAppender.ts +3 -3
  205. package/front_end/panels/timeline/Initiators.ts +10 -10
  206. package/front_end/panels/timeline/InteractionsTrackAppender.ts +5 -5
  207. package/front_end/panels/timeline/LayoutShiftsTrackAppender.ts +7 -7
  208. package/front_end/panels/timeline/ModificationsManager.ts +8 -15
  209. package/front_end/panels/timeline/TargetForEvent.ts +2 -2
  210. package/front_end/panels/timeline/ThirdPartyTreeView.ts +1 -1
  211. package/front_end/panels/timeline/ThreadAppender.ts +13 -13
  212. package/front_end/panels/timeline/TimelineDetailsView.ts +6 -14
  213. package/front_end/panels/timeline/TimelineEventOverview.ts +27 -26
  214. package/front_end/panels/timeline/TimelineFilters.ts +5 -5
  215. package/front_end/panels/timeline/TimelineFlameChartDataProvider.ts +54 -53
  216. package/front_end/panels/timeline/TimelineFlameChartNetworkDataProvider.ts +34 -34
  217. package/front_end/panels/timeline/TimelineFlameChartView.ts +18 -31
  218. package/front_end/panels/timeline/TimelineHistoryManager.ts +17 -18
  219. package/front_end/panels/timeline/TimelineMiniMap.ts +6 -6
  220. package/front_end/panels/timeline/TimelinePaintProfilerView.ts +6 -6
  221. package/front_end/panels/timeline/TimelinePanel.ts +73 -68
  222. package/front_end/panels/timeline/TimelineSelectorStatsView.ts +7 -5
  223. package/front_end/panels/timeline/TimelineTreeView.ts +10 -10
  224. package/front_end/panels/timeline/TimelineUIUtils.ts +47 -46
  225. package/front_end/panels/timeline/TimingsTrackAppender.ts +12 -12
  226. package/front_end/panels/timeline/TracingLayerTree.ts +43 -43
  227. package/front_end/panels/timeline/TrackConfigBanner.ts +6 -6
  228. package/front_end/panels/timeline/TrackConfiguration.ts +1 -1
  229. package/front_end/panels/timeline/components/DetailsView.ts +4 -4
  230. package/front_end/panels/timeline/components/LayoutShiftDetails.ts +12 -21
  231. package/front_end/panels/timeline/components/LiveMetricsView.ts +2 -1
  232. package/front_end/panels/timeline/components/NetworkRequestDetails.ts +5 -5
  233. package/front_end/panels/timeline/components/Sidebar.ts +4 -14
  234. package/front_end/panels/timeline/components/SidebarInsightsTab.ts +13 -36
  235. package/front_end/panels/timeline/components/SidebarSingleInsightSet.ts +21 -19
  236. package/front_end/panels/timeline/components/insights/BaseInsightComponent.ts +1 -1
  237. package/front_end/panels/timeline/components/insights/Cache.ts +4 -0
  238. package/front_end/panels/timeline/components/insights/DOMSize.ts +5 -1
  239. package/front_end/panels/timeline/components/insights/Helpers.ts +19 -0
  240. package/front_end/panels/timeline/components/insights/NetworkDependencyTree.ts +1 -1
  241. package/front_end/panels/timeline/components/insights/Viewport.ts +4 -0
  242. package/front_end/panels/timeline/overlays/OverlaysImpl.ts +1 -1
  243. package/front_end/panels/timeline/utils/AICallTree.ts +11 -11
  244. package/front_end/panels/timeline/utils/AIContext.ts +17 -19
  245. package/front_end/panels/timeline/utils/EntityMapper.ts +6 -5
  246. package/front_end/panels/timeline/utils/EntryName.ts +2 -2
  247. package/front_end/panels/timeline/utils/EntryNodes.ts +5 -5
  248. package/front_end/panels/timeline/utils/EntryStyles.ts +4 -4
  249. package/front_end/panels/timeline/utils/FreshRecording.ts +3 -3
  250. package/front_end/panels/timeline/utils/Helpers.ts +0 -18
  251. package/front_end/panels/timeline/utils/InsightAIContext.ts +6 -6
  252. package/front_end/panels/timeline/utils/SourceMapsResolver.ts +7 -7
  253. package/front_end/panels/webauthn/WebauthnPane.ts +1 -0
  254. package/front_end/third_party/chromium/README.chromium +1 -1
  255. package/front_end/third_party/codemirror.next/chunk/angular.js +1 -1
  256. package/front_end/third_party/codemirror.next/chunk/angular.js.map +1 -1
  257. package/front_end/third_party/codemirror.next/chunk/codemirror.js +1 -1
  258. package/front_end/third_party/codemirror.next/chunk/codemirror.js.map +1 -1
  259. package/front_end/third_party/codemirror.next/chunk/cpp.js +1 -1
  260. package/front_end/third_party/codemirror.next/chunk/cpp.js.map +1 -1
  261. package/front_end/third_party/codemirror.next/chunk/java.js +1 -1
  262. package/front_end/third_party/codemirror.next/chunk/java.js.map +1 -1
  263. package/front_end/third_party/codemirror.next/chunk/legacy.js +1 -1
  264. package/front_end/third_party/codemirror.next/chunk/legacy.js.map +1 -1
  265. package/front_end/third_party/codemirror.next/chunk/less.js +1 -1
  266. package/front_end/third_party/codemirror.next/chunk/less.js.map +1 -1
  267. package/front_end/third_party/codemirror.next/chunk/markdown.js +1 -1
  268. package/front_end/third_party/codemirror.next/chunk/markdown.js.map +1 -1
  269. package/front_end/third_party/codemirror.next/chunk/php.js +1 -1
  270. package/front_end/third_party/codemirror.next/chunk/php.js.map +1 -1
  271. package/front_end/third_party/codemirror.next/chunk/python.js +1 -1
  272. package/front_end/third_party/codemirror.next/chunk/python.js.map +1 -1
  273. package/front_end/third_party/codemirror.next/chunk/sass.js +1 -1
  274. package/front_end/third_party/codemirror.next/chunk/sass.js.map +1 -1
  275. package/front_end/third_party/codemirror.next/chunk/svelte.js +1 -1
  276. package/front_end/third_party/codemirror.next/chunk/svelte.js.map +1 -1
  277. package/front_end/third_party/codemirror.next/chunk/vue.js +1 -1
  278. package/front_end/third_party/codemirror.next/chunk/vue.js.map +1 -1
  279. package/front_end/third_party/codemirror.next/chunk/wast.js +1 -1
  280. package/front_end/third_party/codemirror.next/chunk/wast.js.map +1 -1
  281. package/front_end/third_party/codemirror.next/chunk/xml.js +1 -1
  282. package/front_end/third_party/codemirror.next/chunk/xml.js.map +1 -1
  283. package/front_end/third_party/codemirror.next/codemirror.next.js +1 -1
  284. package/front_end/third_party/codemirror.next/package.json +1 -1
  285. package/front_end/third_party/codemirror.next/rebuild.sh +1 -1
  286. package/front_end/third_party/json5/rebuild.sh +1 -1
  287. package/front_end/third_party/legacy-javascript/{update.sh → rebuild.sh} +1 -1
  288. package/front_end/third_party/lit/lib/decorators.d.ts +26 -9
  289. package/front_end/third_party/lit/lib/decorators.js +5 -5
  290. package/front_end/third_party/lit/lib/decorators.js.map +1 -1
  291. package/front_end/third_party/lit/lib/directive.js.map +1 -1
  292. package/front_end/third_party/lit/lib/directives.js +8 -13
  293. package/front_end/third_party/lit/lib/directives.js.map +1 -1
  294. package/front_end/third_party/lit/lib/lit.d.ts +26 -9
  295. package/front_end/third_party/lit/lib/lit.js +5 -5
  296. package/front_end/third_party/lit/lib/lit.js.map +1 -1
  297. package/front_end/third_party/lit/lib/static-html.js +2 -2
  298. package/front_end/third_party/lit/lib/static-html.js.map +1 -1
  299. package/front_end/third_party/lit/rebuild.sh +1 -1
  300. package/front_end/third_party/third-party-web/rebuild.sh +1 -1
  301. package/front_end/ui/components/dialogs/Dialog.ts +6 -7
  302. package/front_end/ui/legacy/ActionRegistration.ts +9 -9
  303. package/front_end/ui/legacy/DockController.ts +18 -18
  304. package/front_end/ui/legacy/FilterBar.ts +7 -7
  305. package/front_end/ui/legacy/Fragment.ts +4 -4
  306. package/front_end/ui/legacy/GlassPane.ts +12 -12
  307. package/front_end/ui/legacy/InspectorView.ts +5 -15
  308. package/front_end/ui/legacy/ListControl.ts +27 -27
  309. package/front_end/ui/legacy/ListWidget.ts +4 -4
  310. package/front_end/ui/legacy/PopoverHelper.ts +4 -4
  311. package/front_end/ui/legacy/ShortcutRegistry.ts +17 -17
  312. package/front_end/ui/legacy/TabbedPane.ts +74 -75
  313. package/front_end/ui/legacy/TextPrompt.ts +31 -31
  314. package/front_end/ui/legacy/Toolbar.ts +13 -14
  315. package/front_end/ui/legacy/ViewManager.ts +30 -31
  316. package/front_end/ui/legacy/Widget.ts +6 -6
  317. package/front_end/ui/legacy/XLink.ts +9 -9
  318. package/front_end/ui/legacy/ZoomManager.ts +9 -9
  319. package/front_end/ui/legacy/components/color_picker/ContrastDetails.ts +27 -27
  320. package/front_end/ui/legacy/components/color_picker/ContrastInfo.ts +30 -32
  321. package/front_end/ui/legacy/components/color_picker/Spectrum.ts +15 -15
  322. package/front_end/ui/legacy/components/data_grid/DataGrid.ts +64 -64
  323. package/front_end/ui/legacy/components/data_grid/ShowMoreDataGridNode.ts +2 -2
  324. package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +10 -11
  325. package/front_end/ui/legacy/components/perf_ui/ChartViewport.ts +12 -12
  326. package/front_end/ui/legacy/components/perf_ui/FlameChart.ts +3 -3
  327. package/front_end/ui/legacy/components/perf_ui/TimelineGrid.ts +14 -14
  328. package/front_end/ui/legacy/components/perf_ui/TimelineOverviewPane.ts +8 -8
  329. package/front_end/ui/legacy/components/quick_open/CommandMenu.ts +5 -5
  330. package/front_end/ui/legacy/components/source_frame/ResourceSourceFrame.ts +4 -4
  331. package/front_end/ui/legacy/filter.css +1 -1
  332. package/front_end/ui/legacy/inspectorCommon.css +1 -1
  333. package/front_end/ui/legacy/softDropDownButton.css +1 -1
  334. package/front_end/ui/legacy/theme_support/ThemeSupport.ts +4 -4
  335. package/front_end/ui/visual_logging/KnownContextValues.ts +2 -2
  336. package/package.json +1 -1
  337. package/front_end/models/ai_assistance/data_formatters/Types.ts +0 -9
@@ -0,0 +1,151 @@
1
+ // Copyright 2025 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
+ /**
6
+ * This module contains unit formatters that are only to be used within
7
+ * the AI models because they do not account for locales other than en-US.
8
+ */
9
+ const defaultTimeFormatterOptions: Intl.NumberFormatOptions = {
10
+ style: 'unit',
11
+ unitDisplay: 'narrow',
12
+ minimumFractionDigits: 0,
13
+ maximumFractionDigits: 1,
14
+ } as const;
15
+
16
+ const defaultByteFormatterOptions: Intl.NumberFormatOptions = {
17
+ style: 'unit',
18
+ unitDisplay: 'narrow',
19
+ minimumFractionDigits: 0,
20
+ maximumFractionDigits: 1,
21
+ } as const;
22
+
23
+ const timeFormatters = {
24
+ milli: new Intl.NumberFormat('en-US', {
25
+ ...defaultTimeFormatterOptions,
26
+ unit: 'millisecond',
27
+ }),
28
+ second: new Intl.NumberFormat('en-US', {
29
+ ...defaultTimeFormatterOptions,
30
+ unit: 'second',
31
+ }),
32
+ micro: new Intl.NumberFormat('en-US', {
33
+ ...defaultTimeFormatterOptions,
34
+ unit: 'microsecond',
35
+ }),
36
+ } as const;
37
+
38
+ const byteFormatters = {
39
+ bytes: new Intl.NumberFormat('en-US', {
40
+ ...defaultByteFormatterOptions,
41
+ // Don't need as much precision on bytes.
42
+ minimumFractionDigits: 0,
43
+ maximumFractionDigits: 0,
44
+ unit: 'byte',
45
+ }),
46
+ kilobytes: new Intl.NumberFormat('en-US', {
47
+ ...defaultByteFormatterOptions,
48
+ unit: 'kilobyte',
49
+ }),
50
+ megabytes: new Intl.NumberFormat('en-US', {
51
+ ...defaultByteFormatterOptions,
52
+ unit: 'megabyte',
53
+ }),
54
+ } as const;
55
+
56
+ function numberIsTooLarge(x: number): boolean {
57
+ return !Number.isFinite(x) || x === Number.MAX_VALUE;
58
+ }
59
+
60
+ export function seconds(x: number): string {
61
+ if (numberIsTooLarge(x)) {
62
+ return '-';
63
+ }
64
+ if (x === 0) {
65
+ return formatAndEnsureSpace(timeFormatters.second, x);
66
+ }
67
+
68
+ const asMilli = x * 1_000;
69
+
70
+ if (asMilli < 1) {
71
+ return micros(x * 1_000_000);
72
+ }
73
+
74
+ if (asMilli < 1_000) {
75
+ return millis(asMilli);
76
+ }
77
+ return formatAndEnsureSpace(timeFormatters.second, x);
78
+ }
79
+
80
+ export function millis(x: number): string {
81
+ if (numberIsTooLarge(x)) {
82
+ return '-';
83
+ }
84
+ return formatAndEnsureSpace(timeFormatters.milli, x);
85
+ }
86
+
87
+ export function micros(x: number): string {
88
+ if (numberIsTooLarge(x)) {
89
+ return '-';
90
+ }
91
+
92
+ if (x < 100) {
93
+ return formatAndEnsureSpace(timeFormatters.micro, x);
94
+ }
95
+
96
+ const asMilli = x / 1_000;
97
+ return millis(asMilli);
98
+ }
99
+
100
+ export function bytes(x: number): string {
101
+ if (x < 1_000) {
102
+ return formatAndEnsureSpace(byteFormatters.bytes, x);
103
+ }
104
+ const kilobytes = x / 1_000;
105
+ if (kilobytes < 1_000) {
106
+ return formatAndEnsureSpace(byteFormatters.kilobytes, kilobytes);
107
+ }
108
+
109
+ const megabytes = kilobytes / 1_000;
110
+ return formatAndEnsureSpace(byteFormatters.megabytes, megabytes);
111
+ }
112
+
113
+ /**
114
+ * When using 'narrow' unitDisplay, many locales exclude the space between the literal and the unit.
115
+ * We don't like that, so when there is no space literal we inject the provided separator manually.
116
+ */
117
+ function formatAndEnsureSpace(formatter: Intl.NumberFormat, value: number, separator = '\xA0'): string {
118
+ const parts = formatter.formatToParts(value);
119
+
120
+ let hasSpace = false;
121
+ for (const part of parts) {
122
+ if (part.type === 'literal') {
123
+ if (part.value === ' ') {
124
+ hasSpace = true;
125
+ part.value = separator;
126
+ } else if (part.value === separator) {
127
+ hasSpace = true;
128
+ }
129
+ }
130
+ }
131
+
132
+ if (hasSpace) {
133
+ return parts.map(part => part.value).join('');
134
+ }
135
+
136
+ const unitIndex = parts.findIndex(part => part.type === 'unit');
137
+
138
+ // Unexpected for there to be no unit, but just in case, handle that.
139
+ if (unitIndex === -1) {
140
+ return parts.map(part => part.value).join('');
141
+ }
142
+
143
+ // For locales where the unit comes first (sw), the space has to come after the unit.
144
+ if (unitIndex === 0) {
145
+ return parts[0].value + separator + parts.slice(1).map(part => part.value).join('');
146
+ }
147
+
148
+ // Otherwise, it comes before.
149
+ return parts.slice(0, unitIndex).map(part => part.value).join('') + separator +
150
+ parts.slice(unitIndex).map(part => part.value).join('');
151
+ }
@@ -0,0 +1,21 @@
1
+ // Copyright 2025 The Chromium Authors
2
+ // Use of this source code is governed by a BSD-style license that can be
3
+ // found in the LICENSE file.
4
+
5
+ import {Badge, type BadgeAction} from './Badge.js';
6
+
7
+ const AI_EXPLORER_BADGE_URI = new URL('../../Images/ai-explorer-badge.svg', import.meta.url).toString();
8
+ export class AiExplorerBadge extends Badge {
9
+ override readonly name =
10
+ 'profiles/me/awards/developers.google.com%2Fprofile%2Fbadges%2Factivity%2Fchrome-devtools%2Fai-explorer';
11
+ override readonly title = 'AI Explorer';
12
+ override readonly imageUri = AI_EXPLORER_BADGE_URI;
13
+
14
+ override readonly interestedActions = [
15
+ // TODO(ergunsh): Instrument related actions.
16
+ ] as const;
17
+
18
+ handleAction(_action: BadgeAction): void {
19
+ this.trigger();
20
+ }
21
+ }
@@ -5,30 +5,35 @@
5
5
  import * as Common from '../../core/common/common.js';
6
6
 
7
7
  export enum BadgeAction {
8
+ GDP_SIGN_UP_COMPLETE = 'gdp-sign-up-complete',
8
9
  CSS_RULE_MODIFIED = 'css-rule-modified',
10
+ DOM_ELEMENT_OR_ATTRIBUTE_EDITED = 'dom-element-or-attribute-edited',
11
+ MODERN_DOM_BADGE_CLICKED = 'modern-dom-badge-clicked',
12
+ // TODO(ergunsh): Instrument performance insight clicks.
9
13
  PERFORMANCE_INSIGHT_CLICKED = 'performance-insight-clicked',
10
14
  }
11
15
 
12
16
  export type BadgeActionEvents = Record<BadgeAction, void>;
13
17
 
14
18
  export interface BadgeContext {
15
- dispatchBadgeTriggeredEvent: (badge: Badge) => void;
19
+ onTriggerBadge: (badge: Badge) => void;
16
20
  badgeActionEventTarget: Common.ObjectWrapper.ObjectWrapper<BadgeActionEvents>;
17
21
  }
18
22
 
19
23
  export abstract class Badge {
20
- #dispatchBadgeTriggeredEvent: (badge: Badge) => void;
24
+ #onTriggerBadge: (badge: Badge) => void;
21
25
  #badgeActionEventTarget: Common.ObjectWrapper.ObjectWrapper<BadgeActionEvents>;
22
26
  #eventListeners: Common.EventTarget.EventDescriptor[] = [];
23
27
  #triggeredBefore = false;
24
28
 
25
29
  abstract readonly name: string;
26
30
  abstract readonly title: string;
31
+ abstract readonly imageUri: string;
27
32
  abstract readonly interestedActions: readonly BadgeAction[];
28
33
  readonly isStarterBadge: boolean = false;
29
34
 
30
35
  constructor(context: BadgeContext) {
31
- this.#dispatchBadgeTriggeredEvent = context.dispatchBadgeTriggeredEvent;
36
+ this.#onTriggerBadge = context.onTriggerBadge;
32
37
  this.#badgeActionEventTarget = context.badgeActionEventTarget;
33
38
  }
34
39
 
@@ -40,15 +45,10 @@ export abstract class Badge {
40
45
 
41
46
  this.#triggeredBefore = true;
42
47
  this.deactivate();
43
- this.#dispatchBadgeTriggeredEvent(this);
48
+ this.#onTriggerBadge(this);
44
49
  }
45
50
 
46
51
  activate(): void {
47
- // We don't reactivate a badge that's triggered before.
48
- if (this.#triggeredBefore) {
49
- return;
50
- }
51
-
52
52
  // The event listeners are already registered, we don't re-register them.
53
53
  if (this.#eventListeners.length > 0) {
54
54
  return;
@@ -67,5 +67,6 @@ export abstract class Badge {
67
67
 
68
68
  Common.EventTarget.removeEventListeners(this.#eventListeners);
69
69
  this.#eventListeners = [];
70
+ this.#triggeredBefore = false;
70
71
  }
71
72
  }
@@ -0,0 +1,21 @@
1
+ // Copyright 2025 The Chromium Authors
2
+ // Use of this source code is governed by a BSD-style license that can be
3
+ // found in the LICENSE file.
4
+
5
+ import {Badge, type BadgeAction} from './Badge.js';
6
+
7
+ const CODE_WHISPERER_BADGE_IMAGE_URI = new URL('../../Images/code-whisperer-badge.svg', import.meta.url).toString();
8
+ export class CodeWhispererBadge extends Badge {
9
+ override readonly name =
10
+ 'profiles/me/awards/developers.google.com%2Fprofile%2Fbadges%2Factivity%2Fchrome-devtools%2Fcode-whisperer';
11
+ override readonly title = 'Code Whisperer';
12
+ override readonly imageUri = CODE_WHISPERER_BADGE_IMAGE_URI;
13
+
14
+ override readonly interestedActions = [
15
+ // TODO(ergunsh): Instrument related actions.
16
+ ] as const;
17
+
18
+ handleAction(_action: BadgeAction): void {
19
+ this.trigger();
20
+ }
21
+ }
@@ -0,0 +1,21 @@
1
+ // Copyright 2025 The Chromium Authors
2
+ // Use of this source code is governed by a BSD-style license that can be
3
+ // found in the LICENSE file.
4
+
5
+ import {Badge, BadgeAction} from './Badge.js';
6
+
7
+ const DOM_DETECTIVE_BADGE_IMAGE_URI = new URL('../../Images/dom-detective-badge.svg', import.meta.url).toString();
8
+ export class DOMDetectiveBadge extends Badge {
9
+ override readonly name =
10
+ 'profiles/me/awards/developers.google.com%2Fprofile%2Fbadges%2Factivity%2Fchrome-devtools%2Fdom-detective';
11
+ override readonly title = 'DOM Detective';
12
+ override readonly imageUri = DOM_DETECTIVE_BADGE_IMAGE_URI;
13
+
14
+ override readonly interestedActions = [
15
+ BadgeAction.MODERN_DOM_BADGE_CLICKED,
16
+ ] as const;
17
+
18
+ handleAction(_action: BadgeAction): void {
19
+ this.trigger();
20
+ }
21
+ }
@@ -4,10 +4,15 @@
4
4
 
5
5
  import {Badge, BadgeAction} from './Badge.js';
6
6
 
7
+ const SPEEDSTER_BADGE_URI = new URL('../../Images/speedster-badge.svg', import.meta.url).toString();
7
8
  export class SpeedsterBadge extends Badge {
8
- override readonly name = 'awards/speedster';
9
+ override readonly name =
10
+ 'profiles/me/awards/developers.google.com%2Fprofile%2Fbadges%2Factivity%2Fchrome-devtools%2Fspeedster';
9
11
  override readonly title = 'Speedster';
10
- override readonly interestedActions = [BadgeAction.PERFORMANCE_INSIGHT_CLICKED] as const;
12
+ override readonly interestedActions = [
13
+ BadgeAction.PERFORMANCE_INSIGHT_CLICKED,
14
+ ] as const;
15
+ override readonly imageUri = SPEEDSTER_BADGE_URI;
11
16
 
12
17
  handleAction(_action: BadgeAction): void {
13
18
  this.trigger();
@@ -4,14 +4,19 @@
4
4
 
5
5
  import {Badge, BadgeAction} from './Badge.js';
6
6
 
7
+ const STARTER_BADGE_IMAGE_URI = new URL('../../Images/devtools-user-badge.svg', import.meta.url).toString();
7
8
  export class StarterBadge extends Badge {
8
9
  override readonly isStarterBadge = true;
9
- override readonly name = 'awards/chrome-devtools-user';
10
+ override readonly name =
11
+ 'profiles/me/awards/developers.google.com%2Fprofile%2Fbadges%2Factivity%2Fchrome-devtools%2Fchrome-devtools-user';
10
12
  override readonly title = 'Chrome DevTools User';
13
+ override readonly imageUri = STARTER_BADGE_IMAGE_URI;
11
14
 
12
15
  // TODO(ergunsh): Add remaining non-trivial event definitions
13
16
  override readonly interestedActions = [
17
+ BadgeAction.GDP_SIGN_UP_COMPLETE,
14
18
  BadgeAction.CSS_RULE_MODIFIED,
19
+ BadgeAction.DOM_ELEMENT_OR_ATTRIBUTE_EDITED,
15
20
  ] as const;
16
21
 
17
22
  handleAction(_action: BadgeAction): void {
@@ -5,7 +5,10 @@
5
5
  import * as Common from '../../core/common/common.js';
6
6
  import * as Host from '../../core/host/host.js';
7
7
 
8
+ import {AiExplorerBadge} from './AiExplorerBadge.js';
8
9
  import type {Badge, BadgeAction, BadgeActionEvents, BadgeContext} from './Badge.js';
10
+ import {CodeWhispererBadge} from './CodeWhispererBadge.js';
11
+ import {DOMDetectiveBadge} from './DOMDetectiveBadge.js';
9
12
  import {SpeedsterBadge} from './SpeedsterBadge.js';
10
13
  import {StarterBadge} from './StarterBadge.js';
11
14
 
@@ -23,12 +26,15 @@ let userBadgesInstance: UserBadges|undefined = undefined;
23
26
  export class UserBadges extends Common.ObjectWrapper.ObjectWrapper<EventTypes> {
24
27
  readonly #badgeActionEventTarget = new Common.ObjectWrapper.ObjectWrapper<BadgeActionEvents>();
25
28
 
26
- #receiveBadgesSetting?: Common.Settings.Setting<Boolean>;
29
+ #receiveBadgesSetting: Common.Settings.Setting<Boolean>;
27
30
  #allBadges: Badge[];
28
31
 
29
32
  static readonly BADGE_REGISTRY: BadgeClass[] = [
30
33
  StarterBadge,
31
34
  SpeedsterBadge,
35
+ DOMDetectiveBadge,
36
+ CodeWhispererBadge,
37
+ AiExplorerBadge,
32
38
  ];
33
39
 
34
40
  private constructor() {
@@ -37,11 +43,10 @@ export class UserBadges extends Common.ObjectWrapper.ObjectWrapper<EventTypes> {
37
43
  this.#receiveBadgesSetting = Common.Settings.Settings.instance().moduleSetting('receive-gdp-badges');
38
44
  this.#receiveBadgesSetting.addChangeListener(this.#reconcileBadges, this);
39
45
 
40
- this.#allBadges =
41
- UserBadges.BADGE_REGISTRY.map(badgeCtor => new badgeCtor({
42
- dispatchBadgeTriggeredEvent: this.#dispatchBadgeTriggeredEvent.bind(this),
43
- badgeActionEventTarget: this.#badgeActionEventTarget,
44
- }));
46
+ this.#allBadges = UserBadges.BADGE_REGISTRY.map(badgeCtor => new badgeCtor({
47
+ onTriggerBadge: this.#onTriggerBadge.bind(this),
48
+ badgeActionEventTarget: this.#badgeActionEventTarget,
49
+ }));
45
50
  }
46
51
 
47
52
  static instance({forceNew}: {forceNew: boolean} = {forceNew: false}): UserBadges {
@@ -65,7 +70,28 @@ export class UserBadges extends Common.ObjectWrapper.ObjectWrapper<EventTypes> {
65
70
  this.#badgeActionEventTarget.dispatchEventToListeners(action);
66
71
  }
67
72
 
68
- #dispatchBadgeTriggeredEvent(badge: Badge): void {
73
+ async #onTriggerBadge(badge: Badge): Promise<void> {
74
+ let shouldAwardBadge = false;
75
+ // By default, we award non-starter badges directly when they are triggered.
76
+ if (!badge.isStarterBadge) {
77
+ shouldAwardBadge = true;
78
+ } else {
79
+ const gdpProfile = await Host.GdpClient.GdpClient.instance().getProfile();
80
+ const receiveBadgesSettingEnabled = Boolean(this.#receiveBadgesSetting.get());
81
+ // If there is a GDP profile and the user has enabled receiving badges, we award the starter badge as well.
82
+ if (gdpProfile && receiveBadgesSettingEnabled) {
83
+ shouldAwardBadge = true;
84
+ }
85
+ }
86
+
87
+ // Awarding was needed and not successful, we don't show the notification
88
+ if (shouldAwardBadge) {
89
+ const result = await Host.GdpClient.GdpClient.instance().createAward({name: badge.name});
90
+ if (!result) {
91
+ return;
92
+ }
93
+ }
94
+
69
95
  this.dispatchEventToListeners(Events.BADGE_TRIGGERED, badge);
70
96
  }
71
97
 
@@ -76,7 +102,6 @@ export class UserBadges extends Common.ObjectWrapper.ObjectWrapper<EventTypes> {
76
102
  }
77
103
 
78
104
  // TODO(ergunsh): Implement starter badge dismissal, snooze count & timestamp checks.
79
- // TODO(ergunsh): Implement checking for previously awarded badges.
80
105
  async #reconcileBadges(): Promise<void> {
81
106
  const syncInfo = await new Promise<Host.InspectorFrontendHostAPI.SyncInformation>(
82
107
  resolve => Host.InspectorFrontendHost.InspectorFrontendHostInstance.getSyncInformation(resolve));
@@ -98,8 +123,31 @@ export class UserBadges extends Common.ObjectWrapper.ObjectWrapper<EventTypes> {
98
123
  return;
99
124
  }
100
125
 
101
- const receiveBadgesSettingEnabled = Boolean(this.#receiveBadgesSetting?.get());
126
+ let awardedBadgeNames: Set<string>|null = null;
127
+ if (gdpProfile) {
128
+ awardedBadgeNames = await Host.GdpClient.GdpClient.instance().getAwardedBadgeNames(
129
+ {names: this.#allBadges.map(badge => badge.name)});
130
+ // This is a conservative approach. We bail out if `awardedBadgeNames` is null
131
+ // when there is a profile to prevent a negative user experience.
132
+ //
133
+ // A failure here (e.g., from a typo in a badge name) could cause us to
134
+ // re-trigger the "Receive badges" nudge for a user who has already earned the
135
+ // starter badge and opted out of receiving badges.
136
+ //
137
+ // The trade-off is, we silently failing to enable badge mechanism rather than annoying the user.
138
+ if (!awardedBadgeNames) {
139
+ this.#deactivateAllBadges();
140
+ return;
141
+ }
142
+ }
143
+
144
+ const receiveBadgesSettingEnabled = Boolean(this.#receiveBadgesSetting.get());
102
145
  for (const badge of this.#allBadges) {
146
+ if (awardedBadgeNames?.has(badge.name)) {
147
+ badge.deactivate();
148
+ continue;
149
+ }
150
+
103
151
  const shouldActivateStarterBadge = badge.isStarterBadge && isEligibleToCreateProfile;
104
152
  const shouldActivateActivityBasedBadge =
105
153
  !badge.isStarterBadge && Boolean(gdpProfile) && receiveBadgesSettingEnabled;
@@ -115,4 +163,8 @@ export class UserBadges extends Common.ObjectWrapper.ObjectWrapper<EventTypes> {
115
163
 
116
164
  reconcileBadgesFinishedForTest(): void {
117
165
  }
166
+
167
+ isReceiveBadgesSettingEnabled(): boolean {
168
+ return Boolean(this.#receiveBadgesSetting.get());
169
+ }
118
170
  }
@@ -283,7 +283,7 @@ export class LiveLocation extends LiveLocationWithPool {
283
283
  readonly #lineNumber: number;
284
284
  readonly #columnNumber: number;
285
285
  readonly #info: ModelInfo;
286
- headerInternal: SDK.CSSStyleSheetHeader.CSSStyleSheetHeader|null;
286
+ #header: SDK.CSSStyleSheetHeader.CSSStyleSheetHeader|null;
287
287
  constructor(
288
288
  rawLocation: SDK.CSSModel.CSSLocation, info: ModelInfo,
289
289
  updateDelegate: (arg0: LiveLocationInterface) => Promise<void>, locationPool: LiveLocationPool) {
@@ -292,22 +292,22 @@ export class LiveLocation extends LiveLocationWithPool {
292
292
  this.#lineNumber = rawLocation.lineNumber;
293
293
  this.#columnNumber = rawLocation.columnNumber;
294
294
  this.#info = info;
295
- this.headerInternal = null;
295
+ this.#header = null;
296
296
  }
297
297
 
298
298
  header(): SDK.CSSStyleSheetHeader.CSSStyleSheetHeader|null {
299
- return this.headerInternal;
299
+ return this.#header;
300
300
  }
301
301
 
302
302
  setHeader(header: SDK.CSSStyleSheetHeader.CSSStyleSheetHeader|null): void {
303
- this.headerInternal = header;
303
+ this.#header = header;
304
304
  }
305
305
 
306
306
  override async uiLocation(): Promise<Workspace.UISourceCode.UILocation|null> {
307
- if (!this.headerInternal) {
307
+ if (!this.#header) {
308
308
  return null;
309
309
  }
310
- const rawLocation = new SDK.CSSModel.CSSLocation(this.headerInternal, this.#lineNumber, this.#columnNumber);
310
+ const rawLocation = new SDK.CSSModel.CSSLocation(this.#header, this.#lineNumber, this.#columnNumber);
311
311
  return CSSWorkspaceBinding.instance().rawLocationToUILocation(rawLocation);
312
312
  }
313
313
 
@@ -221,30 +221,30 @@ class SourceScopeRemoteObject extends SDK.RemoteObject.RemoteObjectImpl {
221
221
  }
222
222
 
223
223
  export class SourceScope implements SDK.DebuggerModel.ScopeChainEntry {
224
- readonly #callFrameInternal: SDK.DebuggerModel.CallFrame;
225
- readonly #typeInternal: string;
226
- readonly #typeNameInternal: string;
227
- readonly #iconInternal: string|undefined;
228
- readonly #objectInternal: SourceScopeRemoteObject;
224
+ readonly #callFrame: SDK.DebuggerModel.CallFrame;
225
+ readonly #type: string;
226
+ readonly #typeName: string;
227
+ readonly #icon: string|undefined;
228
+ readonly #object: SourceScopeRemoteObject;
229
229
  constructor(
230
230
  callFrame: SDK.DebuggerModel.CallFrame, stopId: StopId, type: string, typeName: string, icon: string|undefined,
231
231
  plugin: DebuggerLanguagePlugin) {
232
232
  if (icon && new URL(icon).protocol !== 'data:') {
233
233
  throw new Error('The icon must be a data:-URL');
234
234
  }
235
- this.#callFrameInternal = callFrame;
236
- this.#typeInternal = type;
237
- this.#typeNameInternal = typeName;
238
- this.#iconInternal = icon;
239
- this.#objectInternal = new SourceScopeRemoteObject(callFrame, stopId, plugin);
235
+ this.#callFrame = callFrame;
236
+ this.#type = type;
237
+ this.#typeName = typeName;
238
+ this.#icon = icon;
239
+ this.#object = new SourceScopeRemoteObject(callFrame, stopId, plugin);
240
240
  }
241
241
 
242
242
  async getVariableValue(name: string): Promise<SDK.RemoteObject.RemoteObject|null> {
243
- for (let v = 0; v < this.#objectInternal.variables.length; ++v) {
244
- if (this.#objectInternal.variables[v].name !== name) {
243
+ for (let v = 0; v < this.#object.variables.length; ++v) {
244
+ if (this.#object.variables[v].name !== name) {
245
245
  continue;
246
246
  }
247
- const properties = await this.#objectInternal.getAllProperties(false, false);
247
+ const properties = await this.#object.getAllProperties(false, false);
248
248
  if (!properties.properties) {
249
249
  continue;
250
250
  }
@@ -257,15 +257,15 @@ export class SourceScope implements SDK.DebuggerModel.ScopeChainEntry {
257
257
  }
258
258
 
259
259
  callFrame(): SDK.DebuggerModel.CallFrame {
260
- return this.#callFrameInternal;
260
+ return this.#callFrame;
261
261
  }
262
262
 
263
263
  type(): string {
264
- return this.#typeInternal;
264
+ return this.#type;
265
265
  }
266
266
 
267
267
  typeName(): string {
268
- return this.#typeNameInternal;
268
+ return this.#typeName;
269
269
  }
270
270
 
271
271
  name(): string|undefined {
@@ -277,7 +277,7 @@ export class SourceScope implements SDK.DebuggerModel.ScopeChainEntry {
277
277
  }
278
278
 
279
279
  object(): SourceScopeRemoteObject {
280
- return this.#objectInternal;
280
+ return this.#object;
281
281
  }
282
282
 
283
283
  description(): string {
@@ -285,7 +285,7 @@ export class SourceScope implements SDK.DebuggerModel.ScopeChainEntry {
285
285
  }
286
286
 
287
287
  icon(): string|undefined {
288
- return this.#iconInternal;
288
+ return this.#icon;
289
289
  }
290
290
 
291
291
  extraProperties(): SDK.RemoteObject.RemoteObjectProperty[] {
@@ -47,27 +47,27 @@ export interface ChunkedReader {
47
47
 
48
48
  export class ChunkedFileReader implements ChunkedReader {
49
49
  #file: File|null;
50
- readonly #fileSizeInternal: number;
51
- #loadedSizeInternal: number;
50
+ readonly #fileSize: number;
51
+ #loadedSize: number;
52
52
  #streamReader: ReadableStreamDefaultReader<Uint8Array<ArrayBuffer>>|null;
53
53
  readonly #chunkSize: number;
54
54
  readonly #chunkTransferredCallback: ((arg0: ChunkedReader) => void)|undefined;
55
55
  readonly #decoder: TextDecoder;
56
56
  #isCanceled: boolean;
57
- #errorInternal: DOMException|null;
57
+ #error: DOMException|null;
58
58
  #transferFinished!: (arg0: boolean) => void;
59
59
  #output?: Common.StringOutputStream.OutputStream;
60
60
  #reader?: FileReader|null;
61
61
 
62
62
  constructor(file: File, chunkSize?: number, chunkTransferredCallback?: ((arg0: ChunkedReader) => void)) {
63
63
  this.#file = file;
64
- this.#fileSizeInternal = file.size;
65
- this.#loadedSizeInternal = 0;
64
+ this.#fileSize = file.size;
65
+ this.#loadedSize = 0;
66
66
  this.#chunkSize = (chunkSize) ? chunkSize : Number.MAX_VALUE;
67
67
  this.#chunkTransferredCallback = chunkTransferredCallback;
68
68
  this.#decoder = new TextDecoder();
69
69
  this.#isCanceled = false;
70
- this.#errorInternal = null;
70
+ this.#error = null;
71
71
  this.#streamReader = null;
72
72
  }
73
73
 
@@ -99,11 +99,11 @@ export class ChunkedFileReader implements ChunkedReader {
99
99
  }
100
100
 
101
101
  loadedSize(): number {
102
- return this.#loadedSizeInternal;
102
+ return this.#loadedSize;
103
103
  }
104
104
 
105
105
  fileSize(): number {
106
- return this.#fileSizeInternal;
106
+ return this.#fileSize;
107
107
  }
108
108
 
109
109
  fileName(): string {
@@ -114,7 +114,7 @@ export class ChunkedFileReader implements ChunkedReader {
114
114
  }
115
115
 
116
116
  error(): DOMException|null {
117
- return this.#errorInternal;
117
+ return this.#error;
118
118
  }
119
119
 
120
120
  private onChunkLoaded(event: Event): void {
@@ -132,8 +132,8 @@ export class ChunkedFileReader implements ChunkedReader {
132
132
  }
133
133
 
134
134
  const buffer = (this.#reader.result as ArrayBuffer);
135
- this.#loadedSizeInternal += buffer.byteLength;
136
- const endOfFile = this.#loadedSizeInternal === this.#fileSizeInternal;
135
+ this.#loadedSize += buffer.byteLength;
136
+ const endOfFile = this.#loadedSize === this.#fileSize;
137
137
  void this.decodeChunkBuffer(buffer, endOfFile);
138
138
  }
139
139
 
@@ -164,7 +164,7 @@ export class ChunkedFileReader implements ChunkedReader {
164
164
  this.#file = null;
165
165
  this.#reader = null;
166
166
  await this.#output.close();
167
- this.#transferFinished(!this.#errorInternal);
167
+ this.#transferFinished(!this.#error);
168
168
  }
169
169
 
170
170
  private async loadChunk(): Promise<void> {
@@ -181,8 +181,8 @@ export class ChunkedFileReader implements ChunkedReader {
181
181
  void this.decodeChunkBuffer(value.buffer, false);
182
182
  }
183
183
  if (this.#reader) {
184
- const chunkStart = this.#loadedSizeInternal;
185
- const chunkEnd = Math.min(this.#fileSizeInternal, chunkStart + this.#chunkSize);
184
+ const chunkStart = this.#loadedSize;
185
+ const chunkEnd = Math.min(this.#fileSize, chunkStart + this.#chunkSize);
186
186
  const nextPart = this.#file.slice(chunkStart, chunkEnd);
187
187
  this.#reader.readAsArrayBuffer(nextPart);
188
188
  }
@@ -190,7 +190,7 @@ export class ChunkedFileReader implements ChunkedReader {
190
190
 
191
191
  private onError(event: Event): void {
192
192
  const eventTarget = (event.target as FileReader);
193
- this.#errorInternal = eventTarget.error;
193
+ this.#error = eventTarget.error;
194
194
  this.#transferFinished(false);
195
195
  }
196
196
  }