chrome-devtools-frontend 1.0.1576915 → 1.0.1578486
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/sdk/DebuggerModel.ts +0 -34
- package/front_end/core/sdk/HeapProfilerModel.ts +7 -1
- package/front_end/generated/InspectorBackendCommands.ts +5 -4
- package/front_end/generated/SupportedCSSProperties.js +5 -8
- package/front_end/generated/protocol-mapping.d.ts +9 -0
- package/front_end/generated/protocol-proxy-api.d.ts +7 -0
- package/front_end/generated/protocol.ts +18 -2
- package/front_end/models/ai_assistance/agents/ContextSelectionAgent.ts +9 -7
- package/front_end/models/bindings/DebuggerLanguagePlugins.ts +0 -24
- package/front_end/models/bindings/DebuggerWorkspaceBinding.ts +0 -52
- package/front_end/models/stack_trace/StackTrace.ts +3 -9
- package/front_end/models/workspace/WorkspaceImpl.ts +1 -1
- package/front_end/panels/accessibility/AXBreadcrumbsPane.ts +3 -5
- package/front_end/panels/ai_assistance/components/ChatMessage.ts +4 -7
- package/front_end/panels/ai_assistance/components/ChatView.ts +1 -1
- package/front_end/panels/animation/AnimationGroupPreviewUI.ts +1 -1
- package/front_end/panels/application/DeviceBoundSessionsView.ts +76 -51
- package/front_end/panels/application/ServiceWorkerUpdateCycleView.ts +0 -1
- package/front_end/panels/application/components/BackForwardCacheView.ts +2 -4
- package/front_end/panels/autofill/AutofillView.ts +1 -1
- package/front_end/panels/browser_debugger/XHRBreakpointsSidebarPane.ts +0 -1
- package/front_end/panels/common/GeminiRebrandPromoDialog.ts +2 -0
- package/front_end/panels/console/ConsoleViewMessage.ts +0 -1
- package/front_end/panels/css_overview/cssOverviewCompletedView.css +5 -0
- package/front_end/panels/elements/ElementsTreeElement.ts +0 -1
- package/front_end/panels/elements/LayoutPane.ts +7 -8
- package/front_end/panels/elements/components/ElementsBreadcrumbs.ts +1 -1
- package/front_end/panels/elements/components/StylePropertyEditor.ts +1 -2
- package/front_end/panels/lighthouse/LighthouseReportRenderer.ts +1 -1
- package/front_end/panels/linear_memory_inspector/components/LinearMemoryValueInterpreter.ts +1 -1
- package/front_end/panels/linear_memory_inspector/components/ValueInterpreterDisplay.ts +1 -1
- package/front_end/panels/media/PlayerListView.ts +1 -1
- package/front_end/panels/network/NetworkLogViewColumns.ts +1 -2
- package/front_end/panels/network/components/RequestHeaderSection.ts +1 -1
- package/front_end/panels/protocol_monitor/JSONEditor.ts +1 -1
- package/front_end/panels/recorder/components/RecordingListView.ts +1 -1
- package/front_end/panels/recorder/components/RecordingView.ts +15 -0
- package/front_end/panels/recorder/components/StepEditor.ts +3 -3
- package/front_end/panels/settings/KeybindsSettingsTab.ts +1 -2
- package/front_end/panels/settings/keybindsSettingsTab.css +57 -0
- package/front_end/panels/sources/CallStackSidebarPane.ts +74 -175
- package/front_end/panels/sources/DebuggerPlugin.ts +2 -2
- package/front_end/panels/sources/components/HeadersView.ts +2 -2
- package/front_end/panels/timeline/components/BreadcrumbsUI.ts +1 -1
- package/front_end/panels/timeline/components/SidebarAnnotationsTab.ts +1 -1
- package/front_end/third_party/chromium/README.chromium +1 -1
- package/front_end/ui/components/suggestion_input/SuggestionInput.ts +12 -7
- package/front_end/ui/components/tree_outline/TreeOutline.ts +1 -1
- package/front_end/ui/legacy/ListControl.ts +1 -2
- package/front_end/ui/legacy/ListWidget.ts +1 -1
- package/front_end/ui/legacy/SoftContextMenu.ts +1 -2
- package/front_end/ui/legacy/Treeoutline.ts +0 -1
- package/front_end/ui/legacy/components/data_grid/DataGrid.ts +2 -4
- package/front_end/ui/legacy/components/quick_open/FilteredListWidget.ts +1 -1
- package/front_end/ui/visual_logging/Debugging.ts +2 -0
- package/package.json +1 -1
|
@@ -34,10 +34,8 @@ import * as Host from '../../core/host/host.js';
|
|
|
34
34
|
import * as i18n from '../../core/i18n/i18n.js';
|
|
35
35
|
import * as Platform from '../../core/platform/platform.js';
|
|
36
36
|
import * as SDK from '../../core/sdk/sdk.js';
|
|
37
|
-
import type * as Protocol from '../../generated/protocol.js';
|
|
38
37
|
import * as Bindings from '../../models/bindings/bindings.js';
|
|
39
38
|
import * as Persistence from '../../models/persistence/persistence.js';
|
|
40
|
-
import * as SourceMapScopes from '../../models/source_map_scopes/source_map_scopes.js';
|
|
41
39
|
import * as StackTrace from '../../models/stack_trace/stack_trace.js';
|
|
42
40
|
import * as Workspace from '../../models/workspace/workspace.js';
|
|
43
41
|
import {Icon} from '../../ui/kit/kit.js';
|
|
@@ -116,14 +114,12 @@ export class CallStackSidebarPane extends UI.View.SimpleView implements UI.Conte
|
|
|
116
114
|
private list: UI.ListControl.ListControl<Item>;
|
|
117
115
|
private readonly showMoreMessageElement: Element;
|
|
118
116
|
private showIgnoreListed = false;
|
|
119
|
-
private readonly locationPool = new Bindings.LiveLocation.LiveLocationPool();
|
|
120
117
|
private maxAsyncStackChainDepth = defaultMaxAsyncStackChainDepth;
|
|
121
118
|
private readonly updateItemThrottler = new Common.Throttler.Throttler(100);
|
|
122
119
|
private readonly scheduledForUpdateItems = new Set<Item>();
|
|
123
120
|
private muteActivateItem?: boolean;
|
|
124
|
-
private lastDebuggerModel: SDK.DebuggerModel.DebuggerModel|null = null;
|
|
125
121
|
|
|
126
|
-
#
|
|
122
|
+
#stackTrace: StackTrace.StackTrace.DebuggableStackTrace|null = null;
|
|
127
123
|
|
|
128
124
|
private constructor() {
|
|
129
125
|
super({
|
|
@@ -194,9 +190,6 @@ export class CallStackSidebarPane extends UI.View.SimpleView implements UI.Conte
|
|
|
194
190
|
this.showMoreMessageElement = showMoreRef.value as HTMLElement;
|
|
195
191
|
|
|
196
192
|
this.requestUpdate();
|
|
197
|
-
|
|
198
|
-
SDK.TargetManager.TargetManager.instance().addModelListener(
|
|
199
|
-
SDK.DebuggerModel.DebuggerModel, SDK.DebuggerModel.Events.DebugInfoAttached, this.debugInfoAttached, this);
|
|
200
193
|
}
|
|
201
194
|
|
|
202
195
|
static instance(opts: {
|
|
@@ -210,45 +203,30 @@ export class CallStackSidebarPane extends UI.View.SimpleView implements UI.Conte
|
|
|
210
203
|
return callstackSidebarPaneInstance;
|
|
211
204
|
}
|
|
212
205
|
|
|
213
|
-
flavorChanged(details: SDK.DebuggerModel.DebuggerPausedDetails|null): void {
|
|
206
|
+
async flavorChanged(details: SDK.DebuggerModel.DebuggerPausedDetails|null): Promise<void> {
|
|
214
207
|
this.showIgnoreListed = false;
|
|
215
208
|
this.ignoreListCheckboxElement.checked = false;
|
|
216
209
|
this.maxAsyncStackChainDepth = defaultMaxAsyncStackChainDepth;
|
|
217
|
-
this.#details = details;
|
|
218
|
-
this.setSourceMapSubscription(details?.debuggerModel ?? null);
|
|
219
210
|
|
|
220
|
-
this
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
this.requestUpdate();
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
private setSourceMapSubscription(debuggerModel: SDK.DebuggerModel.DebuggerModel|null): void {
|
|
228
|
-
// Shortcut for the case when we are listening to the same model.
|
|
229
|
-
if (this.lastDebuggerModel === debuggerModel) {
|
|
230
|
-
return;
|
|
211
|
+
if (this.#stackTrace) {
|
|
212
|
+
this.#stackTrace.removeEventListener(StackTrace.StackTrace.Events.UPDATED, this.requestUpdate, this);
|
|
213
|
+
this.#stackTrace = null;
|
|
214
|
+
this.requestUpdate(); // In case creating the stack trace takes a while, we render an empty view first.
|
|
231
215
|
}
|
|
232
216
|
|
|
233
|
-
if (
|
|
234
|
-
this.
|
|
235
|
-
|
|
217
|
+
if (details) {
|
|
218
|
+
this.#stackTrace = await Bindings.DebuggerWorkspaceBinding.DebuggerWorkspaceBinding.instance()
|
|
219
|
+
.createStackTraceFromDebuggerPaused(details, details.debuggerModel.target());
|
|
220
|
+
this.#stackTrace.addEventListener(StackTrace.StackTrace.Events.UPDATED, this.requestUpdate, this);
|
|
236
221
|
}
|
|
237
222
|
|
|
238
|
-
this.
|
|
239
|
-
if (this.lastDebuggerModel) {
|
|
240
|
-
this.lastDebuggerModel.sourceMapManager().addEventListener(
|
|
241
|
-
SDK.SourceMapManager.Events.SourceMapAttached, this.debugInfoAttached, this);
|
|
242
|
-
}
|
|
223
|
+
this.requestUpdate();
|
|
243
224
|
}
|
|
244
225
|
|
|
245
|
-
override
|
|
246
|
-
this.locationPool.disposeAll();
|
|
247
|
-
|
|
226
|
+
override performUpdate(): void {
|
|
248
227
|
this.callFrameWarningsElement.classList.add('hidden');
|
|
249
228
|
|
|
250
|
-
|
|
251
|
-
if (!details) {
|
|
229
|
+
if (!this.#stackTrace) {
|
|
252
230
|
this.notPausedMessageElement.classList.remove('hidden');
|
|
253
231
|
this.ignoreListMessageElement.classList.add('hidden');
|
|
254
232
|
this.showMoreMessageElement.classList.add('hidden');
|
|
@@ -260,39 +238,38 @@ export class CallStackSidebarPane extends UI.View.SimpleView implements UI.Conte
|
|
|
260
238
|
|
|
261
239
|
this.notPausedMessageElement.classList.add('hidden');
|
|
262
240
|
|
|
263
|
-
const
|
|
241
|
+
const items: Item[] = [];
|
|
264
242
|
const uniqueWarnings = new Set<string>();
|
|
265
|
-
for (const frame of
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
if (frame.missingDebugInfoDetails) {
|
|
270
|
-
uniqueWarnings.add(convertMissingDebugInfo(frame.missingDebugInfoDetails, frame.functionName).details);
|
|
243
|
+
for (const frame of this.#stackTrace.syncFragment.frames) {
|
|
244
|
+
items.push(Item.createForDebuggableFrame(frame));
|
|
245
|
+
if (frame.missingDebugInfo) {
|
|
246
|
+
uniqueWarnings.add(convertMissingDebugInfo(frame.missingDebugInfo, frame.sdkFrame.functionName).details);
|
|
271
247
|
}
|
|
272
248
|
}
|
|
273
|
-
|
|
249
|
+
|
|
274
250
|
if (uniqueWarnings.size) {
|
|
275
251
|
this.callFrameWarningsElement.classList.remove('hidden');
|
|
276
252
|
UI.Tooltip.Tooltip.install(this.callFrameWarningsElement, Array.from(uniqueWarnings).join('\n'));
|
|
277
253
|
}
|
|
278
254
|
|
|
279
|
-
let previousStackTrace: Protocol.Runtime.CallFrame[]|SDK.DebuggerModel.CallFrame[] = details.callFrames;
|
|
280
255
|
let {maxAsyncStackChainDepth} = this;
|
|
281
|
-
let
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
256
|
+
let hasMore = false;
|
|
257
|
+
let previousFragment: StackTrace.StackTrace.Fragment = this.#stackTrace.syncFragment;
|
|
258
|
+
for (const asyncFragment of this.#stackTrace.asyncFragments) {
|
|
259
|
+
items.push(Item.createForAsyncHeader(asyncFragment, previousFragment));
|
|
260
|
+
for (const frame of asyncFragment.frames) {
|
|
261
|
+
items.push(Item.createForFrame(frame));
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
previousFragment = asyncFragment;
|
|
289
265
|
|
|
290
266
|
if (--maxAsyncStackChainDepth <= 0) {
|
|
267
|
+
hasMore = asyncFragment !== this.#stackTrace.asyncFragments.at(-1);
|
|
291
268
|
break;
|
|
292
269
|
}
|
|
293
270
|
}
|
|
294
271
|
|
|
295
|
-
this.showMoreMessageElement.classList.toggle('hidden', !
|
|
272
|
+
this.showMoreMessageElement.classList.toggle('hidden', !hasMore);
|
|
296
273
|
this.items.replaceAll(items);
|
|
297
274
|
for (const item of this.items) {
|
|
298
275
|
this.refreshItem(item);
|
|
@@ -363,8 +340,8 @@ export class CallStackSidebarPane extends UI.View.SimpleView implements UI.Conte
|
|
|
363
340
|
UI.ARIAUtils.setDisabled(element, true);
|
|
364
341
|
}
|
|
365
342
|
}
|
|
366
|
-
const
|
|
367
|
-
|
|
343
|
+
const isSelected =
|
|
344
|
+
item.frame === UI.Context.Context.instance().flavor(StackTrace.StackTrace.DebuggableFrameFlavor)?.frame;
|
|
368
345
|
|
|
369
346
|
element.classList.toggle('selected', isSelected);
|
|
370
347
|
UI.ARIAUtils.setSelected(element, isSelected);
|
|
@@ -375,11 +352,12 @@ export class CallStackSidebarPane extends UI.View.SimpleView implements UI.Conte
|
|
|
375
352
|
element.appendChild(icon);
|
|
376
353
|
element.tabIndex = item === this.list.selectedItem() ? 0 : -1;
|
|
377
354
|
|
|
378
|
-
if (
|
|
355
|
+
if (item.frame?.missingDebugInfo) {
|
|
379
356
|
const icon = new Icon();
|
|
380
357
|
icon.name = 'warning-filled';
|
|
381
358
|
icon.classList.add('call-frame-warning-icon', 'small');
|
|
382
|
-
const {resources, details} =
|
|
359
|
+
const {resources, details} =
|
|
360
|
+
convertMissingDebugInfo(item.frame.missingDebugInfo, item.frame.sdkFrame.functionName);
|
|
383
361
|
const messages = resources.map(
|
|
384
362
|
r => i18nString(UIStrings.debugFileNotFound, {PH1: Common.ParsedURL.ParsedURL.extractName(r.resourceUrl)}));
|
|
385
363
|
UI.Tooltip.Tooltip.install(icon, [details, ...messages].join('\n'));
|
|
@@ -421,7 +399,7 @@ export class CallStackSidebarPane extends UI.View.SimpleView implements UI.Conte
|
|
|
421
399
|
return;
|
|
422
400
|
}
|
|
423
401
|
const contextMenu = new UI.ContextMenu.ContextMenu(event);
|
|
424
|
-
const debuggerCallFrame = item.frame;
|
|
402
|
+
const debuggerCallFrame = item.frame?.sdkFrame;
|
|
425
403
|
if (debuggerCallFrame) {
|
|
426
404
|
contextMenu.defaultSection().appendItem(i18nString(UIStrings.restartFrame), () => {
|
|
427
405
|
Host.userMetrics.actionTaken(Host.UserMetrics.Action.StackFrameRestarted);
|
|
@@ -444,17 +422,14 @@ export class CallStackSidebarPane extends UI.View.SimpleView implements UI.Conte
|
|
|
444
422
|
this.list.selectItem(item);
|
|
445
423
|
const debuggerCallFrame = item.frame;
|
|
446
424
|
const oldItem = this.activeCallFrameItem();
|
|
447
|
-
if (debuggerCallFrame
|
|
448
|
-
debuggerCallFrame.debuggerModel.setSelectedCallFrame(debuggerCallFrame);
|
|
449
|
-
UI.Context.Context.instance().setFlavor(SDK.DebuggerModel.CallFrame, debuggerCallFrame);
|
|
425
|
+
if (debuggerCallFrame) {
|
|
426
|
+
debuggerCallFrame.sdkFrame.debuggerModel.setSelectedCallFrame(debuggerCallFrame.sdkFrame);
|
|
427
|
+
UI.Context.Context.instance().setFlavor(SDK.DebuggerModel.CallFrame, debuggerCallFrame.sdkFrame);
|
|
450
428
|
UI.Context.Context.instance().setFlavor(
|
|
451
429
|
StackTrace.StackTrace.DebuggableFrameFlavor,
|
|
452
|
-
StackTrace.StackTrace.DebuggableFrameFlavor.for(
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
column: uiLocation.columnNumber ?? -1,
|
|
456
|
-
sdkFrame: debuggerCallFrame,
|
|
457
|
-
}));
|
|
430
|
+
StackTrace.StackTrace.DebuggableFrameFlavor.for(debuggerCallFrame));
|
|
431
|
+
}
|
|
432
|
+
if (oldItem !== item) {
|
|
458
433
|
if (oldItem) {
|
|
459
434
|
this.refreshItem(oldItem);
|
|
460
435
|
}
|
|
@@ -467,7 +442,7 @@ export class CallStackSidebarPane extends UI.View.SimpleView implements UI.Conte
|
|
|
467
442
|
activeCallFrameItem(): Item|null {
|
|
468
443
|
const callFrame = UI.Context.Context.instance().flavor(SDK.DebuggerModel.CallFrame);
|
|
469
444
|
if (callFrame) {
|
|
470
|
-
return this.items.find(callFrameItem => callFrameItem.frame === callFrame) || null;
|
|
445
|
+
return this.items.find(callFrameItem => callFrameItem.frame?.sdkFrame === callFrame) || null;
|
|
471
446
|
}
|
|
472
447
|
return null;
|
|
473
448
|
}
|
|
@@ -546,132 +521,56 @@ export class ActionDelegate implements UI.ActionRegistration.ActionDelegate {
|
|
|
546
521
|
}
|
|
547
522
|
|
|
548
523
|
export class Item {
|
|
549
|
-
isIgnoreListed
|
|
550
|
-
title
|
|
551
|
-
linkText
|
|
552
|
-
uiLocation: Workspace.UISourceCode.UILocation|null;
|
|
553
|
-
isAsyncHeader
|
|
554
|
-
|
|
524
|
+
isIgnoreListed = false;
|
|
525
|
+
title = '';
|
|
526
|
+
linkText = '';
|
|
527
|
+
uiLocation: Workspace.UISourceCode.UILocation|null = null;
|
|
528
|
+
isAsyncHeader = false;
|
|
529
|
+
|
|
555
530
|
/** Only set for synchronous frames */
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
updateDelegate: (arg0: Item) => void, list: UI.ListControl.ListControl<Item>): Promise<Item> {
|
|
562
|
-
const name = frame.functionName;
|
|
563
|
-
const item = new Item(UI.UIUtils.beautifyFunctionName(name), updateDelegate, frame, list);
|
|
564
|
-
await Bindings.DebuggerWorkspaceBinding.DebuggerWorkspaceBinding.instance().createCallFrameLiveLocation(
|
|
565
|
-
frame.location(), item.update.bind(item), locationPool);
|
|
566
|
-
void SourceMapScopes.NamesResolver.resolveDebuggerFrameFunctionName(frame).then(functionName => {
|
|
567
|
-
if (functionName && functionName !== name) {
|
|
568
|
-
// Just update the item's title and call the update delegate directly,
|
|
569
|
-
// instead of going through the update method below, since location
|
|
570
|
-
// didn't change.
|
|
571
|
-
item.title = functionName;
|
|
572
|
-
item.updateDelegate(item);
|
|
573
|
-
}
|
|
574
|
-
});
|
|
531
|
+
frame?: StackTrace.StackTrace.DebuggableFrame;
|
|
532
|
+
|
|
533
|
+
static createForDebuggableFrame(frame: StackTrace.StackTrace.DebuggableFrame): Item {
|
|
534
|
+
const item = Item.createForFrame(frame);
|
|
535
|
+
item.frame = frame;
|
|
575
536
|
return item;
|
|
576
537
|
}
|
|
577
538
|
|
|
578
|
-
static
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
asyncHeaderItem.isAsyncHeader = true;
|
|
586
|
-
|
|
587
|
-
const asyncFrameItems = [];
|
|
588
|
-
const liveLocationPromises = [];
|
|
589
|
-
for (const frame of frames) {
|
|
590
|
-
const item = new Item(UI.UIUtils.beautifyFunctionName(frame.functionName), update, undefined, list);
|
|
591
|
-
const rawLocation =
|
|
592
|
-
debuggerModel.createRawLocationByScriptId(frame.scriptId, frame.lineNumber, frame.columnNumber);
|
|
593
|
-
liveLocationPromises.push(
|
|
594
|
-
Bindings.DebuggerWorkspaceBinding.DebuggerWorkspaceBinding.instance().createCallFrameLiveLocation(
|
|
595
|
-
rawLocation, item.update.bind(item), locationPool));
|
|
596
|
-
void SourceMapScopes.NamesResolver.resolveProfileFrameFunctionName(frame, debuggerModel.target())
|
|
597
|
-
.then(functionName => {
|
|
598
|
-
if (functionName && functionName !== frame.functionName) {
|
|
599
|
-
item.title = functionName;
|
|
600
|
-
item.updateDelegate(item);
|
|
601
|
-
}
|
|
602
|
-
});
|
|
603
|
-
asyncFrameItems.push(item);
|
|
604
|
-
}
|
|
605
|
-
|
|
606
|
-
await Promise.all(liveLocationPromises);
|
|
607
|
-
updateDelegate(asyncHeaderItem);
|
|
608
|
-
|
|
609
|
-
return [asyncHeaderItem, ...asyncFrameItems];
|
|
610
|
-
|
|
611
|
-
function update(item: Item): void {
|
|
612
|
-
updateDelegate(item);
|
|
613
|
-
let shouldUpdate = false;
|
|
614
|
-
const items = headerItemToItemsSet.get(asyncHeaderItem);
|
|
615
|
-
if (items) {
|
|
616
|
-
if (item.isIgnoreListed) {
|
|
617
|
-
items.delete(item);
|
|
618
|
-
shouldUpdate = items.size === 0;
|
|
619
|
-
} else {
|
|
620
|
-
shouldUpdate = items.size === 0;
|
|
621
|
-
items.add(item);
|
|
622
|
-
}
|
|
623
|
-
asyncHeaderItem.isIgnoreListed = items.size === 0;
|
|
624
|
-
}
|
|
625
|
-
if (shouldUpdate) {
|
|
626
|
-
updateDelegate(asyncHeaderItem);
|
|
627
|
-
}
|
|
539
|
+
static createForFrame(frame: StackTrace.StackTrace.Frame): Item {
|
|
540
|
+
const item = new Item(UI.UIUtils.beautifyFunctionName(frame.name ?? ''));
|
|
541
|
+
const uiSourceCode = frame.uiSourceCode;
|
|
542
|
+
if (uiSourceCode) {
|
|
543
|
+
item.isIgnoreListed = uiSourceCode.isIgnoreListed() ?? false;
|
|
544
|
+
item.uiLocation = uiSourceCode.uiLocation(frame.line, frame.column);
|
|
545
|
+
item.linkText = item.uiLocation.linkText();
|
|
628
546
|
}
|
|
547
|
+
return item;
|
|
629
548
|
}
|
|
630
549
|
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
this.isAsyncHeader = false;
|
|
639
|
-
this.updateDelegate = updateDelegate;
|
|
640
|
-
this.frame = frame;
|
|
641
|
-
this.list = list;
|
|
550
|
+
static createForAsyncHeader(
|
|
551
|
+
fragment: StackTrace.StackTrace.AsyncFragment, previousFragment: StackTrace.StackTrace.Fragment): Item {
|
|
552
|
+
const description = UI.UIUtils.asyncStackTraceLabel(
|
|
553
|
+
fragment.description, previousFragment.frames.map(f => ({functionName: f.name ?? ''})));
|
|
554
|
+
const item = new Item(description);
|
|
555
|
+
item.isAsyncHeader = true;
|
|
556
|
+
return item;
|
|
642
557
|
}
|
|
643
558
|
|
|
644
|
-
private
|
|
645
|
-
|
|
646
|
-
this.isIgnoreListed = Boolean(uiLocation?.isIgnoreListed());
|
|
647
|
-
this.linkText = uiLocation ? uiLocation.linkText() : '';
|
|
648
|
-
this.uiLocation = uiLocation;
|
|
649
|
-
|
|
650
|
-
if (this.frame && uiLocation && this === this.list.selectedItem()) {
|
|
651
|
-
UI.Context.Context.instance().setFlavor(
|
|
652
|
-
StackTrace.StackTrace.DebuggableFrameFlavor,
|
|
653
|
-
StackTrace.StackTrace.DebuggableFrameFlavor.for({
|
|
654
|
-
uiSourceCode: uiLocation.uiSourceCode,
|
|
655
|
-
line: uiLocation.lineNumber,
|
|
656
|
-
column: uiLocation.columnNumber ?? -1,
|
|
657
|
-
sdkFrame: this.frame,
|
|
658
|
-
}));
|
|
659
|
-
}
|
|
660
|
-
|
|
661
|
-
this.updateDelegate(this);
|
|
559
|
+
private constructor(title: string) {
|
|
560
|
+
this.title = title;
|
|
662
561
|
}
|
|
663
562
|
}
|
|
664
563
|
|
|
665
564
|
export function convertMissingDebugInfo(
|
|
666
|
-
missingDebugInfo:
|
|
565
|
+
missingDebugInfo: StackTrace.StackTrace.MissingDebugInfo, functionName: string|undefined):
|
|
667
566
|
{details: Platform.UIString.LocalizedString, resources: SDK.DebuggerModel.MissingDebugFiles[]} {
|
|
668
567
|
switch (missingDebugInfo.type) {
|
|
669
|
-
case
|
|
568
|
+
case StackTrace.StackTrace.MissingDebugInfoType.PARTIAL_INFO:
|
|
670
569
|
return {
|
|
671
570
|
details: i18nString(UIStrings.debugSymbolsIncomplete, {PH1: functionName ?? ''}),
|
|
672
571
|
resources: missingDebugInfo.missingDebugFiles
|
|
673
572
|
};
|
|
674
|
-
case
|
|
573
|
+
case StackTrace.StackTrace.MissingDebugInfoType.NO_INFO:
|
|
675
574
|
return {
|
|
676
575
|
details: i18nString(UIStrings.failedToLoadDebugSymbolsForFunction, {PH1: functionName ?? ''}),
|
|
677
576
|
resources: []
|
|
@@ -1661,9 +1661,9 @@ export class DebuggerPlugin extends Plugin {
|
|
|
1661
1661
|
const uiLocation = new Workspace.UISourceCode.UILocation(
|
|
1662
1662
|
frameFlavor.frame.uiSourceCode, frameFlavor.frame.line, frameFlavor.frame.column);
|
|
1663
1663
|
this.setExecutionLocation(uiLocation);
|
|
1664
|
-
if (frameFlavor.
|
|
1664
|
+
if (frameFlavor.frame.missingDebugInfo) {
|
|
1665
1665
|
this.updateMissingDebugInfoInfobar(
|
|
1666
|
-
convertMissingDebugInfo(frameFlavor.
|
|
1666
|
+
convertMissingDebugInfo(frameFlavor.frame.missingDebugInfo, frameFlavor.sdkFrame.functionName));
|
|
1667
1667
|
} else {
|
|
1668
1668
|
this.updateMissingDebugInfoInfobar(null);
|
|
1669
1669
|
}
|
|
@@ -404,7 +404,7 @@ export class HeadersViewComponent extends HTMLElement {
|
|
|
404
404
|
// clang-format off
|
|
405
405
|
return html`
|
|
406
406
|
<div class="row" data-block-index=${blockIndex}
|
|
407
|
-
jslog=${VisualLogging.treeItem(pattern === '*' ? pattern : undefined)
|
|
407
|
+
jslog=${VisualLogging.treeItem(pattern === '*' ? pattern : undefined)}>
|
|
408
408
|
<div>${i18n.i18n.lockedString('Apply to')}</div>
|
|
409
409
|
<div class="separator">:</div>
|
|
410
410
|
${this.#renderEditable(pattern, 'apply-to')}
|
|
@@ -427,7 +427,7 @@ export class HeadersViewComponent extends HTMLElement {
|
|
|
427
427
|
// clang-format off
|
|
428
428
|
return html`
|
|
429
429
|
<div class="row padded" data-block-index=${blockIndex} data-header-index=${headerIndex}
|
|
430
|
-
jslog=${VisualLogging.treeItem(header.name).parent('headers-editor-row-parent')
|
|
430
|
+
jslog=${VisualLogging.treeItem(header.name).parent('headers-editor-row-parent')}>
|
|
431
431
|
${this.#renderEditable(header.name, 'header-name red', true)}
|
|
432
432
|
<div class="separator">:</div>
|
|
433
433
|
${this.#renderEditable(header.value, 'header-value')}
|
|
@@ -111,7 +111,7 @@ export class BreadcrumbsUI extends HTMLElement {
|
|
|
111
111
|
// clang-format off
|
|
112
112
|
return html`
|
|
113
113
|
<div class="breadcrumb" @contextmenu=${(event: Event) => this.#onContextMenu(event, breadcrumb)} @click=${() => this.#activateBreadcrumb(breadcrumb)}
|
|
114
|
-
jslog=${VisualLogging.item('timeline.breadcrumb-select').track({click: true
|
|
114
|
+
jslog=${VisualLogging.item('timeline.breadcrumb-select').track({click: true})}>
|
|
115
115
|
<span class="${(breadcrumb === this.#activeBreadcrumb) ? 'active-breadcrumb' : ''} range">
|
|
116
116
|
${(index === 0) ?
|
|
117
117
|
`Full range (${i18n.TimeUtilities.preciseMillisToString(breadcrumbRange, 2)})` :
|
|
@@ -424,7 +424,7 @@ export const DEFAULT_VIEW: (input: SidebarAnnotationsTabViewInput, output: objec
|
|
|
424
424
|
@mouseout=${() => (annotation.type === 'ENTRY_LABEL') ? input.onAnnotationHoverOut() : null}
|
|
425
425
|
aria-label=${label}
|
|
426
426
|
tabindex="0"
|
|
427
|
-
jslog=${VisualLogging.item(`timeline.annotation-sidebar.annotation-${jslogForAnnotation(annotation)}`).track({click: true
|
|
427
|
+
jslog=${VisualLogging.item(`timeline.annotation-sidebar.annotation-${jslogForAnnotation(annotation)}`).track({click: true})}
|
|
428
428
|
>
|
|
429
429
|
<div class="annotation">
|
|
430
430
|
${renderAnnotationIdentifier(annotation, input.annotationEntryToColorMap)}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Name: Dependencies sourced from the upstream `chromium` repository
|
|
2
2
|
URL: https://chromium.googlesource.com/chromium/src
|
|
3
3
|
Version: N/A
|
|
4
|
-
Revision:
|
|
4
|
+
Revision: 646502f8c6f04517f8d3605c4a5a5fa20d0af6f5
|
|
5
5
|
Update Mechanism: Manual (https://crbug.com/428069060)
|
|
6
6
|
License: BSD-3-Clause
|
|
7
7
|
License File: LICENSE
|
|
@@ -217,16 +217,21 @@ class SuggestionBox extends LitElement {
|
|
|
217
217
|
return;
|
|
218
218
|
}
|
|
219
219
|
|
|
220
|
-
// clang-format off
|
|
221
220
|
return html`<style>${contentEditableStyles}</style><ul class="suggestions">
|
|
222
|
-
${this.#suggestions.map((suggestion, index) =>
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
221
|
+
${this.#suggestions.map((suggestion, index) => {
|
|
222
|
+
return html`<li
|
|
223
|
+
class=${classMap({
|
|
224
|
+
selected: index === this.cursor,
|
|
225
|
+
})}
|
|
226
|
+
@mousedown=${this.#dispatchSuggestEvent.bind(this, suggestion)}
|
|
227
|
+
jslog=${VisualLogging.item('suggestion').track({
|
|
228
|
+
click: true,
|
|
229
|
+
})}
|
|
230
|
+
>
|
|
226
231
|
${suggestion}
|
|
227
|
-
</li
|
|
232
|
+
</li>`;
|
|
233
|
+
})}
|
|
228
234
|
</ul>`;
|
|
229
|
-
// clang-format on
|
|
230
235
|
}
|
|
231
236
|
}
|
|
232
237
|
|
|
@@ -475,7 +475,7 @@ export class TreeOutline<TreeNodeDataType> extends HTMLElement {
|
|
|
475
475
|
aria-level=${depth + 1}
|
|
476
476
|
aria-posinset=${positionInSet + 1}
|
|
477
477
|
class=${listItemClasses}
|
|
478
|
-
jslog=${VisualLogging.treeItem(node.jslogContext).track({click: true,
|
|
478
|
+
jslog=${VisualLogging.treeItem(node.jslogContext).track({click: true, keydown: 'ArrowUp|ArrowDown|ArrowLeft|ArrowRight|Enter|Space|Home|End'})}
|
|
479
479
|
@click=${this.#onNodeClick}
|
|
480
480
|
track-dom-node-to-tree-node=${trackDOMNodeToTreeNode(this.#domNodeToTreeNodeMap, node)}
|
|
481
481
|
${Lit.Directives.ref(domNode => {
|
|
@@ -364,8 +364,7 @@ export class ListControl<T> {
|
|
|
364
364
|
element = this.delegate.createElementForItem(item);
|
|
365
365
|
if (!element.hasAttribute('jslog')) {
|
|
366
366
|
element.setAttribute(
|
|
367
|
-
'jslog',
|
|
368
|
-
`${VisualLogging.item().track({click: true, resize: true, keydown: 'ArrowUp|ArrowDown|PageUp|PageDown'})}`);
|
|
367
|
+
'jslog', `${VisualLogging.item().track({click: true, keydown: 'ArrowUp|ArrowDown|PageUp|PageDown'})}`);
|
|
369
368
|
}
|
|
370
369
|
this.itemToElement.set(item, element);
|
|
371
370
|
this.updateElementARIA(element, index);
|
|
@@ -150,7 +150,7 @@ export class ListWidget<T> extends VBox {
|
|
|
150
150
|
}
|
|
151
151
|
const content = this.delegate.renderItem(item, editable, this.#items.length - 1);
|
|
152
152
|
if (!content.hasAttribute('jslog')) {
|
|
153
|
-
element.setAttribute('jslog', `${VisualLogging.item()
|
|
153
|
+
element.setAttribute('jslog', `${VisualLogging.item()}`);
|
|
154
154
|
}
|
|
155
155
|
element.appendChild(content);
|
|
156
156
|
if (editable) {
|
|
@@ -335,8 +335,7 @@ export class SoftContextMenu {
|
|
|
335
335
|
menuItemElement.addEventListener('mouseleave', (this.menuItemMouseLeave.bind(this) as EventListener), false);
|
|
336
336
|
|
|
337
337
|
if (item.jslogContext) {
|
|
338
|
-
menuItemElement.setAttribute(
|
|
339
|
-
'jslog', `${VisualLogging.item(item.jslogContext).track({click: true, resize: true})}`);
|
|
338
|
+
menuItemElement.setAttribute('jslog', `${VisualLogging.item().context(item.jslogContext)}`);
|
|
340
339
|
}
|
|
341
340
|
return menuItemElement;
|
|
342
341
|
}
|
|
@@ -499,7 +499,6 @@ export class TreeElement {
|
|
|
499
499
|
this.listItemNode.setAttribute(
|
|
500
500
|
'jslog', `${VisualLogging.treeItem().parent('parentTreeItem').context(jslogContext).track({
|
|
501
501
|
click: true,
|
|
502
|
-
resize: true,
|
|
503
502
|
keydown: 'ArrowUp|ArrowDown|ArrowLeft|ArrowRight|Backspace|Delete|Enter|Space|Home|End',
|
|
504
503
|
})}`);
|
|
505
504
|
ARIAUtils.markAsTreeitem(this.listItemNode);
|
|
@@ -1762,10 +1762,8 @@ export class DataGridNode<T> {
|
|
|
1762
1762
|
|
|
1763
1763
|
protected createElement(): HTMLElement {
|
|
1764
1764
|
this.elementInternal = document.createElement('tr');
|
|
1765
|
-
this.elementInternal.setAttribute(
|
|
1766
|
-
|
|
1767
|
-
keydown: 'ArrowUp|ArrowDown|ArrowLeft|ArrowRight|Enter|Space'
|
|
1768
|
-
})}`);
|
|
1765
|
+
this.elementInternal.setAttribute(
|
|
1766
|
+
'jslog', `${VisualLogging.tableRow().track({keydown: 'ArrowUp|ArrowDown|ArrowLeft|ArrowRight|Enter|Space'})}`);
|
|
1769
1767
|
this.elementInternal.classList.add('data-grid-data-grid-node');
|
|
1770
1768
|
if (this.dataGrid) {
|
|
1771
1769
|
this.dataGrid.elementToDataGridNode.set(this.elementInternal, this);
|
|
@@ -280,7 +280,7 @@ export class FilteredListWidget extends Common.ObjectWrapper.eventMixin<EventTyp
|
|
|
280
280
|
if (this.provider) {
|
|
281
281
|
render(this.provider.renderItem(item, this.cleanValue()), wrapperElement);
|
|
282
282
|
wrapperElement.setAttribute(
|
|
283
|
-
'jslog', `${VisualLogging.item(this.provider.jslogContextAt(item)).track({click: true
|
|
283
|
+
'jslog', `${VisualLogging.item(this.provider.jslogContextAt(item)).track({click: true})}`);
|
|
284
284
|
}
|
|
285
285
|
UI.ARIAUtils.markAsOption(wrapperElement);
|
|
286
286
|
return wrapperElement;
|
|
@@ -839,6 +839,8 @@ function checkPendingEventExpectation(): void {
|
|
|
839
839
|
event.impressions = event.impressions.filter(impression => !matchedImpressions.has(impression));
|
|
840
840
|
}
|
|
841
841
|
}
|
|
842
|
+
pendingEventExpectation.missingEvents = pendingEventExpectation.missingEvents.filter(
|
|
843
|
+
event => !('impressions' in event) || event.impressions.length > 0);
|
|
842
844
|
return;
|
|
843
845
|
}
|
|
844
846
|
if (!compareVeEvents(actualEvents[i], expectedEvent)) {
|
package/package.json
CHANGED