chrome-devtools-frontend 1.0.1572937 → 1.0.1574367

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 (145) hide show
  1. package/front_end/Images/src/account-tree.svg +10 -1
  2. package/front_end/Images/src/arrow-right-circle.svg +2 -7
  3. package/front_end/Images/src/center-focus-weak.svg +3 -1
  4. package/front_end/Images/src/dog-paw.svg +10 -3
  5. package/front_end/Images/src/group.svg +3 -1
  6. package/front_end/Images/src/home.svg +3 -1
  7. package/front_end/Images/src/spark-info.svg +3 -3
  8. package/front_end/Images/src/spark.svg +2 -9
  9. package/front_end/core/sdk/AnimationModel.ts +0 -6
  10. package/front_end/core/sdk/IsolateManager.ts +0 -7
  11. package/front_end/devtools_compatibility.js +16 -1
  12. package/front_end/entrypoints/main/GlobalAiButton.ts +18 -3
  13. package/front_end/generated/InspectorBackendCommands.ts +6 -4
  14. package/front_end/generated/SupportedCSSProperties.js +17 -4
  15. package/front_end/generated/protocol-mapping.d.ts +2 -0
  16. package/front_end/generated/protocol-proxy-api.d.ts +2 -0
  17. package/front_end/generated/protocol.ts +37 -7
  18. package/front_end/models/ai_assistance/AiUtils.ts +8 -0
  19. package/front_end/models/ai_assistance/agents/StylingAgent.snapshot.txt +7 -7
  20. package/front_end/models/ai_assistance/agents/StylingAgent.ts +4 -4
  21. package/front_end/models/issues_manager/CorsIssue.ts +4 -44
  22. package/front_end/models/logs/NetworkLog.ts +0 -9
  23. package/front_end/panels/ai_assistance/PatchWidget.ts +5 -5
  24. package/front_end/panels/ai_assistance/SelectWorkspaceDialog.ts +1 -1
  25. package/front_end/panels/ai_assistance/ai_assistance-meta.ts +34 -13
  26. package/front_end/panels/ai_assistance/components/ChatMessage.ts +3 -1
  27. package/front_end/panels/ai_assistance/components/ChatView.ts +20 -3
  28. package/front_end/panels/ai_assistance/components/chatView.css +20 -0
  29. package/front_end/panels/application/AppManifestView.ts +5 -5
  30. package/front_end/panels/application/DeviceBoundSessionsModel.ts +32 -3
  31. package/front_end/panels/application/DeviceBoundSessionsTreeElement.ts +31 -9
  32. package/front_end/panels/application/FrameDetailsView.ts +3 -4
  33. package/front_end/panels/application/components/BounceTrackingMitigationsView.ts +1 -1
  34. package/front_end/panels/application/components/ProtocolHandlersView.ts +2 -2
  35. package/front_end/panels/application/components/ReportsGrid.ts +2 -2
  36. package/front_end/panels/application/preloading/PreloadingView.ts +2 -2
  37. package/front_end/panels/application/preloading/components/UsedPreloadingView.ts +2 -2
  38. package/front_end/panels/autofill/AutofillView.ts +3 -3
  39. package/front_end/panels/common/AiCodeCompletionSummaryToolbar.ts +1 -1
  40. package/front_end/panels/common/AiCodeCompletionTeaser.ts +4 -2
  41. package/front_end/panels/common/AiCodeGenerationUpgradeDialog.ts +2 -2
  42. package/front_end/panels/common/BadgeNotification.ts +3 -2
  43. package/front_end/panels/common/GdpSignUpDialog.ts +3 -3
  44. package/front_end/panels/common/GeminiRebrandPromoDialog.ts +1 -1
  45. package/front_end/panels/console/ConsoleInsightTeaser.ts +5 -4
  46. package/front_end/panels/elements/ElementsTreeElement.ts +3 -1
  47. package/front_end/panels/explain/components/ConsoleInsight.ts +7 -7
  48. package/front_end/panels/issues/CorsIssueDetailsView.ts +0 -46
  49. package/front_end/panels/issues/IssueView.ts +1 -1
  50. package/front_end/panels/network/NetworkDataGridNode.ts +3 -1
  51. package/front_end/panels/network/RequestConditionsDrawer.ts +4 -4
  52. package/front_end/panels/network/RequestTimingView.ts +1 -1
  53. package/front_end/panels/network/components/RequestHeadersView.ts +2 -2
  54. package/front_end/panels/profiler/HeapDetachedElementsView.ts +0 -5
  55. package/front_end/panels/profiler/HeapProfileView.ts +0 -6
  56. package/front_end/panels/profiler/HeapSnapshotView.ts +0 -14
  57. package/front_end/panels/profiler/IsolateSelector.ts +1 -2
  58. package/front_end/panels/recorder/RecorderController.ts +2 -2
  59. package/front_end/panels/security/CookieReportView.ts +6 -6
  60. package/front_end/panels/settings/AISettingsTab.ts +1 -1
  61. package/front_end/panels/settings/components/SyncSection.ts +1 -1
  62. package/front_end/panels/settings/emulation/components/UserAgentClientHintsForm.ts +1 -1
  63. package/front_end/panels/sources/BreakpointEditDialog.ts +1 -1
  64. package/front_end/panels/sources/NavigatorView.ts +3 -1
  65. package/front_end/panels/timeline/components/insights/BaseInsightComponent.ts +2 -1
  66. package/front_end/panels/whats_new/ReleaseNoteView.ts +1 -1
  67. package/front_end/third_party/chromium/README.chromium +1 -1
  68. package/front_end/third_party/puppeteer/README.chromium +2 -2
  69. package/front_end/third_party/puppeteer/package/README.md +5 -0
  70. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/HTTPResponse.d.ts +6 -1
  71. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/HTTPResponse.d.ts.map +1 -1
  72. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/HTTPResponse.js +5 -1
  73. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/HTTPResponse.js.map +1 -1
  74. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.d.ts +3 -0
  75. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.d.ts.map +1 -1
  76. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.js +53 -55
  77. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.js.map +1 -1
  78. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.d.ts +2 -0
  79. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.d.ts.map +1 -1
  80. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.js +25 -0
  81. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.js.map +1 -1
  82. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Accessibility.d.ts +7 -1
  83. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Accessibility.d.ts.map +1 -1
  84. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Accessibility.js +3 -0
  85. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Accessibility.js.map +1 -1
  86. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserContext.d.ts.map +1 -1
  87. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserContext.js +2 -0
  88. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserContext.js.map +1 -1
  89. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.d.ts.map +1 -1
  90. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.js +2 -0
  91. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.js.map +1 -1
  92. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/injected/injected.d.ts +1 -1
  93. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.d.ts +3 -3
  94. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js +3 -3
  95. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js.map +1 -1
  96. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/Mutex.d.ts +2 -2
  97. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/version.d.ts +1 -1
  98. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/version.js +1 -1
  99. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.d.ts +7 -1
  100. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.js +21 -8
  101. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/HTTPResponse.d.ts +6 -1
  102. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/HTTPResponse.d.ts.map +1 -1
  103. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/HTTPResponse.js +5 -1
  104. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/HTTPResponse.js.map +1 -1
  105. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.d.ts +3 -0
  106. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.d.ts.map +1 -1
  107. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.js +54 -56
  108. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.js.map +1 -1
  109. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.d.ts +2 -0
  110. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.d.ts.map +1 -1
  111. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.js +25 -0
  112. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.js.map +1 -1
  113. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Accessibility.d.ts +7 -1
  114. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Accessibility.d.ts.map +1 -1
  115. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Accessibility.js +3 -0
  116. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Accessibility.js.map +1 -1
  117. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserContext.d.ts.map +1 -1
  118. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserContext.js +2 -0
  119. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserContext.js.map +1 -1
  120. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.d.ts.map +1 -1
  121. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.js +2 -0
  122. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.js.map +1 -1
  123. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.d.ts +3 -3
  124. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js +3 -3
  125. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js.map +1 -1
  126. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/version.d.ts +1 -1
  127. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/version.js +1 -1
  128. package/front_end/third_party/puppeteer/package/lib/types.d.ts +7 -1
  129. package/front_end/third_party/puppeteer/package/package.json +5 -5
  130. package/front_end/third_party/puppeteer/package/src/api/HTTPResponse.ts +7 -2
  131. package/front_end/third_party/puppeteer/package/src/bidi/Page.ts +62 -71
  132. package/front_end/third_party/puppeteer/package/src/bidi/core/BrowsingContext.ts +29 -0
  133. package/front_end/third_party/puppeteer/package/src/cdp/Accessibility.ts +12 -1
  134. package/front_end/third_party/puppeteer/package/src/cdp/BrowserContext.ts +2 -0
  135. package/front_end/third_party/puppeteer/package/src/cdp/Page.ts +2 -0
  136. package/front_end/third_party/puppeteer/package/src/revisions.ts +3 -3
  137. package/front_end/third_party/puppeteer/package/src/util/version.ts +1 -1
  138. package/front_end/ui/components/buttons/Button.ts +26 -14
  139. package/front_end/ui/components/buttons/FloatingButton.ts +7 -3
  140. package/front_end/ui/components/buttons/floatingButton.css +44 -0
  141. package/front_end/ui/components/markdown_view/CodeBlock.ts +1 -1
  142. package/front_end/ui/components/panel_feedback/PanelFeedback.ts +1 -1
  143. package/front_end/ui/components/text_editor/AutocompleteHistory.ts +33 -1
  144. package/front_end/ui/visual_logging/KnownContextValues.ts +1 -0
  145. package/package.json +3 -2
