chrome-devtools-frontend 1.0.1576287 → 1.0.1576915
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 +14 -4
- package/front_end/generated/SupportedCSSProperties.js +37 -0
- package/front_end/models/bindings/DebuggerLanguagePlugins.ts +37 -38
- package/front_end/models/javascript_metadata/NativeFunctions.js +8 -0
- package/front_end/models/stack_trace/StackTrace.ts +19 -18
- package/front_end/panels/accessibility/AXBreadcrumbsPane.ts +5 -3
- package/front_end/panels/ai_assistance/components/ChatMessage.ts +5 -1
- package/front_end/panels/animation/AnimationGroupPreviewUI.ts +1 -1
- package/front_end/panels/application/ServiceWorkerUpdateCycleView.ts +1 -0
- package/front_end/panels/application/components/BackForwardCacheView.ts +4 -2
- package/front_end/panels/autofill/AutofillView.ts +1 -1
- package/front_end/panels/browser_debugger/XHRBreakpointsSidebarPane.ts +1 -0
- package/front_end/panels/console/ConsoleViewMessage.ts +1 -0
- package/front_end/panels/elements/ElementsTreeElement.ts +1 -0
- package/front_end/panels/elements/LayoutPane.ts +8 -7
- package/front_end/panels/elements/components/ElementsBreadcrumbs.ts +1 -1
- package/front_end/panels/elements/components/StylePropertyEditor.ts +2 -1
- 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 +2 -1
- package/front_end/panels/network/RequestPayloadView.ts +42 -91
- package/front_end/panels/network/ShowMoreDetailsWidget.ts +96 -0
- package/front_end/panels/network/components/RequestHeaderSection.ts +1 -1
- package/front_end/panels/network/network.ts +2 -0
- 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/StepEditor.ts +3 -3
- package/front_end/panels/settings/KeybindsSettingsTab.ts +2 -1
- package/front_end/panels/sources/CallStackSidebarPane.ts +58 -11
- package/front_end/panels/sources/DebuggerPlugin.ts +19 -22
- package/front_end/panels/sources/SourcesPanel.ts +6 -24
- 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/report_view/ReportView.ts +2 -2
- package/front_end/ui/components/report_view/report.css +1 -0
- package/front_end/ui/components/suggestion_input/SuggestionInput.ts +7 -12
- package/front_end/ui/components/tree_outline/TreeOutline.ts +1 -1
- package/front_end/ui/legacy/ContextMenu.ts +12 -7
- package/front_end/ui/legacy/ListControl.ts +2 -1
- package/front_end/ui/legacy/ListWidget.ts +1 -1
- package/front_end/ui/legacy/SoftContextMenu.ts +2 -1
- package/front_end/ui/legacy/Treeoutline.ts +1 -0
- package/front_end/ui/legacy/components/data_grid/DataGrid.ts +4 -2
- package/front_end/ui/legacy/components/quick_open/FilteredListWidget.ts +1 -1
- package/front_end/ui/visual_logging/KnownContextValues.ts +1 -0
- package/package.json +1 -1
|
@@ -1186,11 +1186,21 @@ export interface MissingDebugFiles {
|
|
|
1186
1186
|
initiator: PageResourceLoadInitiator;
|
|
1187
1187
|
}
|
|
1188
1188
|
|
|
1189
|
-
export
|
|
1190
|
-
|
|
1191
|
-
|
|
1189
|
+
export const enum MissingDebugInfoType {
|
|
1190
|
+
/** No debug information at all for the call frame */
|
|
1191
|
+
NO_INFO = 'NO_INFO',
|
|
1192
|
+
|
|
1193
|
+
/** Some debug information available, but it references files with debug information we were not able to retrieve */
|
|
1194
|
+
PARTIAL_INFO = 'PARTIAL_INFO',
|
|
1192
1195
|
}
|
|
1193
1196
|
|
|
1197
|
+
export type MissingDebugInfo = {
|
|
1198
|
+
type: MissingDebugInfoType.NO_INFO,
|
|
1199
|
+
}|{
|
|
1200
|
+
type: MissingDebugInfoType.PARTIAL_INFO,
|
|
1201
|
+
missingDebugFiles: MissingDebugFiles[],
|
|
1202
|
+
};
|
|
1203
|
+
|
|
1194
1204
|
export class CallFrame {
|
|
1195
1205
|
debuggerModel: DebuggerModel;
|
|
1196
1206
|
readonly script: Script;
|
|
@@ -1202,7 +1212,7 @@ export class CallFrame {
|
|
|
1202
1212
|
readonly functionName: string;
|
|
1203
1213
|
readonly #functionLocation: Location|undefined;
|
|
1204
1214
|
#returnValue: RemoteObject|null;
|
|
1205
|
-
missingDebugInfoDetails:
|
|
1215
|
+
missingDebugInfoDetails: MissingDebugInfo|null;
|
|
1206
1216
|
readonly exception: RemoteObject|null;
|
|
1207
1217
|
|
|
1208
1218
|
readonly canBeRestarted: boolean;
|
|
@@ -499,6 +499,7 @@ export const generatedProperties = [
|
|
|
499
499
|
"font-variation-settings",
|
|
500
500
|
"font-weight",
|
|
501
501
|
"forced-color-adjust",
|
|
502
|
+
"frame-sizing",
|
|
502
503
|
"gap-rule-overlap",
|
|
503
504
|
"grid-auto-columns",
|
|
504
505
|
"grid-auto-flow",
|
|
@@ -518,6 +519,7 @@ export const generatedProperties = [
|
|
|
518
519
|
"hyphenate-character",
|
|
519
520
|
"hyphenate-limit-chars",
|
|
520
521
|
"hyphens",
|
|
522
|
+
"image-animation",
|
|
521
523
|
"image-orientation",
|
|
522
524
|
"image-rendering",
|
|
523
525
|
"inherits",
|
|
@@ -2597,6 +2599,16 @@ export const generatedProperties = [
|
|
|
2597
2599
|
],
|
|
2598
2600
|
"name": "forced-color-adjust"
|
|
2599
2601
|
},
|
|
2602
|
+
{
|
|
2603
|
+
"keywords": [
|
|
2604
|
+
"auto",
|
|
2605
|
+
"content-width",
|
|
2606
|
+
"content-height",
|
|
2607
|
+
"content-block-size",
|
|
2608
|
+
"content-inline-size"
|
|
2609
|
+
],
|
|
2610
|
+
"name": "frame-sizing"
|
|
2611
|
+
},
|
|
2600
2612
|
{
|
|
2601
2613
|
"longhands": [
|
|
2602
2614
|
"row-gap",
|
|
@@ -2779,6 +2791,15 @@ export const generatedProperties = [
|
|
|
2779
2791
|
],
|
|
2780
2792
|
"name": "hyphens"
|
|
2781
2793
|
},
|
|
2794
|
+
{
|
|
2795
|
+
"inherited": true,
|
|
2796
|
+
"keywords": [
|
|
2797
|
+
"normal",
|
|
2798
|
+
"running",
|
|
2799
|
+
"paused"
|
|
2800
|
+
],
|
|
2801
|
+
"name": "image-animation"
|
|
2802
|
+
},
|
|
2782
2803
|
{
|
|
2783
2804
|
"inherited": true,
|
|
2784
2805
|
"name": "image-orientation"
|
|
@@ -6034,6 +6055,15 @@ export const generatedPropertyValues = {
|
|
|
6034
6055
|
"preserve-parent-color"
|
|
6035
6056
|
]
|
|
6036
6057
|
},
|
|
6058
|
+
"frame-sizing": {
|
|
6059
|
+
"values": [
|
|
6060
|
+
"auto",
|
|
6061
|
+
"content-width",
|
|
6062
|
+
"content-height",
|
|
6063
|
+
"content-block-size",
|
|
6064
|
+
"content-inline-size"
|
|
6065
|
+
]
|
|
6066
|
+
},
|
|
6037
6067
|
"gap-rule-overlap": {
|
|
6038
6068
|
"values": [
|
|
6039
6069
|
"row-over-column",
|
|
@@ -6130,6 +6160,13 @@ export const generatedPropertyValues = {
|
|
|
6130
6160
|
"auto"
|
|
6131
6161
|
]
|
|
6132
6162
|
},
|
|
6163
|
+
"image-animation": {
|
|
6164
|
+
"values": [
|
|
6165
|
+
"normal",
|
|
6166
|
+
"running",
|
|
6167
|
+
"paused"
|
|
6168
|
+
]
|
|
6169
|
+
},
|
|
6133
6170
|
"image-rendering": {
|
|
6134
6171
|
"values": [
|
|
6135
6172
|
"auto",
|
|
@@ -58,16 +58,6 @@ const UIStrings = {
|
|
|
58
58
|
* @example {File not found} PH3
|
|
59
59
|
*/
|
|
60
60
|
failedToLoadDebugSymbolsFor: '[{PH1}] Failed to load debug symbols for {PH2} ({PH3})',
|
|
61
|
-
/**
|
|
62
|
-
* @description Error message that is displayed in UI debugging information cannot be found for a call frame
|
|
63
|
-
* @example {main} PH1
|
|
64
|
-
*/
|
|
65
|
-
failedToLoadDebugSymbolsForFunction: 'No debug information for function "{PH1}"',
|
|
66
|
-
/**
|
|
67
|
-
* @description Error message that is displayed in UI when a file needed for debugging information for a call frame is missing
|
|
68
|
-
* @example {mainp.debug.wasm.dwp} PH1
|
|
69
|
-
*/
|
|
70
|
-
debugSymbolsIncomplete: 'The debug information for function {PH1} is incomplete',
|
|
71
61
|
} as const;
|
|
72
62
|
const str_ = i18n.i18n.registerUIStrings('models/bindings/DebuggerLanguagePlugins.ts', UIStrings);
|
|
73
63
|
const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
|
|
@@ -508,14 +498,12 @@ export class DebuggerLanguagePluginManager implements
|
|
|
508
498
|
return functionInfo.frames.map(({name}, index) => callFrame.createVirtualCallFrame(index, name));
|
|
509
499
|
}
|
|
510
500
|
if ('missingSymbolFiles' in functionInfo && functionInfo.missingSymbolFiles.length) {
|
|
511
|
-
const resources = functionInfo.missingSymbolFiles;
|
|
512
|
-
const details = i18nString(UIStrings.debugSymbolsIncomplete, {PH1: callFrame.functionName});
|
|
513
|
-
callFrame.missingDebugInfoDetails = {details, resources};
|
|
514
|
-
} else {
|
|
515
501
|
callFrame.missingDebugInfoDetails = {
|
|
516
|
-
|
|
517
|
-
|
|
502
|
+
type: SDK.DebuggerModel.MissingDebugInfoType.PARTIAL_INFO,
|
|
503
|
+
missingDebugFiles: functionInfo.missingSymbolFiles,
|
|
518
504
|
};
|
|
505
|
+
} else {
|
|
506
|
+
callFrame.missingDebugInfoDetails = {type: SDK.DebuggerModel.MissingDebugInfoType.NO_INFO};
|
|
519
507
|
}
|
|
520
508
|
}
|
|
521
509
|
return callFrame;
|
|
@@ -792,26 +780,18 @@ export class DebuggerLanguagePluginManager implements
|
|
|
792
780
|
const rawLocation = new SDK.DebuggerModel.Location(
|
|
793
781
|
script.debuggerModel, script.scriptId, frame.lineNumber, frame.columnNumber, index);
|
|
794
782
|
const uiLocation = await this.rawLocationToUILocation(rawLocation);
|
|
795
|
-
return
|
|
796
|
-
uiSourceCode: uiLocation?.uiSourceCode,
|
|
797
|
-
url: uiLocation ? undefined : frame.url,
|
|
798
|
-
name,
|
|
799
|
-
line: uiLocation?.lineNumber ?? frame.lineNumber,
|
|
800
|
-
column: uiLocation?.columnNumber ?? frame.columnNumber,
|
|
801
|
-
};
|
|
783
|
+
return translatedFromUILocation(uiLocation, name, frame);
|
|
802
784
|
});
|
|
803
785
|
|
|
804
786
|
translatedFrames.push(await Promise.all(framePromises));
|
|
805
787
|
return true;
|
|
806
788
|
}
|
|
807
789
|
|
|
808
|
-
//
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
column: frame.columnNumber,
|
|
814
|
-
};
|
|
790
|
+
// Translate the location only. We go through via "DebuggerWorkspaceBinding". It'll still try the plugin
|
|
791
|
+
// first, but this way, we'll get a UISourceCode for the raw script if the plugin fails to translate.
|
|
792
|
+
const uiLocation = await this.#debuggerWorkspaceBinding.rawLocationToUILocation(
|
|
793
|
+
new SDK.DebuggerModel.Location(script.debuggerModel, script.scriptId, frame.lineNumber, frame.columnNumber));
|
|
794
|
+
const mappedFrame = translatedFromUILocation(uiLocation, frame.functionName, frame);
|
|
815
795
|
|
|
816
796
|
if ('missingSymbolFiles' in functionInfo && functionInfo.missingSymbolFiles.length) {
|
|
817
797
|
translatedFrames.push([{
|
|
@@ -831,6 +811,27 @@ export class DebuggerLanguagePluginManager implements
|
|
|
831
811
|
}
|
|
832
812
|
|
|
833
813
|
return true;
|
|
814
|
+
|
|
815
|
+
function translatedFromUILocation(
|
|
816
|
+
uiLocation: Workspace.UISourceCode.UILocation|null, name: string|undefined,
|
|
817
|
+
fallback: StackTraceImpl.Trie.RawFrame): (typeof translatedFrames)[number][number] {
|
|
818
|
+
if (uiLocation) {
|
|
819
|
+
return {
|
|
820
|
+
uiSourceCode: uiLocation.uiSourceCode,
|
|
821
|
+
url: undefined,
|
|
822
|
+
name,
|
|
823
|
+
line: uiLocation.lineNumber,
|
|
824
|
+
column: uiLocation.columnNumber ?? -1,
|
|
825
|
+
};
|
|
826
|
+
}
|
|
827
|
+
return {
|
|
828
|
+
uiSourceCode: undefined,
|
|
829
|
+
url: fallback.url,
|
|
830
|
+
name: fallback.functionName,
|
|
831
|
+
line: fallback.lineNumber,
|
|
832
|
+
column: fallback.columnNumber,
|
|
833
|
+
};
|
|
834
|
+
}
|
|
834
835
|
}
|
|
835
836
|
|
|
836
837
|
scriptsForUISourceCode(uiSourceCode: Workspace.UISourceCode.UISourceCode): SDK.Script.Script[] {
|
|
@@ -920,15 +921,13 @@ export class DebuggerLanguagePluginManager implements
|
|
|
920
921
|
// for the DebuggerModel again, which may disappear
|
|
921
922
|
// in the meantime...
|
|
922
923
|
void rawModuleHandle.addRawModulePromise.then(sourceFileURLs => {
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
modelData.addSourceFiles(script, sourceFileURLs);
|
|
929
|
-
void this.#debuggerWorkspaceBinding.updateLocations(script);
|
|
930
|
-
}
|
|
924
|
+
// The script might have disappeared meanwhile...
|
|
925
|
+
if (script.debuggerModel.scriptForId(script.scriptId) === script) {
|
|
926
|
+
const modelData = this.#debuggerModelToData.get(script.debuggerModel);
|
|
927
|
+
if (modelData && Array.isArray(sourceFileURLs)) { // The DebuggerModel could have disappeared meanwhile...
|
|
928
|
+
modelData.addSourceFiles(script, sourceFileURLs);
|
|
931
929
|
}
|
|
930
|
+
void this.#debuggerWorkspaceBinding.updateLocations(script);
|
|
932
931
|
}
|
|
933
932
|
});
|
|
934
933
|
return;
|
|
@@ -7137,10 +7137,18 @@ export const NativeFunctions = [
|
|
|
7137
7137
|
name: "intercept",
|
|
7138
7138
|
signatures: [["?options"]]
|
|
7139
7139
|
},
|
|
7140
|
+
{
|
|
7141
|
+
name: "deferPageSwap",
|
|
7142
|
+
signatures: [["options"]]
|
|
7143
|
+
},
|
|
7140
7144
|
{
|
|
7141
7145
|
name: "NavigationCurrentEntryChangeEvent",
|
|
7142
7146
|
signatures: [["type","eventInit"]]
|
|
7143
7147
|
},
|
|
7148
|
+
{
|
|
7149
|
+
name: "addRestoreCallback",
|
|
7150
|
+
signatures: [["callback"]]
|
|
7151
|
+
},
|
|
7144
7152
|
{
|
|
7145
7153
|
name: "addHandler",
|
|
7146
7154
|
signatures: [["handler"]]
|
|
@@ -65,29 +65,29 @@ export interface EventTypes {
|
|
|
65
65
|
|
|
66
66
|
/**
|
|
67
67
|
* A small wrapper around a DebuggableFrame usable as a UI.Context flavor.
|
|
68
|
-
* This is necessary as
|
|
69
|
-
*
|
|
68
|
+
* This is necessary as DebuggableFrame are just interfaces and the impl classes are hidden.
|
|
69
|
+
*
|
|
70
|
+
* Moreover, re-translation creates a new DebuggableFrame instance even though the
|
|
71
|
+
* translation result stays the same, in which case we don't need a new instance for the flavor.
|
|
70
72
|
*/
|
|
71
|
-
export class DebuggableFrameFlavor
|
|
73
|
+
export class DebuggableFrameFlavor {
|
|
72
74
|
static #last?: DebuggableFrameFlavor;
|
|
73
75
|
|
|
74
|
-
readonly
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
readonly missingDebugInfo
|
|
80
|
-
readonly sdkFrame: SDK.DebuggerModel.CallFrame;
|
|
76
|
+
readonly frame: DebuggableFrame;
|
|
77
|
+
|
|
78
|
+
// TODO(crbug.com/465879478): Remove once this is no longer part of SDK.CallFrame.
|
|
79
|
+
// We need to stash this separately because DebuggerModel sets this on CallFrame after the
|
|
80
|
+
// fact so we can't just check it in the `equals` below.
|
|
81
|
+
readonly #missingDebugInfo: SDK.DebuggerModel.MissingDebugInfo|null;
|
|
81
82
|
|
|
82
83
|
/** Use the static {@link for}. Only public to satisfy the `setFlavor` Ctor type */
|
|
83
84
|
constructor(frame: DebuggableFrame) {
|
|
84
|
-
this.
|
|
85
|
-
this
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
this.
|
|
90
|
-
this.sdkFrame = frame.sdkFrame;
|
|
85
|
+
this.frame = frame;
|
|
86
|
+
this.#missingDebugInfo = frame.sdkFrame.missingDebugInfoDetails;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
get sdkFrame(): SDK.DebuggerModel.CallFrame {
|
|
90
|
+
return this.frame.sdkFrame;
|
|
91
91
|
}
|
|
92
92
|
|
|
93
93
|
/** @returns the same instance of DebuggableFrameFlavor for repeated calls with the same (i.e. deep equal) DebuggableFrame */
|
|
@@ -97,7 +97,8 @@ export class DebuggableFrameFlavor implements DebuggableFrame {
|
|
|
97
97
|
a.column === b.column && a.sdkFrame === b.sdkFrame;
|
|
98
98
|
}
|
|
99
99
|
|
|
100
|
-
if (!DebuggableFrameFlavor.#last || !equals(DebuggableFrameFlavor.#last, frame)
|
|
100
|
+
if (!DebuggableFrameFlavor.#last || !equals(DebuggableFrameFlavor.#last.frame, frame) ||
|
|
101
|
+
DebuggableFrameFlavor.#last.#missingDebugInfo !== frame.sdkFrame.missingDebugInfoDetails) {
|
|
101
102
|
DebuggableFrameFlavor.#last = new DebuggableFrameFlavor(frame);
|
|
102
103
|
}
|
|
103
104
|
return DebuggableFrameFlavor.#last;
|
|
@@ -452,9 +452,11 @@ export class AXBreadcrumb {
|
|
|
452
452
|
|
|
453
453
|
this.#element = document.createElement('div');
|
|
454
454
|
this.#element.classList.add('ax-breadcrumb');
|
|
455
|
-
this.#element.setAttribute(
|
|
456
|
-
|
|
457
|
-
|
|
455
|
+
this.#element.setAttribute('jslog', `${VisualLogging.treeItem().track({
|
|
456
|
+
click: true,
|
|
457
|
+
resize: true,
|
|
458
|
+
keydown: 'ArrowUp|ArrowDown|ArrowLeft|ArrowRight|Enter'
|
|
459
|
+
})}`);
|
|
458
460
|
elementsToAXBreadcrumb.set(this.#element, this);
|
|
459
461
|
|
|
460
462
|
this.#nodeElement = document.createElement('div');
|
|
@@ -110,6 +110,10 @@ const UIStringsNotTranslate = {
|
|
|
110
110
|
* @description The generic name of the AI agent (do not translate)
|
|
111
111
|
*/
|
|
112
112
|
ai: 'AI',
|
|
113
|
+
/**
|
|
114
|
+
* @description Gemini (do not translate)
|
|
115
|
+
*/
|
|
116
|
+
gemini: 'Gemini',
|
|
113
117
|
/**
|
|
114
118
|
* @description The fallback text when we can't find the user full name
|
|
115
119
|
*/
|
|
@@ -306,7 +310,7 @@ export const DEFAULT_VIEW = (input: ChatMessageViewInput, output: ViewOutput, ta
|
|
|
306
310
|
<div class="message-info">
|
|
307
311
|
<devtools-icon name=${icon}></devtools-icon>
|
|
308
312
|
<div class="message-name">
|
|
309
|
-
<h2>${lockedString(UIStringsNotTranslate.ai)}</h2>
|
|
313
|
+
<h2>${AiAssistanceModel.AiUtils.isGeminiBranding() ? lockedString(UIStringsNotTranslate.gemini) : lockedString(UIStringsNotTranslate.ai)}</h2>
|
|
310
314
|
</div>
|
|
311
315
|
</div>
|
|
312
316
|
${Lit.Directives.repeat(
|
|
@@ -98,7 +98,7 @@ const DEFAULT_VIEW: View = (input, output, target) => {
|
|
|
98
98
|
render(html`
|
|
99
99
|
<div class="animation-group-preview-ui">
|
|
100
100
|
<button
|
|
101
|
-
jslog=${VisualLogging.item(`animations.buffer-preview${input.isScrollDrivenAnimationGroup ? '-sda' : ''}`).track({click: true})}
|
|
101
|
+
jslog=${VisualLogging.item(`animations.buffer-preview${input.isScrollDrivenAnimationGroup ? '-sda' : ''}`).track({click: true, resize: true})}
|
|
102
102
|
class=${classes}
|
|
103
103
|
role="option"
|
|
104
104
|
aria-label=${input.label}
|
|
@@ -180,6 +180,7 @@ export class ServiceWorkerUpdateCycleView {
|
|
|
180
180
|
const tr = this.tableElement.createChild('tr', 'service-worker-update-timeline');
|
|
181
181
|
tr.setAttribute('jslog', `${VisualLogging.treeItem('update-timeline').track({
|
|
182
182
|
click: true,
|
|
183
|
+
resize: true,
|
|
183
184
|
keydown: 'ArrowLeft|ArrowRight|ArrowUp|ArrowDown|Enter|Space',
|
|
184
185
|
})}`);
|
|
185
186
|
this.rows.push(tr);
|
|
@@ -353,7 +353,7 @@ function renderFramesPerReason(frames: string[]|undefined): LitTemplate {
|
|
|
353
353
|
}
|
|
354
354
|
const rows = [html`<div>${i18nString(UIStrings.framesPerIssue, {n: frames.length})}</div>`];
|
|
355
355
|
rows.push(...frames.map(url => html`<div class="text-ellipsis" title=${url}
|
|
356
|
-
jslog=${VisualLogging.treeItem()}>${url}</div>`));
|
|
356
|
+
jslog=${VisualLogging.treeItem().track({resize: true})}>${url}</div>`));
|
|
357
357
|
return html`
|
|
358
358
|
<div class="details-list"
|
|
359
359
|
jslog=${VisualLogging.tree('frames-per-issue')}>
|
|
@@ -361,7 +361,9 @@ function renderFramesPerReason(frames: string[]|undefined): LitTemplate {
|
|
|
361
361
|
rows,
|
|
362
362
|
title: i18nString(UIStrings.framesPerIssue, {n: frames.length}),
|
|
363
363
|
} as ExpandableList.ExpandableList.ExpandableListData}
|
|
364
|
-
jslog=${VisualLogging.treeItem()
|
|
364
|
+
jslog=${VisualLogging.treeItem().track({
|
|
365
|
+
resize: true
|
|
366
|
+
})}></devtools-expandable-list>
|
|
365
367
|
</div>
|
|
366
368
|
`;
|
|
367
369
|
}
|
|
@@ -144,7 +144,7 @@ const DEFAULT_VIEW: View = (input: ViewInput, _output: ViewOutput, target: HTMLE
|
|
|
144
144
|
// clang-format off
|
|
145
145
|
return html`
|
|
146
146
|
<span class=${spanClasses}
|
|
147
|
-
jslog=${VisualLogging.item('matched-address-item').track({hover: true})}
|
|
147
|
+
jslog=${VisualLogging.item('matched-address-item').track({hover: true, resize: true})}
|
|
148
148
|
@mouseenter=${() => input.onHighlightMatchesInAddress(startIndex)}
|
|
149
149
|
@mouseleave=${input.onClearHighlightedMatches}>
|
|
150
150
|
${templateLines}
|
|
@@ -238,6 +238,7 @@ export class XHRBreakpointsSidebarPane extends UI.Widget.VBox implements UI.Cont
|
|
|
238
238
|
listItemElement.setAttribute('jslog', `${VisualLogging.item().track({
|
|
239
239
|
click: true,
|
|
240
240
|
dblclick: true,
|
|
241
|
+
resize: true,
|
|
241
242
|
keydown: 'ArrowUp|ArrowDown|PageUp|PageDown|Enter|Space',
|
|
242
243
|
})}`);
|
|
243
244
|
return listItemElement;
|
|
@@ -1457,6 +1457,7 @@ export class ConsoleViewMessage implements ConsoleViewportElement {
|
|
|
1457
1457
|
this.elementInternal.className = 'console-message-wrapper';
|
|
1458
1458
|
this.elementInternal.setAttribute('jslog', `${VisualLogging.item('console-message').track({
|
|
1459
1459
|
click: true,
|
|
1460
|
+
resize: true,
|
|
1460
1461
|
keydown: 'ArrowUp|ArrowDown|ArrowLeft|ArrowRight|Enter|Space|Home|End',
|
|
1461
1462
|
})}`);
|
|
1462
1463
|
this.elementInternal.removeChildren();
|
|
@@ -680,6 +680,7 @@ export class ElementsTreeElement extends UI.TreeOutline.TreeElement {
|
|
|
680
680
|
this.listItemElement.setAttribute(
|
|
681
681
|
'jslog', `${VisualLogging.treeItem().parent('elementsTreeOutline').track({
|
|
682
682
|
keydown: 'ArrowUp|ArrowDown|ArrowLeft|ArrowRight|Backspace|Delete|Enter|Space|Home|End',
|
|
683
|
+
resize: true,
|
|
683
684
|
drag: true,
|
|
684
685
|
click: true,
|
|
685
686
|
})}`);
|
|
@@ -228,26 +228,27 @@ const DEFAULT_VIEW: View = (input, output, target) => {
|
|
|
228
228
|
event.preventDefault();
|
|
229
229
|
}
|
|
230
230
|
};
|
|
231
|
+
// clang-format off
|
|
231
232
|
const renderElement = (element: LayoutElement): Lit.LitTemplate => html`<div
|
|
232
233
|
class="element"
|
|
233
|
-
jslog=${VisualLogging.item()}>
|
|
234
|
+
jslog=${VisualLogging.item().track({resize: true})}>
|
|
234
235
|
<devtools-checkbox
|
|
235
236
|
data-element="true"
|
|
236
237
|
class="checkbox-label"
|
|
237
238
|
.checked=${element.enabled}
|
|
238
239
|
@change=${(e: Event) => input.onElementToggle(element, e)}
|
|
239
|
-
jslog=${VisualLogging.toggle().track({
|
|
240
|
-
click: true
|
|
241
|
-
})}>
|
|
240
|
+
jslog=${VisualLogging.toggle().track({click: true, resize: true })}>
|
|
242
241
|
<span
|
|
243
242
|
class="node-text-container"
|
|
244
243
|
data-label="true"
|
|
245
244
|
@mouseenter=${(e: MouseEvent) => input.onMouseEnter(element, e)}
|
|
246
245
|
@mouseleave=${(e: MouseEvent) => input.onMouseLeave(element, e)}>
|
|
247
246
|
<devtools-node-text .data=${{
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
247
|
+
nodeId: element.domId,
|
|
248
|
+
nodeTitle: element.name,
|
|
249
|
+
nodeClasses: element.domClasses
|
|
250
|
+
}}>
|
|
251
|
+
</devtools-node-text>
|
|
251
252
|
</span>
|
|
252
253
|
</devtools-checkbox>
|
|
253
254
|
<label
|
|
@@ -303,7 +303,7 @@ export class ElementsBreadcrumbs extends HTMLElement {
|
|
|
303
303
|
data-crumb="true"
|
|
304
304
|
>
|
|
305
305
|
<a href="#" draggable=false class="crumb-link"
|
|
306
|
-
jslog=${VisualLogging.item().track({click:true})}
|
|
306
|
+
jslog=${VisualLogging.item().track({click:true, resize:true})}
|
|
307
307
|
@click=${this.#onCrumbClick(crumb.node)}
|
|
308
308
|
@mousemove=${this.#onCrumbMouseMove(crumb.node)}
|
|
309
309
|
@mouseleave=${this.#onCrumbMouseLeave(crumb.node)}
|
|
@@ -194,7 +194,8 @@ export class StylePropertyEditor extends HTMLElement {
|
|
|
194
194
|
return html`
|
|
195
195
|
<button title=${title}
|
|
196
196
|
class=${classes}
|
|
197
|
-
jslog=${
|
|
197
|
+
jslog=${
|
|
198
|
+
VisualLogging.item().track({click: true, resize: true}).context(`${propertyName}-${propertyValue}`)}
|
|
198
199
|
@click=${() => this.#onButtonClick(propertyName, propertyValue, selected)}>
|
|
199
200
|
<devtools-icon style=${transform} name=${iconInfo.iconName}>
|
|
200
201
|
</devtools-icon>
|
|
@@ -197,7 +197,7 @@ export class LighthouseReportRenderer {
|
|
|
197
197
|
continue;
|
|
198
198
|
}
|
|
199
199
|
|
|
200
|
-
auditEl.setAttribute('jslog', `${VisualLogging.item(`lighthouse.audit.${id}`)}`);
|
|
200
|
+
auditEl.setAttribute('jslog', `${VisualLogging.item(`lighthouse.audit.${id}`).track({resize: true})}`);
|
|
201
201
|
|
|
202
202
|
let state: string|undefined;
|
|
203
203
|
for (const className of auditEl.classList) {
|
|
@@ -60,7 +60,7 @@ function renderEndiannessSetting(
|
|
|
60
60
|
data-endianness="true" @change=${(e: Event) => onEndiannessChanged((e.target as HTMLSelectElement).value as Endianness)}>
|
|
61
61
|
${[Endianness.LITTLE, Endianness.BIG].map(endianness => {
|
|
62
62
|
return html`<option value=${endianness} .selected=${currentEndiannes === endianness}
|
|
63
|
-
jslog=${VisualLogging.item(Platform.StringUtilities.toKebabCase(endianness)).track({click: true})}>${
|
|
63
|
+
jslog=${VisualLogging.item(Platform.StringUtilities.toKebabCase(endianness)).track({click: true, resize: true})}>${
|
|
64
64
|
i18n.i18n.lockedString(endianness)}</option>`;
|
|
65
65
|
})}
|
|
66
66
|
</select>
|
|
@@ -104,7 +104,7 @@ export const DEFAULT_VIEW: View = (input: ViewInput, _output: undefined, target:
|
|
|
104
104
|
${VALUE_TYPE_MODE_LIST.filter(x => isValidMode(type, x)).map(mode => {
|
|
105
105
|
return html`
|
|
106
106
|
<option value=${mode} .selected=${input.valueTypeModes.get(type) === mode}
|
|
107
|
-
jslog=${VisualLogging.item(mode).track({click: true})}>${
|
|
107
|
+
jslog=${VisualLogging.item(mode).track({click: true, resize: true})}>${
|
|
108
108
|
i18n.i18n.lockedString(mode)}
|
|
109
109
|
</option>`;
|
|
110
110
|
})}
|
|
@@ -73,7 +73,7 @@ const DEFAULT_VIEW: View = (input, _output, target) => {
|
|
|
73
73
|
})}
|
|
74
74
|
@click=${() => input.onPlayerClick(player.playerID)}
|
|
75
75
|
@contextmenu=${(e: Event) => input.onPlayerContextMenu(player.playerID, e)}
|
|
76
|
-
jslog=${VisualLogging.item('player').track({click: true})}>
|
|
76
|
+
jslog=${VisualLogging.item('player').track({click: true, resize: true})}>
|
|
77
77
|
<div class="player-entry-status-icon vbox">
|
|
78
78
|
<div class="player-entry-status-icon-centering">
|
|
79
79
|
<devtools-icon name=${player.iconName}></devtools-icon>
|
|
@@ -409,7 +409,8 @@ export class NetworkLogViewColumns {
|
|
|
409
409
|
|
|
410
410
|
private createWaterfallHeader(): void {
|
|
411
411
|
this.waterfallHeaderElement = this.waterfallColumn.contentElement.createChild('div', 'network-waterfall-header');
|
|
412
|
-
this.waterfallHeaderElement.setAttribute(
|
|
412
|
+
this.waterfallHeaderElement.setAttribute(
|
|
413
|
+
'jslog', `${VisualLogging.tableHeader('waterfall').track({click: true, resize: true})}`);
|
|
413
414
|
this.waterfallHeaderElement.addEventListener('click', waterfallHeaderClicked.bind(this));
|
|
414
415
|
this.waterfallHeaderElement.addEventListener('contextmenu', event => {
|
|
415
416
|
const contextMenu = new UI.ContextMenu.ContextMenu(event);
|