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.
- package/front_end/Images/src/account-tree.svg +10 -1
- package/front_end/Images/src/arrow-right-circle.svg +2 -7
- package/front_end/Images/src/center-focus-weak.svg +3 -1
- package/front_end/Images/src/dog-paw.svg +10 -3
- package/front_end/Images/src/group.svg +3 -1
- package/front_end/Images/src/home.svg +3 -1
- package/front_end/Images/src/spark-info.svg +3 -3
- package/front_end/Images/src/spark.svg +2 -9
- package/front_end/core/sdk/AnimationModel.ts +0 -6
- package/front_end/core/sdk/IsolateManager.ts +0 -7
- package/front_end/devtools_compatibility.js +16 -1
- package/front_end/entrypoints/main/GlobalAiButton.ts +18 -3
- package/front_end/generated/InspectorBackendCommands.ts +6 -4
- package/front_end/generated/SupportedCSSProperties.js +17 -4
- package/front_end/generated/protocol-mapping.d.ts +2 -0
- package/front_end/generated/protocol-proxy-api.d.ts +2 -0
- package/front_end/generated/protocol.ts +37 -7
- package/front_end/models/ai_assistance/AiUtils.ts +8 -0
- package/front_end/models/ai_assistance/agents/StylingAgent.snapshot.txt +7 -7
- package/front_end/models/ai_assistance/agents/StylingAgent.ts +4 -4
- package/front_end/models/issues_manager/CorsIssue.ts +4 -44
- package/front_end/models/logs/NetworkLog.ts +0 -9
- package/front_end/panels/ai_assistance/PatchWidget.ts +5 -5
- package/front_end/panels/ai_assistance/SelectWorkspaceDialog.ts +1 -1
- package/front_end/panels/ai_assistance/ai_assistance-meta.ts +34 -13
- package/front_end/panels/ai_assistance/components/ChatMessage.ts +3 -1
- package/front_end/panels/ai_assistance/components/ChatView.ts +20 -3
- package/front_end/panels/ai_assistance/components/chatView.css +20 -0
- package/front_end/panels/application/AppManifestView.ts +5 -5
- package/front_end/panels/application/DeviceBoundSessionsModel.ts +32 -3
- package/front_end/panels/application/DeviceBoundSessionsTreeElement.ts +31 -9
- package/front_end/panels/application/FrameDetailsView.ts +3 -4
- package/front_end/panels/application/components/BounceTrackingMitigationsView.ts +1 -1
- package/front_end/panels/application/components/ProtocolHandlersView.ts +2 -2
- package/front_end/panels/application/components/ReportsGrid.ts +2 -2
- package/front_end/panels/application/preloading/PreloadingView.ts +2 -2
- package/front_end/panels/application/preloading/components/UsedPreloadingView.ts +2 -2
- package/front_end/panels/autofill/AutofillView.ts +3 -3
- package/front_end/panels/common/AiCodeCompletionSummaryToolbar.ts +1 -1
- package/front_end/panels/common/AiCodeCompletionTeaser.ts +4 -2
- package/front_end/panels/common/AiCodeGenerationUpgradeDialog.ts +2 -2
- package/front_end/panels/common/BadgeNotification.ts +3 -2
- package/front_end/panels/common/GdpSignUpDialog.ts +3 -3
- package/front_end/panels/common/GeminiRebrandPromoDialog.ts +1 -1
- package/front_end/panels/console/ConsoleInsightTeaser.ts +5 -4
- package/front_end/panels/elements/ElementsTreeElement.ts +3 -1
- package/front_end/panels/explain/components/ConsoleInsight.ts +7 -7
- package/front_end/panels/issues/CorsIssueDetailsView.ts +0 -46
- package/front_end/panels/issues/IssueView.ts +1 -1
- package/front_end/panels/network/NetworkDataGridNode.ts +3 -1
- package/front_end/panels/network/RequestConditionsDrawer.ts +4 -4
- package/front_end/panels/network/RequestTimingView.ts +1 -1
- package/front_end/panels/network/components/RequestHeadersView.ts +2 -2
- package/front_end/panels/profiler/HeapDetachedElementsView.ts +0 -5
- package/front_end/panels/profiler/HeapProfileView.ts +0 -6
- package/front_end/panels/profiler/HeapSnapshotView.ts +0 -14
- package/front_end/panels/profiler/IsolateSelector.ts +1 -2
- package/front_end/panels/recorder/RecorderController.ts +2 -2
- package/front_end/panels/security/CookieReportView.ts +6 -6
- package/front_end/panels/settings/AISettingsTab.ts +1 -1
- package/front_end/panels/settings/components/SyncSection.ts +1 -1
- package/front_end/panels/settings/emulation/components/UserAgentClientHintsForm.ts +1 -1
- package/front_end/panels/sources/BreakpointEditDialog.ts +1 -1
- package/front_end/panels/sources/NavigatorView.ts +3 -1
- package/front_end/panels/timeline/components/insights/BaseInsightComponent.ts +2 -1
- package/front_end/panels/whats_new/ReleaseNoteView.ts +1 -1
- package/front_end/third_party/chromium/README.chromium +1 -1
- package/front_end/third_party/puppeteer/README.chromium +2 -2
- package/front_end/third_party/puppeteer/package/README.md +5 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/HTTPResponse.d.ts +6 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/HTTPResponse.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/HTTPResponse.js +5 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/HTTPResponse.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.d.ts +3 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.js +53 -55
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.d.ts +2 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.js +25 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Accessibility.d.ts +7 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Accessibility.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Accessibility.js +3 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Accessibility.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserContext.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserContext.js +2 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserContext.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.js +2 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/injected/injected.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.d.ts +3 -3
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js +3 -3
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/Mutex.d.ts +2 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/version.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/version.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.d.ts +7 -1
- package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.js +21 -8
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/HTTPResponse.d.ts +6 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/HTTPResponse.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/HTTPResponse.js +5 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/HTTPResponse.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.d.ts +3 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.js +54 -56
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.d.ts +2 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.js +25 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Accessibility.d.ts +7 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Accessibility.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Accessibility.js +3 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Accessibility.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserContext.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserContext.js +2 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserContext.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.js +2 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.d.ts +3 -3
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js +3 -3
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/version.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/version.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/types.d.ts +7 -1
- package/front_end/third_party/puppeteer/package/package.json +5 -5
- package/front_end/third_party/puppeteer/package/src/api/HTTPResponse.ts +7 -2
- package/front_end/third_party/puppeteer/package/src/bidi/Page.ts +62 -71
- package/front_end/third_party/puppeteer/package/src/bidi/core/BrowsingContext.ts +29 -0
- package/front_end/third_party/puppeteer/package/src/cdp/Accessibility.ts +12 -1
- package/front_end/third_party/puppeteer/package/src/cdp/BrowserContext.ts +2 -0
- package/front_end/third_party/puppeteer/package/src/cdp/Page.ts +2 -0
- package/front_end/third_party/puppeteer/package/src/revisions.ts +3 -3
- package/front_end/third_party/puppeteer/package/src/util/version.ts +1 -1
- package/front_end/ui/components/buttons/Button.ts +26 -14
- package/front_end/ui/components/buttons/FloatingButton.ts +7 -3
- package/front_end/ui/components/buttons/floatingButton.css +44 -0
- package/front_end/ui/components/markdown_view/CodeBlock.ts +1 -1
- package/front_end/ui/components/panel_feedback/PanelFeedback.ts +1 -1
- package/front_end/ui/components/text_editor/AutocompleteHistory.ts +33 -1
- package/front_end/ui/visual_logging/KnownContextValues.ts +1 -0
- package/package.json +3 -2
|
@@ -120,8 +120,20 @@ export class RootTreeElement extends ApplicationPanelTreeElement {
|
|
|
120
120
|
}
|
|
121
121
|
}
|
|
122
122
|
|
|
123
|
-
#
|
|
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
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
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.#
|
|
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
|
-
|
|
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
|
-
|
|
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/" .
|
|
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
|
-
|
|
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}
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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"
|
|
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"
|
|
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"
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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:
|
|
208
|
-
|
|
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"
|
|
158
|
-
PH2: html`<devtools-link href=${TERMS_OF_SERVICE_URL} class="link"
|
|
159
|
-
PH3: html`<devtools-link href=${PRIVACY_POLICY_URL} class="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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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 =
|
|
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"
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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"
|
|
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}
|
|
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
|
|
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
|
-
@
|
|
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
|
-
@
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|