@@ -120,8 +120,20 @@ export class RootTreeElement extends ApplicationPanelTreeElement {
120
120
  }
121
121
  }
122
122
 
123
- #updateTerminatedSessionDisplay(site: string, sessionId: string|undefined): void {
123
+ #updateElementIconAndStyling(
124
+ sessionElement: ApplicationPanelTreeElement, isSessionTerminated: boolean, sessionHasErrors: boolean): void {
125
+ if (isSessionTerminated) {
126
+ sessionElement.listItemElement.classList.add('device-bound-session-terminated');
127
+ sessionElement.setLeadingIcons([createIcon('database-off')]);
128
+ return;
129
+ }
130
+ sessionElement.listItemElement.classList.remove('device-bound-session-terminated');
131
+ sessionElement.setLeadingIcons([createIcon(sessionHasErrors ? 'warning' : 'database')]);
132
+ }
133
+
134
+ #updateIconAndStyling(site: string, sessionId: string|undefined): void {
124
135
  const isSessionTerminated = this.#model.isSessionTerminated(site, sessionId);
136
+ const sessionHasErrors = this.#model.sessionHasErrors(site, sessionId);
125
137
  const siteMapEntry = this.#sites.get(site);
126
138
  if (!siteMapEntry) {
127
139
  return;
@@ -130,12 +142,21 @@ export class RootTreeElement extends ApplicationPanelTreeElement {
130
142
  if (!sessionElement) {
131
143
  return;
132
144
  }
133
- if (isSessionTerminated) {
134
- sessionElement.listItemElement.classList.add('device-bound-session-terminated');
135
- sessionElement.setLeadingIcons([createIcon('database-off')]);
136
- } else {
137
- sessionElement.listItemElement.classList.remove('device-bound-session-terminated');
138
- sessionElement.setLeadingIcons([createIcon('database')]);
145
+ this.#updateElementIconAndStyling(sessionElement, isSessionTerminated, sessionHasErrors);
146
+ }
147
+
148
+ #removeWarningIcons(noLongerFailedSessions: Map<string, Array<string|undefined>>): void {
149
+ for (const [site, noLongerFailedSessionIds] of noLongerFailedSessions) {
150
+ const siteData = this.#sites.get(site);
151
+ if (siteData) {
152
+ for (const noLongerFailedSessionId of noLongerFailedSessionIds) {
153
+ const sessionElement = siteData.sessions.get(noLongerFailedSessionId);
154
+ if (sessionElement) {
155
+ const isSessionTerminated = this.#model.isSessionTerminated(site, noLongerFailedSessionId);
156
+ this.#updateElementIconAndStyling(sessionElement, isSessionTerminated, /* sessionHasErrors=*/ false);
157
+ }
158
+ }
159
+ }
139
160
  }
140
161
  }
141
162
 
@@ -231,12 +252,13 @@ export class RootTreeElement extends ApplicationPanelTreeElement {
231
252
  {data: {site, sessionId}}: Common.EventTarget
232
253
  .EventTargetEvent<DeviceBoundSessionModelEventTypes[DeviceBoundSessionModelEvents.EVENT_OCCURRED]>): void {
233
254
  this.#addSiteSessionIfMissing(site, sessionId);
234
- this.#updateTerminatedSessionDisplay(site, sessionId);
255
+ this.#updateIconAndStyling(site, sessionId);
235
256
  }
236
257
 
237
- #onClearEvents({data: {emptySessions, emptySites}}: Common.EventTarget
258
+ #onClearEvents({data: {emptySessions, emptySites, noLongerFailedSessions}}: Common.EventTarget
238
259
  .EventTargetEvent<DeviceBoundSessionModelEventTypes[DeviceBoundSessionModelEvents.CLEAR_EVENTS]>):
