chrome-devtools-frontend 1.0.1581708 → 1.0.1583146
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/core/root/Runtime.ts +0 -5
- package/front_end/core/sdk/NetworkManager.ts +63 -115
- package/front_end/core/sdk/RemoteObject.ts +7 -1
- package/front_end/entrypoints/greendev_floaty/FloatyEntrypoint.ts +9 -24
- package/front_end/entrypoints/greendev_floaty/floaty.css +1 -1
- package/front_end/entrypoints/greendev_floaty/greendev_floaty.ts +1 -1
- package/front_end/generated/InspectorBackendCommands.ts +1 -1
- package/front_end/generated/SupportedCSSProperties.js +2 -0
- package/front_end/generated/protocol.ts +0 -6
- package/front_end/models/ai_assistance/agents/ContextSelectionAgent.snapshot.txt +6 -6
- package/front_end/models/ai_assistance/agents/ContextSelectionAgent.ts +17 -9
- package/front_end/models/ai_assistance/agents/NetworkAgent.ts +2 -6
- package/front_end/models/ai_assistance/data_formatters/NetworkRequestFormatter.ts +66 -2
- package/front_end/models/greendev/Prototypes.ts +1 -10
- package/front_end/models/issues_manager/ConnectionAllowlistIssue.ts +75 -0
- package/front_end/models/issues_manager/FederatedAuthRequestIssue.ts +0 -30
- package/front_end/models/issues_manager/IssuesManager.ts +5 -0
- package/front_end/models/issues_manager/descriptions/connectionAllowlistInvalidAllowlistItemType.md +12 -0
- package/front_end/models/issues_manager/descriptions/connectionAllowlistInvalidHeader.md +12 -0
- package/front_end/models/issues_manager/descriptions/connectionAllowlistInvalidUrlPattern.md +8 -0
- package/front_end/models/issues_manager/descriptions/connectionAllowlistItemNotInnerList.md +12 -0
- package/front_end/models/issues_manager/descriptions/connectionAllowlistMoreThanOneList.md +7 -0
- package/front_end/models/issues_manager/descriptions/connectionAllowlistReportingEndpointNotToken.md +10 -0
- package/front_end/models/issues_manager/issues_manager.ts +2 -0
- package/front_end/panels/ai_assistance/AiAssistancePanel.ts +22 -4
- package/front_end/panels/ai_assistance/components/ChatInput.ts +7 -3
- package/front_end/panels/ai_assistance/components/ChatMessage.ts +4 -2
- package/front_end/panels/application/preloading/PreloadingView.ts +8 -1
- package/front_end/panels/application/preloading/components/PreloadingDetailsReportView.ts +4 -1
- package/front_end/panels/application/preloading/components/PreloadingGrid.ts +2 -1
- package/front_end/panels/application/preloading/components/PreloadingString.ts +12 -3
- package/front_end/panels/application/preloading/helper/PreloadingForward.ts +14 -0
- package/front_end/panels/autofill/AutofillView.ts +4 -8
- package/front_end/panels/browser_debugger/CategorizedBreakpointsSidebarPane.ts +37 -3
- package/front_end/panels/changes/ChangesSidebar.ts +2 -6
- package/front_end/panels/common/AiCodeGenerationTeaser.ts +27 -8
- package/front_end/panels/console/ConsoleSidebar.ts +3 -11
- package/front_end/panels/elements/ComputedStyleWidget.ts +41 -29
- package/front_end/panels/elements/ElementStatePaneWidget.ts +1 -1
- package/front_end/panels/elements/ElementsTreeElement.ts +487 -426
- package/front_end/panels/elements/EventListenersWidget.ts +2 -4
- package/front_end/panels/elements/PropertiesWidget.ts +1 -2
- package/front_end/panels/elements/StylePropertyTreeElement.ts +18 -2
- package/front_end/panels/elements/computedStyleWidget.css +30 -0
- package/front_end/panels/lighthouse/LighthouseStartView.ts +3 -5
- package/front_end/panels/lighthouse/lighthouseStartView.css +6 -0
- package/front_end/panels/network/NetworkLogView.ts +67 -108
- package/front_end/panels/network/RequestConditionsDrawer.ts +40 -131
- package/front_end/panels/network/RequestInitiatorView.ts +19 -8
- package/front_end/panels/network/network-meta.ts +4 -27
- package/front_end/panels/settings/AISettingsTab.ts +1 -5
- package/front_end/panels/settings/SettingsScreen.ts +0 -51
- package/front_end/panels/settings/WorkspaceSettingsTab.ts +1 -1
- package/front_end/panels/sources/CallStackSidebarPane.ts +2 -2
- package/front_end/panels/timeline/AnimationsTrackAppender.ts +4 -1
- package/front_end/panels/timeline/InteractionsTrackAppender.ts +1 -1
- package/front_end/panels/timeline/TimelineUIUtils.ts +13 -16
- package/front_end/third_party/chromium/README.chromium +1 -1
- package/front_end/ui/components/markdown_view/MarkdownLinksMap.ts +5 -1
- package/front_end/ui/components/text_editor/AiCodeCompletionProvider.ts +8 -0
- package/front_end/ui/components/text_editor/AiCodeGenerationProvider.ts +8 -0
- package/front_end/ui/components/text_editor/config.ts +6 -0
- package/front_end/ui/legacy/Toolbar.ts +16 -8
- package/front_end/ui/legacy/Treeoutline.ts +4 -4
- package/front_end/ui/legacy/UIUtils.ts +35 -4
- package/front_end/ui/legacy/components/utils/JSPresentationUtils.ts +6 -11
- package/front_end/ui/legacy/components/utils/Linkifier.ts +4 -7
- package/front_end/ui/visual_logging/KnownContextValues.ts +1 -0
- package/package.json +1 -1
- package/front_end/models/issues_manager/descriptions/federatedAuthRequestClientMetadataHttpNotFound.md +0 -1
- package/front_end/models/issues_manager/descriptions/federatedAuthRequestClientMetadataInvalidResponse.md +0 -1
- package/front_end/models/issues_manager/descriptions/federatedAuthRequestClientMetadataNoResponse.md +0 -1
- package/front_end/panels/elements/computedStyleSidebarPane.css +0 -18
|
@@ -58,9 +58,12 @@ export const markdownLinks = new Map<string, string>([
|
|
|
58
58
|
['signatureHeader', 'https://www.rfc-editor.org/rfc/rfc9421.html#name-the-signature-http-field'],
|
|
59
59
|
['signatureInputHeader', 'https://www.rfc-editor.org/rfc/rfc9421.html#name-the-signature-input-http-fi'],
|
|
60
60
|
['signatureParameters', 'https://www.rfc-editor.org/rfc/rfc9421.html#name-signature-parameters'],
|
|
61
|
-
['sfDictionary', 'https://www.rfc-editor.org/rfc/rfc8941.html#name-dictionaries'],
|
|
62
61
|
['sfByteSequence', 'https://www.rfc-editor.org/rfc/rfc8941.html#name-byte-sequences'],
|
|
62
|
+
['sfDictionary', 'https://www.rfc-editor.org/rfc/rfc8941.html#name-dictionaries'],
|
|
63
63
|
['sfInnerList', 'https://www.rfc-editor.org/rfc/rfc8941.html#name-inner-lists'],
|
|
64
|
+
['sfList', 'https://www.rfc-editor.org/rfc/rfc8941.html#name-lists'],
|
|
65
|
+
['sfString', 'https://www.rfc-editor.org/rfc/rfc8941.html#name-strings'],
|
|
66
|
+
['sfToken', 'https://www.rfc-editor.org/rfc/rfc8941.html#name-tokens'],
|
|
64
67
|
['componentParameterSf', 'https://www.rfc-editor.org/rfc/rfc9421.html#name-strict-serialization-of-htt'],
|
|
65
68
|
['componentParameterReq', 'https://www.rfc-editor.org/rfc/rfc9421.html#content-request-response'],
|
|
66
69
|
[
|
|
@@ -74,6 +77,7 @@ export const markdownLinks = new Map<string, string>([
|
|
|
74
77
|
'https://privacysandbox.com/news/update-on-plans-for-privacy-sandbox-technologies/',
|
|
75
78
|
'https://privacysandbox.com/news/update-on-plans-for-privacy-sandbox-technologies/'
|
|
76
79
|
],
|
|
80
|
+
['urlPatternSpec', 'https://urlpattern.spec.whatwg.org/'],
|
|
77
81
|
]);
|
|
78
82
|
|
|
79
83
|
export const getMarkdownLink = (key: string): string => {
|
|
@@ -18,6 +18,7 @@ import {
|
|
|
18
18
|
acceptAiAutoCompleteSuggestion,
|
|
19
19
|
aiAutoCompleteSuggestion,
|
|
20
20
|
aiAutoCompleteSuggestionState,
|
|
21
|
+
AiSuggestionSource,
|
|
21
22
|
hasActiveAiSuggestion,
|
|
22
23
|
setAiAutoCompleteSuggestion,
|
|
23
24
|
showCompletionHint,
|
|
@@ -201,6 +202,12 @@ export class AiCodeCompletionProvider {
|
|
|
201
202
|
if (!this.#aiCodeCompletion || !this.#editor || !hasActiveAiSuggestion(this.#editor.state)) {
|
|
202
203
|
return false;
|
|
203
204
|
}
|
|
205
|
+
if (this.#editor.state.field(aiAutoCompleteSuggestionState)?.source === AiSuggestionSource.GENERATION) {
|
|
206
|
+
// If the suggestion is from code generation, we don't want to
|
|
207
|
+
// dismiss it here. The user should use the code generation
|
|
208
|
+
// provider's keymap to dismiss the suggestion.
|
|
209
|
+
return false;
|
|
210
|
+
}
|
|
204
211
|
this.#editor.dispatch({
|
|
205
212
|
effects: setAiAutoCompleteSuggestion.of(null),
|
|
206
213
|
});
|
|
@@ -347,6 +354,7 @@ export class AiCodeCompletionProvider {
|
|
|
347
354
|
startTime,
|
|
348
355
|
clearCachedRequest: this.clearCache.bind(this),
|
|
349
356
|
onImpression: this.#aiCodeCompletion?.registerUserImpression.bind(this.#aiCodeCompletion),
|
|
357
|
+
source: AiSuggestionSource.COMPLETION,
|
|
350
358
|
})
|
|
351
359
|
});
|
|
352
360
|
}
|
|
@@ -19,6 +19,7 @@ import {
|
|
|
19
19
|
acceptAiAutoCompleteSuggestion,
|
|
20
20
|
aiAutoCompleteSuggestion,
|
|
21
21
|
aiAutoCompleteSuggestionState,
|
|
22
|
+
AiSuggestionSource,
|
|
22
23
|
hasActiveAiSuggestion,
|
|
23
24
|
setAiAutoCompleteSuggestion,
|
|
24
25
|
} from './config.js';
|
|
@@ -159,6 +160,12 @@ export class AiCodeGenerationProvider {
|
|
|
159
160
|
return false;
|
|
160
161
|
}
|
|
161
162
|
if (hasActiveAiSuggestion(this.#editor.state)) {
|
|
163
|
+
if (this.#editor.state.field(aiAutoCompleteSuggestionState)?.source === AiSuggestionSource.COMPLETION) {
|
|
164
|
+
// If the suggestion is from code completion, we don't want to
|
|
165
|
+
// dismiss it here. The user should use the code completion
|
|
166
|
+
// provider's keymap to dismiss the suggestion.
|
|
167
|
+
return false;
|
|
168
|
+
}
|
|
162
169
|
this.#dismissTeaserAndSuggestion();
|
|
163
170
|
return true;
|
|
164
171
|
}
|
|
@@ -341,6 +348,7 @@ export class AiCodeGenerationProvider {
|
|
|
341
348
|
sampleId: topSample.sampleId,
|
|
342
349
|
startTime,
|
|
343
350
|
onImpression: this.#aiCodeGeneration?.registerUserImpression.bind(this.#aiCodeGeneration),
|
|
351
|
+
source: AiSuggestionSource.GENERATION,
|
|
344
352
|
}),
|
|
345
353
|
setAiCodeGenerationTeaserMode.of(AiCodeGenerationTeaserMode.ACTIVE)
|
|
346
354
|
]
|
|
@@ -483,6 +483,11 @@ export function contentIncludingHint(view: CM.EditorView): string {
|
|
|
483
483
|
|
|
484
484
|
export const setAiAutoCompleteSuggestion = CM.StateEffect.define<ActiveSuggestion|null>();
|
|
485
485
|
|
|
486
|
+
export const enum AiSuggestionSource {
|
|
487
|
+
COMPLETION = 'completion',
|
|
488
|
+
GENERATION = 'generation',
|
|
489
|
+
}
|
|
490
|
+
|
|
486
491
|
export interface ActiveSuggestion {
|
|
487
492
|
text: string;
|
|
488
493
|
from: number;
|
|
@@ -491,6 +496,7 @@ export interface ActiveSuggestion {
|
|
|
491
496
|
startTime: number;
|
|
492
497
|
onImpression: (rpcGlobalId: Host.AidaClient.RpcGlobalId, latency: number, sampleId?: number) => void;
|
|
493
498
|
clearCachedRequest?: () => void;
|
|
499
|
+
source: AiSuggestionSource;
|
|
494
500
|
}
|
|
495
501
|
|
|
496
502
|
export const aiAutoCompleteSuggestionState = CM.StateField.define<ActiveSuggestion|null>({
|
|
@@ -835,7 +835,7 @@ export class ToolbarInputElement extends HTMLElement {
|
|
|
835
835
|
|
|
836
836
|
item?: ToolbarInput;
|
|
837
837
|
datalist: HTMLDataListElement|null = null;
|
|
838
|
-
value: string|undefined = undefined;
|
|
838
|
+
#value: string|undefined = undefined;
|
|
839
839
|
#disabled = false;
|
|
840
840
|
|
|
841
841
|
connectedCallback(): void {
|
|
@@ -862,8 +862,8 @@ export class ToolbarInputElement extends HTMLElement {
|
|
|
862
862
|
/* shrinkFactor=*/ undefined, tooltip, this.datalist ? this.#onAutocomplete.bind(this) : undefined,
|
|
863
863
|
/* dynamicCompletions=*/ undefined, jslogContext, this);
|
|
864
864
|
}
|
|
865
|
-
if (this
|
|
866
|
-
this.item.setValue(this
|
|
865
|
+
if (this.#value) {
|
|
866
|
+
this.item.setValue(this.#value);
|
|
867
867
|
}
|
|
868
868
|
if (this.#disabled) {
|
|
869
869
|
this.item.setEnabled(false);
|
|
@@ -894,7 +894,7 @@ export class ToolbarInputElement extends HTMLElement {
|
|
|
894
894
|
if (this.item && this.item.value() !== newValue) {
|
|
895
895
|
this.item.setValue(newValue, true);
|
|
896
896
|
} else {
|
|
897
|
-
this
|
|
897
|
+
this.#value = newValue;
|
|
898
898
|
}
|
|
899
899
|
} else if (name === 'disabled') {
|
|
900
900
|
this.#disabled = typeof newValue === 'string';
|
|
@@ -904,6 +904,14 @@ export class ToolbarInputElement extends HTMLElement {
|
|
|
904
904
|
}
|
|
905
905
|
}
|
|
906
906
|
|
|
907
|
+
get value(): string {
|
|
908
|
+
return this.item ? this.item.value() : (this.#value ?? '');
|
|
909
|
+
}
|
|
910
|
+
|
|
911
|
+
set value(value: string) {
|
|
912
|
+
this.setAttribute('value', value);
|
|
913
|
+
}
|
|
914
|
+
|
|
907
915
|
set disabled(disabled: boolean) {
|
|
908
916
|
if (disabled) {
|
|
909
917
|
this.setAttribute('disabled', '');
|
|
@@ -1321,11 +1329,11 @@ export class ToolbarCheckbox extends ToolbarItem<void> {
|
|
|
1321
1329
|
constructor(
|
|
1322
1330
|
text: Common.UIString.LocalizedString, tooltip?: Common.UIString.LocalizedString,
|
|
1323
1331
|
listener?: ((arg0: MouseEvent) => void), jslogContext?: string) {
|
|
1324
|
-
|
|
1332
|
+
// Pass tooltip to CheckboxLabel.create so it's set on the inner input/text elements,
|
|
1333
|
+
// rather than installing it on the wrapper element which causes screen readers to
|
|
1334
|
+
// incorrectly announce it as a group name.
|
|
1335
|
+
const checkboxLabel = CheckboxLabel.create(text, undefined, undefined, jslogContext, undefined, tooltip);
|
|
1325
1336
|
super(checkboxLabel);
|
|
1326
|
-
if (tooltip) {
|
|
1327
|
-
Tooltip.install(this.element, tooltip);
|
|
1328
|
-
}
|
|
1329
1337
|
if (listener) {
|
|
1330
1338
|
this.element.addEventListener('click', listener, false);
|
|
1331
1339
|
}
|
|
@@ -1704,7 +1704,7 @@ export class TreeViewElement extends HTMLElementWithLightDOMTemplate {
|
|
|
1704
1704
|
super();
|
|
1705
1705
|
this.#treeOutline.addEventListener(Events.ElementSelected, event => {
|
|
1706
1706
|
if (event.data instanceof TreeViewTreeElement) {
|
|
1707
|
-
|
|
1707
|
+
event.data.listItemElement.dispatchEvent(new TreeViewElement.SelectEvent());
|
|
1708
1708
|
}
|
|
1709
1709
|
});
|
|
1710
1710
|
this.#treeOutline.addEventListener(Events.ElementExpanded, event => {
|
|
@@ -1859,9 +1859,9 @@ export class TreeViewElement extends HTMLElementWithLightDOMTemplate {
|
|
|
1859
1859
|
}
|
|
1860
1860
|
|
|
1861
1861
|
export namespace TreeViewElement {
|
|
1862
|
-
export class SelectEvent extends CustomEvent<
|
|
1863
|
-
constructor(
|
|
1864
|
-
super('select'
|
|
1862
|
+
export class SelectEvent extends CustomEvent<void> {
|
|
1863
|
+
constructor() {
|
|
1864
|
+
super('select');
|
|
1865
1865
|
}
|
|
1866
1866
|
}
|
|
1867
1867
|
|
|
@@ -1173,7 +1173,7 @@ export class CheckboxLabel extends HTMLElement {
|
|
|
1173
1173
|
|
|
1174
1174
|
static create(
|
|
1175
1175
|
title?: Platform.UIString.LocalizedString, checked?: boolean, subtitle?: Platform.UIString.LocalizedString,
|
|
1176
|
-
jslogContext?: string, small?: boolean): CheckboxLabel {
|
|
1176
|
+
jslogContext?: string, small?: boolean, tooltip?: Platform.UIString.LocalizedString): CheckboxLabel {
|
|
1177
1177
|
const element = document.createElement('devtools-checkbox');
|
|
1178
1178
|
element.#checkboxElement.checked = Boolean(checked);
|
|
1179
1179
|
if (jslogContext) {
|
|
@@ -1182,11 +1182,17 @@ export class CheckboxLabel extends HTMLElement {
|
|
|
1182
1182
|
}
|
|
1183
1183
|
if (title !== undefined) {
|
|
1184
1184
|
element.#textElement.textContent = title;
|
|
1185
|
-
element.#checkboxElement.title = title;
|
|
1186
1185
|
if (subtitle !== undefined) {
|
|
1187
1186
|
element.#textElement.createChild('div', 'devtools-checkbox-subtitle').textContent = subtitle;
|
|
1188
1187
|
}
|
|
1189
1188
|
}
|
|
1189
|
+
// checkboxElement tooltip: tooltip first, then title (custom tooltip takes precedence for the input)
|
|
1190
|
+
const inputTooltip = tooltip ?? title;
|
|
1191
|
+
if (inputTooltip) {
|
|
1192
|
+
element.#checkboxElement.title = inputTooltip;
|
|
1193
|
+
// Set aria-description for screen reader announcement
|
|
1194
|
+
element.#checkboxElement.setAttribute('aria-description', inputTooltip);
|
|
1195
|
+
}
|
|
1190
1196
|
element.#checkboxElement.classList.toggle('small', small);
|
|
1191
1197
|
return element;
|
|
1192
1198
|
}
|
|
@@ -2069,7 +2075,7 @@ export class HTMLElementWithLightDOMTemplate extends HTMLElement {
|
|
|
2069
2075
|
HTMLElementWithLightDOMTemplate.patchLitTemplate(value);
|
|
2070
2076
|
return value;
|
|
2071
2077
|
}
|
|
2072
|
-
if (Array.isArray(value)) {
|
|
2078
|
+
if (Array.isArray(value) || value instanceof Iterator) {
|
|
2073
2079
|
return value.map(patchValue);
|
|
2074
2080
|
}
|
|
2075
2081
|
|
|
@@ -2187,13 +2193,29 @@ export const bindCheckboxImpl = function(
|
|
|
2187
2193
|
};
|
|
2188
2194
|
};
|
|
2189
2195
|
|
|
2196
|
+
export type BindToSettingOpts = ((newSettingValue: string) => boolean)|{
|
|
2197
|
+
validator?: (newSettingValue: string) => boolean,
|
|
2198
|
+
jslog?: boolean,
|
|
2199
|
+
};
|
|
2190
2200
|
export const bindToSetting =
|
|
2191
2201
|
(settingOrName: string|Common.Settings.Setting<boolean|string>|Common.Settings.RegExpSetting,
|
|
2192
|
-
|
|
2202
|
+
optionsOrValidator?: BindToSettingOpts): ReturnType<typeof Directives.ref> => {
|
|
2193
2203
|
const setting = typeof settingOrName === 'string' ?
|
|
2194
2204
|
Common.Settings.Settings.instance().moduleSetting(settingOrName) :
|
|
2195
2205
|
settingOrName;
|
|
2196
2206
|
|
|
2207
|
+
let stringValidator: ((newSettingValue: string) => boolean)|undefined;
|
|
2208
|
+
let jslog = true;
|
|
2209
|
+
if (typeof optionsOrValidator === 'function') {
|
|
2210
|
+
stringValidator = optionsOrValidator;
|
|
2211
|
+
} else if (optionsOrValidator) {
|
|
2212
|
+
stringValidator = optionsOrValidator.validator;
|
|
2213
|
+
if (optionsOrValidator.jslog !== undefined) {
|
|
2214
|
+
jslog = optionsOrValidator.jslog;
|
|
2215
|
+
}
|
|
2216
|
+
}
|
|
2217
|
+
|
|
2218
|
+
const jslogBuilder = jslog ? VisualLogging.toggle(setting.name).track({change: true}) : null;
|
|
2197
2219
|
// We can't use `setValue` as the change listener directly, otherwise we won't
|
|
2198
2220
|
// be able to remove it again.
|
|
2199
2221
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -2208,6 +2230,9 @@ export const bindToSetting =
|
|
|
2208
2230
|
setting.removeChangeListener(settingChanged);
|
|
2209
2231
|
return;
|
|
2210
2232
|
}
|
|
2233
|
+
if (jslogBuilder) {
|
|
2234
|
+
e.setAttribute('jslog', jslogBuilder.toString());
|
|
2235
|
+
}
|
|
2211
2236
|
|
|
2212
2237
|
setting.addChangeListener(settingChanged);
|
|
2213
2238
|
setValue =
|
|
@@ -2223,6 +2248,9 @@ export const bindToSetting =
|
|
|
2223
2248
|
return;
|
|
2224
2249
|
}
|
|
2225
2250
|
|
|
2251
|
+
if (jslogBuilder) {
|
|
2252
|
+
e.setAttribute('jslog', jslogBuilder.toString());
|
|
2253
|
+
}
|
|
2226
2254
|
setting.addChangeListener(settingChanged);
|
|
2227
2255
|
setValue = bindInput(e as HTMLInputElement, setting.set.bind(setting), (value: string) => {
|
|
2228
2256
|
try {
|
|
@@ -2243,6 +2271,9 @@ export const bindToSetting =
|
|
|
2243
2271
|
return;
|
|
2244
2272
|
}
|
|
2245
2273
|
|
|
2274
|
+
if (jslogBuilder) {
|
|
2275
|
+
e.setAttribute('jslog', jslogBuilder.toString());
|
|
2276
|
+
}
|
|
2246
2277
|
setting.addChangeListener(settingChanged);
|
|
2247
2278
|
setValue = bindInput(
|
|
2248
2279
|
e as HTMLInputElement, setting.set.bind(setting), stringValidator ?? (() => true), /* numeric */ false);
|
|
@@ -96,7 +96,7 @@ function populateContextMenu(link: Element, event: Event): void {
|
|
|
96
96
|
}
|
|
97
97
|
|
|
98
98
|
// TODO(crbug.com/456517732): remove when all usages of runtimeStackTrace are migrated.
|
|
99
|
-
|
|
99
|
+
function buildStackTraceRowsForLegacyRuntimeStackTrace(
|
|
100
100
|
stackTrace: Protocol.Runtime.StackTrace,
|
|
101
101
|
target: SDK.Target.Target|null,
|
|
102
102
|
linkifier: Linkifier,
|
|
@@ -159,7 +159,7 @@ export function buildStackTraceRowsForLegacyRuntimeStackTrace(
|
|
|
159
159
|
return stackTraceRows;
|
|
160
160
|
}
|
|
161
161
|
|
|
162
|
-
|
|
162
|
+
function buildStackTraceRows(
|
|
163
163
|
stackTrace: StackTrace.StackTrace.StackTrace,
|
|
164
164
|
target: SDK.Target.Target|null,
|
|
165
165
|
linkifier: Linkifier,
|
|
@@ -189,14 +189,9 @@ export function buildStackTraceRows(
|
|
|
189
189
|
inlineFrameIndex: 0,
|
|
190
190
|
revealBreakpoint: previousStackFrameWasBreakpointCondition,
|
|
191
191
|
});
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
link.addEventListener('contextmenu', populateContextMenu.bind(null, link));
|
|
192
|
+
link.setAttribute('jslog', `${VisualLogging.link('stack-trace').track({click: true})}`);
|
|
193
|
+
link.addEventListener('contextmenu', populateContextMenu.bind(null, link));
|
|
195
194
|
|
|
196
|
-
if (!link.textContent) {
|
|
197
|
-
link.textContent = i18nString(UIStrings.unknownSource);
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
195
|
stackTraceRows.push({functionName, link});
|
|
201
196
|
previousStackFrameWasBreakpointCondition = [
|
|
202
197
|
SDK.DebuggerModel.COND_BREAKPOINT_SOURCE_URL,
|
|
@@ -306,12 +301,12 @@ export interface Options {
|
|
|
306
301
|
expandable?: boolean;
|
|
307
302
|
}
|
|
308
303
|
|
|
309
|
-
|
|
304
|
+
interface StackTraceRegularRow {
|
|
310
305
|
functionName: string;
|
|
311
306
|
link: HTMLElement|null;
|
|
312
307
|
}
|
|
313
308
|
|
|
314
|
-
|
|
309
|
+
interface StackTraceAsyncRow {
|
|
315
310
|
asyncDescription: string;
|
|
316
311
|
}
|
|
317
312
|
|
|
@@ -345,8 +345,7 @@ export class Linkifier extends Common.ObjectWrapper.ObjectWrapper<EventTypes> im
|
|
|
345
345
|
}
|
|
346
346
|
|
|
347
347
|
maybeLinkifyStackTraceFrame(
|
|
348
|
-
target: SDK.Target.Target|null, frame: StackTrace.StackTrace.Frame, options?: LinkifyOptions): HTMLElement
|
|
349
|
-
let fallbackAnchor: HTMLElement|null = null;
|
|
348
|
+
target: SDK.Target.Target|null, frame: StackTrace.StackTrace.Frame, options?: LinkifyOptions): HTMLElement {
|
|
350
349
|
const linkifyURLOptions: LinkifyURLOptions = {
|
|
351
350
|
...options,
|
|
352
351
|
lineNumber: frame.line,
|
|
@@ -361,10 +360,8 @@ export class Linkifier extends Common.ObjectWrapper.ObjectWrapper<EventTypes> im
|
|
|
361
360
|
omitOrigin: options?.omitOrigin,
|
|
362
361
|
};
|
|
363
362
|
const {className = ''} = linkifyURLOptions;
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
}
|
|
367
|
-
if (!target || target.isDisposed()) {
|
|
363
|
+
const fallbackAnchor = Linkifier.linkifyURL(frame.url as Platform.DevToolsPath.UrlString, linkifyURLOptions);
|
|
364
|
+
if (!target || target.isDisposed() || !frame.uiSourceCode) {
|
|
368
365
|
return fallbackAnchor;
|
|
369
366
|
}
|
|
370
367
|
|
|
@@ -383,7 +380,7 @@ export class Linkifier extends Common.ObjectWrapper.ObjectWrapper<EventTypes> im
|
|
|
383
380
|
revealBreakpoint: options?.revealBreakpoint,
|
|
384
381
|
};
|
|
385
382
|
|
|
386
|
-
const uiLocation = frame.uiSourceCode
|
|
383
|
+
const uiLocation = frame.uiSourceCode.uiLocation(frame.line, frame.column) ?? null;
|
|
387
384
|
this.updateAnchorFromUILocation(link, linkDisplayOptions, uiLocation);
|
|
388
385
|
|
|
389
386
|
const anchors = (this.anchorsByTarget.get(target) as Element[]);
|
|
@@ -1271,6 +1271,7 @@ export const knownContextValues = new Set([
|
|
|
1271
1271
|
'device-bound-sessions-empty',
|
|
1272
1272
|
'device-bound-sessions-preserve-log',
|
|
1273
1273
|
'device-bound-sessions-request',
|
|
1274
|
+
'device-bound-sessions-root',
|
|
1274
1275
|
'device-fold',
|
|
1275
1276
|
'device-frame-enable',
|
|
1276
1277
|
'device-mode',
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
# The provider's client metadata endpoint cannot be found.
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
# Provider's client metadata is invalid.
|
package/front_end/models/issues_manager/descriptions/federatedAuthRequestClientMetadataNoResponse.md
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
# The response body is empty when fetching the provider's client metadata.
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright 2015 The Chromium Authors
|
|
3
|
-
* Use of this source code is governed by a BSD-style license that can be
|
|
4
|
-
* found in the LICENSE file.
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
.styles-sidebar-pane-toolbar {
|
|
8
|
-
border-bottom: 1px solid var(--sys-color-divider);
|
|
9
|
-
flex-shrink: 0;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
.styles-sidebar-computed-style-widget {
|
|
13
|
-
min-height: auto;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
.styles-pane-toolbar {
|
|
17
|
-
width: 100%;
|
|
18
|
-
}
|