239
260
  void {
240
261
  this.#removeEmptyElements(emptySessions, emptySites);
262
+ this.#removeWarningIcons(noLongerFailedSessions);
241
263
  }
242
264
  }
@@ -324,7 +324,7 @@ function renderOriginTrial(trials: Protocol.Page.OriginTrial[]|null): LitTemplat
324
324
  <span class="report-section">
325
325
  ${i18nString(UIStrings.originTrialsExplanation)}
326
326
  <devtools-link href="https://developer.chrome.com/docs/web-platform/origin-trials/" class="link"
327
- .jslogContext=${'learn-more.origin-trials'}>
327
+ jslogcontext="learn-more.origin-trials">
328
328
  ${i18nString(UIStrings.learnMore)}
329
329
  </devtools-link>
330
330
  </span>
@@ -738,7 +738,7 @@ function renderApiAvailabilitySection(frame: SDK.ResourceTreeModel.ResourceTreeF
738
738
  ${i18nString(UIStrings.availabilityOfCertainApisDepends)}
739
739
  <devtools-link
740
740
  href="https://web.dev/why-coop-coep/" class="link"
741
- .jslogContext=${'learn-more.coop-coep'}>
741
+ jslogcontext="learn-more.coop-coep">
742
742
  ${i18nString(UIStrings.learnMore)}
743
743
  </devtools-link>
744
744
  </span>
@@ -815,8 +815,7 @@ function renderMeasureMemoryAvailability(frame: SDK.ResourceTreeModel.ResourceTr
815
815
  <devtools-report-key>${i18nString(UIStrings.measureMemory)}</devtools-report-key>
816
816
  <devtools-report-value>
817
817
  <span title=${tooltipText}>${
818
- availabilityText}</span>\xA0<devtools-link class="link" href="https://web.dev/monitor-total-page-memory-usage/" .jslogContext=${
819
- 'learn-more.monitor-memory-usage'}>${
818
+ availabilityText}</span>\xA0<devtools-link class="link" href="https://web.dev/monitor-total-page-memory-usage/" jslogcontext="learn-more.monitor-memory-usage">${
820
819
  i18nString(UIStrings.learnMore)}</devtools-link>
821
820
  </devtools-report-value>
822
821
  `;
@@ -159,7 +159,7 @@ const renderMainFrameInformation = (input: ViewInput): Lit.LitTemplate => {
159
159
  </devtools-report-divider>
160
160
  <devtools-report-section>
161
161
  <devtools-link href="https://privacycg.github.io/nav-tracking-mitigations/#bounce-tracking-mitigations" class="link"
162
- .jslogContext=${'learn-more'}>
162
+ jslogcontext="learn-more">
163
163
  ${i18nString(UIStrings.learnMore)}
164
164
  </devtools-link>
165
165
  </devtools-report-section>
@@ -82,7 +82,7 @@ function renderStatusMessage(
82
82
  name=${protocolHandlers.length > 0 ? 'check-circle' : 'info'}>
83
83
  </devtools-icon>
84
84
  ${uiI18n.getFormatLocalizedStringTemplate(str_, statusString, {PH1: html`
85
- <devtools-link href=${manifestLink} .jslogContext=${'manifest'}>${i18nString(UIStrings.manifest)}</devtools-link>
85
+ <devtools-link href=${manifestLink} jslogcontext="manifest">${i18nString(UIStrings.manifest)}</devtools-link>
86
86
  ` })}
87
87
  </div>`;
88
88
  // clang-format on
@@ -144,7 +144,7 @@ const DEFAULT_VIEW: View = (input, _output, target) => {
144
144
  ${renderStatusMessage(input.protocolHandler, input.manifestLink)}
145
145
  <div class="protocol-handlers-row">
146
146
  ${i18nTemplate(UIStrings.needHelpReadOur, {PH1: html`
147
- <devtools-link href=${PROTOCOL_DOCUMENT_URL} class="devtools-link" autofocus .jslogContext=${'learn-more'}>
147
+ <devtools-link href=${PROTOCOL_DOCUMENT_URL} class="devtools-link" autofocus jslogcontext="learn-more">
148
148
  ${i18nString(UIStrings.protocolHandlerRegistrations)}
149
149
  </devtools-link>`})}
150
150
  </div>
@@ -82,7 +82,7 @@ export const DEFAULT_VIEW = (input: ViewInput, output: undefined, target: HTMLEl
82
82
  <style>${reportsGridStyles}</style>
83
83
  <span class="status-header">${i18nString(UIStrings.status)}</span>
84
84
  <devtools-link href="https://web.dev/reporting-api/#report-status"
85
- .jslogContext=${'report-status'}>
85
+ jslogcontext="report-status">
86
86
  <devtools-icon class="inline-icon medium" name="help" style="color: var(--icon-link);"
87
87
  ></devtools-icon>
88
88
  </devtools-link>
@@ -112,7 +112,7 @@ export const DEFAULT_VIEW = (input: ViewInput, output: undefined, target: HTMLEl
112
112
  <devtools-link
113
113
  class="devtools-link"
114
114
  href=${REPORTING_API_EXPLANATION_URL}
115
- .jslogContext=${'learn-more'}
115
+ jslogcontext="learn-more"
116
116
  >${i18nString(UIStrings.learnMore)}</devtools-link>
117
117
  </div>
118
118
  </div>
@@ -257,7 +257,7 @@ export class PreloadingRuleSetView extends UI.Widget.VBox {
257
257
  <devtools-link
258
258
  class="devtools-link"
259
259
  href=${SPECULATION_EXPLANATION_URL}
260
- .jslogContext=${'learn-more'}
260
+ jslogcontext="learn-more"
261
261
  >${i18nString(UIStrings.learnMore)}</devtools-link>
262
262
  </div>
263
263
  </div>
@@ -434,7 +434,7 @@ export class PreloadingAttemptView extends UI.Widget.VBox {
434
434
  <devtools-link
435
435
  class="devtools-link"
436
436
  href=${SPECULATION_EXPLANATION_URL}
437
- .jslogContext=${'learn-more'}
437
+ jslogcontext="learn-more"
438
438
  >${i18nString(UIStrings.learnMore)}</devtools-link>
439
439
  </div>
440
440
  </div>
@@ -262,7 +262,7 @@ function renderMismatchedSections(data: MismatchedData): LitTemplate {
262
262
  <devtools-link
263
263
  class="link devtools-link"
264
264
  href=${data.pageURL}
265
- .jslogContext=${'current-url'}
265
+ jslogcontext="current-url"
266
266
  >${data.pageURL}</devtools-link>
267
267
  </devtools-report-section>
268
268
 
@@ -412,7 +412,7 @@ const DEFAULT_VIEW: View = (input, _output, target) => {
412
412
  <devtools-link
413
413
  class="link devtools-link"
414
414
  href=${'https://developer.chrome.com/blog/prerender-pages/'}
415
- .jslogContext=${'learn-more'}
415
+ jslogcontext="learn-more"
416
416
  >${i18nString(UIStrings.learnMore)}</devtools-link>
417
417
  </devtools-report-section>
418
418
  </devtools-report>`, target);
@@ -238,14 +238,14 @@ const DEFAULT_VIEW: View = (input: ViewInput, _output: ViewOutput, target: HTMLE
238
238
  jslog=${VisualLogging.toggle(input.autoOpenViewSetting.name).track({ change: true })}>
239
239
  ${i18nString(UIStrings.autoShow)}
240
240
  </devtools-checkbox>
241
- <devtools-link href=${AUTOFILL_FEEDBACK_URL} class="feedback link" .jslogContext=${'feedback'}>${i18nString(UIStrings.sendFeedback)}</devtools-link>
241
+ <devtools-link href=${AUTOFILL_FEEDBACK_URL} class="feedback link" jslogcontext="feedback">${i18nString(UIStrings.sendFeedback)}</devtools-link>
242
242
  </div>
243
243
  <div class="placeholder-container" jslog=${VisualLogging.pane('autofill-empty')}>
244
244
  <div class="empty-state">
245
245
  <span class="empty-state-header">${i18nString(UIStrings.noAutofill)}</span>
246
246
  <div class="empty-state-description">
247
247
  <span>${i18nString(UIStrings.toStartDebugging)}</span>
248
- <devtools-link href=${AUTOFILL_INFO_URL} class="link" .jslogContext=${'learn-more'}>${i18nString(UIStrings.learnMore)}</devtools-link>
248
+ <devtools-link href=${AUTOFILL_INFO_URL} class="link" jslogcontext="learn-more">${i18nString(UIStrings.learnMore)}</devtools-link>
249
249
  </div>
250
250
  </div>
251
251
  </div>
@@ -280,7 +280,7 @@ const DEFAULT_VIEW: View = (input: ViewInput, _output: ViewOutput, target: HTMLE
280
280
  ${i18nString(UIStrings.autoShow)}
281
281
  </devtools-checkbox>
282
282
  </div>
283
- <devtools-link href=${AUTOFILL_FEEDBACK_URL} class="feedback link" .jslogContext=${'feedback'}>${i18nString(UIStrings.sendFeedback)}</devtools-link>
283
+ <devtools-link href=${AUTOFILL_FEEDBACK_URL} class="feedback link" jslogcontext="feedback">${i18nString(UIStrings.sendFeedback)}</devtools-link>
284
284
  </div>
285
285
  ${renderAddress()}
286
286
  </div>
@@ -89,7 +89,7 @@ export const DEFAULT_SUMMARY_TOOLBAR_VIEW: View = (input, _output, target) => {
89
89
  ${Directives.repeat(input.citations, citation => html`<devtools-link
90
90
  tabIndex="0"
91
91
  href=${citation}
92
- .jslogContext=${'ai-code-completion-citations.citation-link'}>${citation}</devtools-link>`)}</div></devtools-tooltip>
92
+ jslogcontext="ai-code-completion-citations.citation-link">${citation}</devtools-link>`)}</div></devtools-tooltip>
93
93
  </div>` : nothing;
94
94
 
95
95
  render(
@@ -8,6 +8,7 @@ import * as Common from '../../core/common/common.js';
8
8
  import * as Host from '../../core/host/host.js';
9
9
  import * as i18n from '../../core/i18n/i18n.js';
10
10
  import * as Root from '../../core/root/root.js';
11
+ import * as AIAssistance from '../../models/ai_assistance/ai_assistance.js';
11
12
  import * as AiCodeGeneration from '../../models/ai_code_generation/ai_code_generation.js';
12
13
  import * as Snackbars from '../../ui/components/snackbars/snackbars.js';
13
14
  import * as UI from '../../ui/legacy/legacy.js';
@@ -249,7 +250,7 @@ export class AiCodeCompletionTeaser extends UI.Widget.Widget {
249
250
  content: html`<devtools-link
250
251
  href=${CODE_SNIPPET_WARNING_URL}
251
252
  class="link devtools-link"
252
- .jslogContext=${'code-snippets-explainer.ai-code-completion-teaser'}
253
+ jslogcontext="code-snippets-explainer.ai-code-completion-teaser"
253
254
  >${lockedString(UIStringsNotTranslate.freDisclaimerTextUseWithCaution)}</devtools-link>`,
254
255
  // clang-format on
255
256
  });
@@ -259,8 +260,9 @@ export class AiCodeCompletionTeaser extends UI.Widget.Widget {
259
260
  onAction = async(event: Event): Promise<void> => {
260
261
  event.preventDefault();
261
262
 
263
+ const iconName = AIAssistance.AiUtils.getIconName();
262
264
  const result = await FreDialog.show({
263
- header: {iconName: 'smart-assistant', text: lockedString(UIStringsNotTranslate.freDisclaimerHeader)},
265
+ header: {iconName, text: lockedString(UIStringsNotTranslate.freDisclaimerHeader)},
264
266
  reminderItems: this.#createReminderItems(),
265
267
  onLearnMoreClick: () => {
266
268
  void UI.ViewManager.ViewManager.instance().showView('chrome-ai');
@@ -82,7 +82,7 @@ export class AiCodeGenerationUpgradeDialog {
82
82
  @click=${() => {
83
83
  void UI.ViewManager.ViewManager.instance().showView('chrome-ai');
84
84
  }}
85
- .jslogContext=${'ai-code-generation-upgrade-dialog.manage-in-settings'}
85
+ jslogcontext="ai-code-generation-upgrade-dialog.manage-in-settings"
86
86
  .variant=${Buttons.Button.Variant.OUTLINED}
87
87
  aria-label=${lockedString(UIStringsNotTranslate.manageInSettings)}>
88
88
  ${lockedString(UIStringsNotTranslate.manageInSettings)}
@@ -91,7 +91,7 @@ export class AiCodeGenerationUpgradeDialog {
91
91
  @click=${() => {
92
92
  dialog.hide();
93
93
  }}
94
- .jslogContext=${'ai-code-generation-upgrade-dialog.continue'}
94
+ jslogcontext="ai-code-generation-upgrade-dialog.continue"
95
95
  .variant=${Buttons.Button.Variant.PRIMARY}>
96
96
  ${lockedString(UIStringsNotTranslate.gotIt)}
97
97
  </devtools-button>
@@ -204,8 +204,9 @@ export class BadgeNotification extends UI.Widget.Widget {
204
204
  this.#show({
205
205
  message: i18nFormatStringTemplate(UIStrings.starterBadgeAwardMessageSettingDisabled, {
206
206
  PH1: badge.title,
207
- PH2: html`<devtools-link class="badge-link" href="https://developers.google.com/program" .jslogContext=${
208
- 'program-link'}>${lockedString('Google Developer Program')}</devtools-link>`
207
+ PH2:
208
+ html`<devtools-link class="badge-link" href="https://developers.google.com/program" jslogcontext="program-link">${
209
+ lockedString('Google Developer Program')}</devtools-link>`
209
210
  }),
210
211
  jslogContext: badge.jslogContext,
211
212
  actions: [
@@ -154,9 +154,9 @@ export const DEFAULT_VIEW: View = (input, _output, target): void => {
154
154
  <div class="section-text">
155
155
  <div>${i18nString(UIStrings.tailorProfileBody)}</div><br/>
156
156
  <div>${uiI18n.getFormatLocalizedStringTemplate(str_, UIStrings.tailorProfileBodyDisclaimer, {
157
- PH1: html`<devtools-link href=${CONTENT_POLICY_URL} class="link" .jslogContext=${'content-policy'}>${i18nString(UIStrings.contentPolicy)}</devtools-link>`,
158
- PH2: html`<devtools-link href=${TERMS_OF_SERVICE_URL} class="link" .jslogContext=${'terms-of-service'}>${i18nString(UIStrings.termsOfService)}</devtools-link>`,
159
- PH3: html`<devtools-link href=${PRIVACY_POLICY_URL} class="link" .jslogContext=${'privacy-policy'}>${i18nString(UIStrings.privacyPolicy)}</devtools-link>`,
157
+ PH1: html`<devtools-link href=${CONTENT_POLICY_URL} class="link" jslogcontext="content-policy">${i18nString(UIStrings.contentPolicy)}</devtools-link>`,
158
+ PH2: html`<devtools-link href=${TERMS_OF_SERVICE_URL} class="link" jslogcontext="terms-of-service">${i18nString(UIStrings.termsOfService)}</devtools-link>`,
159
+ PH3: html`<devtools-link href=${PRIVACY_POLICY_URL} class="link" jslogcontext="privacy-policy">${i18nString(UIStrings.privacyPolicy)}</devtools-link>`,
160
160
  })}</div>
161
161
  </div>
162
162
  </div>
@@ -82,7 +82,7 @@ export const DEFAULT_VIEW: View = (input, _output, target): void => {
82
82
  .size=${Buttons.Button.Size.REGULAR}
83
83
  .title=${i18nString(UIStrings.dismiss)}
84
84
  jslog=${VisualLogging.close().track({click: true})}
85
- @click=${() => {}}
85
+ @click=${() => input.onCancelClick()}
86
86
  ></devtools-button>
87
87
  </div>
88
88
  </div>
@@ -169,7 +169,7 @@ function renderNoModel(input: ViewInput): Lit.TemplateResult {
169
169
  lockedString(UIStringsNotTranslate.getHelpForError)}
170
170
  </h2>
171
171
  <div>You can get quick answers from <devtools-link
172
- .jslogContext=${'insights-teaser-built-in-ai-documentation'}
172
+ jslogcontext="insights-teaser-built-in-ai-documentation"
173
173
  class="link"
174
174
  href=${BUILT_IN_AI_DOCUMENTATION}
175
175
  >
@@ -329,7 +329,7 @@ function renderFooter(input: ViewInput): Lit.TemplateResult {
329
329
  class="devtools-link"
330
330
  title=${lockedString(UIStringsNotTranslate.learnMoreAboutAiSummaries)}
331
331
  href=${DATA_USAGE_URL}
332
- .jslogContext=${'explain.teaser.learn-more'}
332
+ jslogcontext="explain.teaser.learn-more"
333
333
  >${lockedString(UIStringsNotTranslate.learnMoreAboutAiSummaries)}</devtools-link>
334
334
  </div>
335
335
  </devtools-tooltip>
@@ -495,8 +495,9 @@ export class ConsoleInsightTeaser extends UI.Widget.Widget {
495
495
  async #showFreDialog(): Promise<void> {
496
496
  const noLogging = Root.Runtime.hostConfig.aidaAvailability?.enterprisePolicyValue ===
497
497
  Root.Runtime.GenAiEnterprisePolicyValue.ALLOW_WITHOUT_LOGGING;
498
+ const iconName = AiAssistanceModel.AiUtils.getIconName();
498
499
  const result = await PanelCommon.FreDialog.show({
499
- header: {iconName: 'smart-assistant', text: lockedString(UIStringsNotTranslate.freDisclaimerHeader)},
500
+ header: {iconName, text: lockedString(UIStringsNotTranslate.freDisclaimerHeader)},
500
501
  reminderItems: [
501
502
  {
502
503
  iconName: 'psychiatry',
@@ -513,7 +514,7 @@ export class ConsoleInsightTeaser extends UI.Widget.Widget {
513
514
  content: html`<devtools-link
514
515
  href=${CODE_SNIPPET_WARNING_URL}
515
516
  class="link devtools-link"
516
- .jslogContext=${'explain.teaser.code-snippets-explainer'}
517
+ jslogcontext="explain.teaser.code-snippets-explainer"
517
518
  >${lockedString(UIStringsNotTranslate.freDisclaimerTextUseWithCaution)}</devtools-link>`,
518
519
  // clang-format on
519
520
  }
@@ -42,6 +42,7 @@ import * as Platform from '../../core/platform/platform.js';
42
42
  import * as Root from '../../core/root/root.js';
43
43
  import * as SDK from '../../core/sdk/sdk.js';
44
44
  import * as Protocol from '../../generated/protocol.js';
45
+ import * as AIAssistance from '../../models/ai_assistance/ai_assistance.js';
45
46
  import * as Badges from '../../models/badges/badges.js';
46
47
  import type * as Elements from '../../models/elements/elements.js';
47
48
  import type * as IssuesManager from '../../models/issues_manager/issues_manager.js';
@@ -1076,7 +1077,8 @@ export class ElementsTreeElement extends UI.TreeOutline.TreeElement {
1076
1077
  const action = UI.ActionRegistry.ActionRegistry.instance().getAction('freestyler.elements-floating-button');
1077
1078
  if (this.contentElement && !this.aiButtonContainer) {
1078
1079
  this.aiButtonContainer = this.contentElement.createChild('span', 'ai-button-container');
1079
- const floatingButton = Buttons.FloatingButton.create('smart-assistant', action.title(), 'ask-ai');
1080
+ const floatingButton =
1081
+ Buttons.FloatingButton.create(AIAssistance.AiUtils.getIconName(), action.title(), 'ask-ai');
1080
1082
  floatingButton.addEventListener('click', ev => {
1081
1083
  ev.stopPropagation();
1082
1084
  this.select(true, false);
@@ -300,7 +300,7 @@ function renderSearchButton(onSearch: ViewInput['callbacks']['onSearch']): Lit.T
300
300
 
301
301
  function renderLearnMoreAboutInsights(): Lit.TemplateResult {
302
302
  // clang-format off
303
- return html`<devtools-link href=${LEARN_MORE_URL} class="link" .jslogContext=${'learn-more'}>
303
+ return html`<devtools-link href=${LEARN_MORE_URL} class="link" jslogcontext="learn-more">
304
304
  ${i18nString(UIStrings.learnMore)}
305
305
  </devtools-link>`;
306
306
  // clang-format on
@@ -321,7 +321,7 @@ function maybeRenderSources(
321
321
  <devtools-link
322
322
  href=${url}
323
323
  class=${Directives.classMap({link: true, highlighted: index === highlightedCitationIndex})}
324
- .jslogContext=${'references.console-insights'}
324
+ jslogcontext="references.console-insights"
325
325
  ${Directives.ref(e => { output.citationLinks[index] = e as HTMLElement; })}
326
326
  @animationend=${onCitationAnimationEnd}
327
327
  >
@@ -347,7 +347,7 @@ function maybeRenderRelatedContent(relatedUrls: string[], directCitationUrls: st
347
347
  <devtools-link
348
348
  href=${relatedUrl}
349
349
  class="link"
350
- .jslogContext=${'references.console-insights'}
350
+ jslogcontext="references.console-insights"
351
351
  >
352
352
  ${relatedUrl}
353
353
  </devtools-link>
@@ -454,12 +454,12 @@ function renderConsentReminder(noLogging: boolean): Lit.TemplateResult {
454
454
  <div>Use of this feature is subject to the <devtools-link
455
455
  href=${TERMS_OF_SERVICE_URL}
456
456
  class="link"
457
- .jslogContext=${'terms-of-service.console-insights'}>
457
+ jslogcontext="terms-of-service.console-insights">
458
458
  Google Terms of Service
459
459
  </devtools-link> and <devtools-link
460
460
  href=${PRIVACY_POLICY_URL}
461
461
  class="link"
462
- .jslogContext=${'privacy-policy.console-insights'}>
462
+ jslogcontext="privacy-policy.console-insights">
463
463
  Google Privacy Policy
464
464
  </devtools-link>
465
465
  </div>
@@ -471,7 +471,7 @@ function renderConsentReminder(noLogging: boolean): Lit.TemplateResult {
471
471
  <devtools-link
472
472
  href=${CODE_SNIPPET_WARNING_URL}
473
473
  class="link"
474
- .jslogContext=${'code-snippets-explainer.console-insights'}
474
+ jslogcontext="code-snippets-explainer.console-insights"
475
475
  >Use generated code snippets with caution</devtools-link>
476
476
  </div>
477
477
  </div>`;
@@ -515,7 +515,7 @@ function renderDisclaimer(noLogging: boolean, onDisclaimerSettingsLink: () => vo
515
515
  jslog=${VisualLogging.action('open-ai-settings').track({click: true})}>
516
516
  Open settings
517
517
  </button> or <devtools-link href=${LEARN_MORE_URL}
518
- class="link" .jslogContext=${'learn-more'}>
518
+ class="link" jslogcontext="learn-more">
519
519
  learn more
520
520
  </devtools-link>
521
521
  </span>`;
@@ -181,20 +181,6 @@ export class CorsIssueDetailsView extends AffectedResourcesView {
181
181
  this.appendColumnTitle(header, i18nString(UIStrings.initiatorAddressSpace));
182
182
  this.appendColumnTitle(header, i18nString(UIStrings.initiatorContext));
183
183
  break;
184
- case IssuesManager.CorsIssue.IssueCode.PREFLIGHT_ALLOW_PRIVATE_NETWORK_ERROR:
185
- this.appendColumnTitle(header, i18nString(UIStrings.preflightRequest));
186
- this.appendColumnTitle(header, i18nString(UIStrings.invalidValue));
187
- this.appendColumnTitle(header, i18nString(UIStrings.initiatorAddressSpace));
188
- this.appendColumnTitle(header, i18nString(UIStrings.initiatorContext));
189
- break;
190
- case IssuesManager.CorsIssue.IssueCode.PREFLIGHT_MISSING_PRIVATE_NETWORK_ACCESS_ID:
191
- case IssuesManager.CorsIssue.IssueCode.PREFLIGHT_MISSING_PRIVATE_NETWORK_ACCESS_NAME:
192
- this.appendColumnTitle(header, i18nString(UIStrings.preflightRequest));
193
- this.appendColumnTitle(header, i18nString(UIStrings.invalidValue));
194
- this.appendColumnTitle(header, i18nString(UIStrings.resourceAddressSpace));
195
- this.appendColumnTitle(header, i18nString(UIStrings.initiatorAddressSpace));
196
- this.appendColumnTitle(header, i18nString(UIStrings.initiatorContext));
197
- break;
198
184
  case IssuesManager.CorsIssue.IssueCode.METHOD_DISALLOWED_BY_PREFLIGHT_RESPONSE:
199
185
  this.appendColumnTitle(header, i18nString(UIStrings.preflightRequest));
200
186
  this.appendColumnTitle(header, i18nString(UIStrings.disallowedRequestMethod));
@@ -222,9 +208,6 @@ export class CorsIssueDetailsView extends AffectedResourcesView {
222
208
  Platform.assertUnhandled<IssuesManager.CorsIssue.IssueCode.PREFLIGHT_MISSING_ALLOW_EXTERNAL|
223
209
  IssuesManager.CorsIssue.IssueCode.PREFLIGHT_INVALID_ALLOW_EXTERNAL|
224
210
  IssuesManager.CorsIssue.IssueCode.INVALID_PRIVATE_NETWORK_ACCESS|
225
- IssuesManager.CorsIssue.IssueCode.UNEXPECTED_PRIVATE_NETWORK_ACCESS|IssuesManager
226
- .CorsIssue.IssueCode.PRIVATE_NETWORK_ACCESS_PERMISSION_UNAVAILABLE|IssuesManager
227
- .CorsIssue.IssueCode.PRIVATE_NETWORK_ACCESS_PERMISSION_DENIED|
228
211
  IssuesManager.CorsIssue.IssueCode.LOCAL_NETWORK_ACCESS_PERMISSION_DENIED>(issueCode);
229
212
  }
230
213
 
@@ -267,18 +250,11 @@ export class CorsIssueDetailsView extends AffectedResourcesView {
267
250
  case Protocol.Network.CorsError.InvalidAllowCredentials:
268
251
  case Protocol.Network.CorsError.PreflightInvalidAllowCredentials:
269
252
  return 'Access-Control-Allow-Credentials';
270
- case Protocol.Network.CorsError.PreflightMissingAllowPrivateNetwork:
271
- case Protocol.Network.CorsError.PreflightInvalidAllowPrivateNetwork:
272
- return 'Access-Control-Allow-Private-Network';
273
253
  case Protocol.Network.CorsError.RedirectContainsCredentials:
274
254
  case Protocol.Network.CorsError.PreflightDisallowedRedirect:
275
255
  return 'Location';
276
256
  case Protocol.Network.CorsError.PreflightInvalidStatus:
277
257
  return 'Status-Code';
278
- case Protocol.Network.CorsError.PreflightMissingPrivateNetworkAccessId:
279
- return 'Private-Network-Access-Id';
280
- case Protocol.Network.CorsError.PreflightMissingPrivateNetworkAccessName:
281
- return 'Private-Network-Access-Name';
282
258
  }
283
259
  return '';
284
260
  }
@@ -393,15 +369,6 @@ export class CorsIssueDetailsView extends AffectedResourcesView {
393
369
  this.appendIssueDetailCell(element, details.clientSecurityState?.initiatorIPAddressSpace ?? '');
394
370
  this.#appendSecureContextCell(element, details.clientSecurityState?.initiatorIsSecureContext);
395
371
  break;
396
- case IssuesManager.CorsIssue.IssueCode.PREFLIGHT_ALLOW_PRIVATE_NETWORK_ERROR: {
397
- element.appendChild(this.createRequestCell(details.request, opts));
398
- this.#appendStatus(element, details.isWarning);
399
- element.appendChild(this.createRequestCell(details.request, {...opts, linkToPreflight: true, highlightHeader}));
400
- this.appendIssueDetailCell(element, details.corsErrorStatus.failedParameter, 'code-example');
401
- this.appendIssueDetailCell(element, details.clientSecurityState?.initiatorIPAddressSpace ?? '');
402
- this.#appendSecureContextCell(element, details.clientSecurityState?.initiatorIsSecureContext);
403
- break;
404
- }
405
372
  case IssuesManager.CorsIssue.IssueCode.METHOD_DISALLOWED_BY_PREFLIGHT_RESPONSE:
406
373
  element.appendChild(this.createRequestCell(details.request, opts));
407
374
  this.#appendStatus(element, details.isWarning);
@@ -461,25 +428,12 @@ export class CorsIssueDetailsView extends AffectedResourcesView {
461
428
  this.#appendStatus(element, details.isWarning);
462
429
  this.appendSourceLocation(element, details.location, issue.model()?.getTargetIfNotDisposed());
463
430
  break;
464
- case IssuesManager.CorsIssue.IssueCode.PREFLIGHT_MISSING_PRIVATE_NETWORK_ACCESS_ID:
465
- case IssuesManager.CorsIssue.IssueCode.PREFLIGHT_MISSING_PRIVATE_NETWORK_ACCESS_NAME:
466
- element.appendChild(this.createRequestCell(details.request, opts));
467
- this.#appendStatus(element, details.isWarning);
468
- element.appendChild(this.createRequestCell(details.request, {...opts, linkToPreflight: true, highlightHeader}));
469
- this.appendIssueDetailCell(element, CorsIssueDetailsView.getHeaderFromError(corsError));
470
- this.appendIssueDetailCell(element, details.resourceIPAddressSpace ?? '');
471
- this.appendIssueDetailCell(element, details.clientSecurityState?.initiatorIPAddressSpace ?? '');
472
- this.#appendSecureContextCell(element, details.clientSecurityState?.initiatorIsSecureContext);
473
- break;
474
431
  default:
475
432
  element.appendChild(this.createRequestCell(details.request, opts));
476
433
  this.#appendStatus(element, details.isWarning);
477
434
  Platform.assertUnhandled<IssuesManager.CorsIssue.IssueCode.PREFLIGHT_MISSING_ALLOW_EXTERNAL|
478
435
  IssuesManager.CorsIssue.IssueCode.PREFLIGHT_INVALID_ALLOW_EXTERNAL|
479
436
  IssuesManager.CorsIssue.IssueCode.INVALID_PRIVATE_NETWORK_ACCESS|
480
- IssuesManager.CorsIssue.IssueCode.UNEXPECTED_PRIVATE_NETWORK_ACCESS|IssuesManager
481
- .CorsIssue.IssueCode.PRIVATE_NETWORK_ACCESS_PERMISSION_UNAVAILABLE|IssuesManager
482
- .CorsIssue.IssueCode.PRIVATE_NETWORK_ACCESS_PERMISSION_DENIED|
483
437
  IssuesManager.CorsIssue.IssueCode.LOCAL_NETWORK_ACCESS_PERMISSION_DENIED>(issueCode);
484
438
  break;
485
439
  }
@@ -455,7 +455,7 @@ export class IssueView extends UI.TreeOutline.TreeElement {
455
455
  const linkListItem = linkList.createChild('li');
456
456
  // eslint-disable-next-line @devtools/no-lit-render-outside-of-view
457
457
  render(
458
- html`<devtools-link class="link devtools-link" href=${description.link} .jslogContext=${'learn-more'}>${
458
+ html`<devtools-link class="link devtools-link" href=${description.link} jslogcontext="learn-more">${
459
459
  i18nString(UIStrings.learnMoreS, {PH1: description.linkTitle})}</devtools-link>`,
460
460
  linkListItem);
461
461
  }
@@ -42,6 +42,7 @@ import * as i18n from '../../core/i18n/i18n.js';
42
42
  import * as Platform from '../../core/platform/platform.js';
43
43
  import * as SDK from '../../core/sdk/sdk.js';
44
44
  import * as Protocol from '../../generated/protocol.js';
45
+ import * as AiAssistance from '../../models/ai_assistance/ai_assistance.js';
45
46
  import * as Bindings from '../../models/bindings/bindings.js';
46
47
  import type * as HAR from '../../models/har/har.js';
47
48
  import * as Logs from '../../models/logs/logs.js';
@@ -1621,7 +1622,8 @@ export class NetworkRequestNode extends NetworkNode {
1621
1622
  const action = UI.ActionRegistry.ActionRegistry.instance().getAction('drjones.network-floating-button');
1622
1623
  const aiButtonContainer = document.createElement('span');
1623
1624
  aiButtonContainer.classList.add('ai-button-container');
1624
- const floatingButton = Buttons.FloatingButton.create('smart-assistant', action.title(), 'ask-ai');
1625
+ const icon = AiAssistance.AiUtils.getIconName();
1626
+ const floatingButton = Buttons.FloatingButton.create(icon, action.title(), 'ask-ai');
1625
1627
  floatingButton.addEventListener('click', ev => {
1626
1628
  ev.stopPropagation();
1627
1629
  this.select();
@@ -24,7 +24,7 @@ import * as PanelUtils from '../utils/utils.js';
24
24
 
25
25
  import requestConditionsDrawerStyles from './requestConditionsDrawer.css.js';
26
26
 
27
- const {ref} = Directives;
27
+ const {ref, live} = Directives;
28
28
  const {widgetConfig} = UI.Widget;
29
29
 
30
30
  const UIStrings = {
@@ -439,10 +439,10 @@ export class RequestConditionsDrawer extends UI.Widget.VBox implements
439
439
  // clang-format off
440
440
  html`
441
441
  <input class=blocked-url-checkbox
442
- @click=${toggle}
442
+ @change=${toggle}
443
443
  type=checkbox
444
444
  title=${i18nString(UIStrings.enableThrottlingToggleLabel, {PH1: constructorStringOrWildcardURL})}
445
- .checked=${enabled}
445
+ .checked=${live(enabled)}
446
446
  .disabled=${!editable || !originalOrUpgradedURLPattern}
447
447
  jslog=${VisualLogging.toggle().track({ change: true })}>
448
448
  <devtools-button
@@ -519,7 +519,7 @@ export class RequestConditionsDrawer extends UI.Widget.VBox implements
519
519
  // clang-format off
520
520
  html`
521
521
  <input class=blocked-url-checkbox
522
- @click=${toggle}
522
+ @change=${toggle}
523
523
  type=checkbox
524
524
  .checked=${condition.enabled}
525
525
  .disabled=${!editable}
@@ -504,7 +504,7 @@ export const DEFAULT_VIEW: View = (input, output, target) => {
504
504
  <devtools-link
505
505
  href="https://developer.chrome.com/docs/devtools/network/reference/#timing-explanation"
506
506
  class=devtools-link
507
- .jslogContext=${'explanation'}>
507
+ jslogcontext="explanation">
508
508
  ${i18nString(UIStrings.explanation)}
509
509
  </devtools-link>
510
510
  <td></td>
@@ -310,7 +310,7 @@ export class RequestHeadersView extends LegacyWrapper.LegacyWrapper.WrappableCom
310
310
  <devtools-link
311
311
  href="https://goo.gle/devtools-override"
312
312
  class="link devtools-link"
313
- .jslogContext=${'devtools-override'}
313
+ jslogcontext="devtools-override"
314
314
  >
315
315
  <devtools-icon name="help" class="inline-icon medium">
316
316
  </devtools-icon>
@@ -319,7 +319,7 @@ export class RequestHeadersView extends LegacyWrapper.LegacyWrapper.WrappableCom
319
319
  @click=${revealHeadersFile}
320
320
  class="link devtools-link"
321
321
  title=${UIStrings.revealHeaderOverrides}
322
- .jslogContext=${'reveal-header-overrides'}
322
+ jslogcontext="reveal-header-overrides"
323
323
  >
324
324
  ${fileIcon}${Persistence.NetworkPersistenceManager.HEADERS_FILENAME}
325
325
  </devtools-link>
@@ -126,11 +126,6 @@ export class DetachedElementsProfileType extends
126
126
  return;
127
127
  }
128
128
 
129
- const animationModel = target?.model(SDK.AnimationModel.AnimationModel);
130
- if (animationModel) {
131
- // TODO(b/406904348): Remove this once we correctly release animations on the backend.
132
- await animationModel.releaseAllAnimations();
133
- }
134
129
  const data = await domModel.getDetachedDOMNodes();
135
130
 
136
131
  const profile: DetachedElementsProfileHeader = new DetachedElementsProfileHeader(heapProfilerModel, this, data);
@@ -283,12 +283,6 @@ export class SamplingHeapProfileTypeBase extends
283
283
  UI.InspectorView.InspectorView.instance().setPanelWarnings('heap-profiler', warnings);
284
284
 
285
285
  this.recording = true;
286
- const target = heapProfilerModel.target();
287
- const animationModel = target.model(SDK.AnimationModel.AnimationModel);
288
- if (animationModel) {
289
- // TODO(b/406904348): Remove this once we correctly release animations on the backend.
290
- await animationModel.releaseAllAnimations();
291
- }
292
286
  this.startSampling();
293
287
  }
294
288