chrome-devtools-frontend 1.0.1025175 → 1.0.1026673
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/config/gni/devtools_grd_files.gni +1 -0
- package/config/gni/devtools_image_files.gni +1 -0
- package/docs/triage_guidelines.md +1 -122
- package/front_end/Images/src/star_outline.svg +3 -0
- package/front_end/core/common/ResourceType.ts +1 -0
- package/front_end/core/i18n/locales/en-US.json +18 -0
- package/front_end/core/i18n/locales/en-XL.json +18 -0
- package/front_end/core/sdk/DOMModel.ts +5 -0
- package/front_end/core/sdk/SourceMap.ts +22 -6
- package/front_end/entrypoints/lighthouse_worker/LighthouseWorkerService.ts +6 -3
- package/front_end/generated/InspectorBackendCommands.js +5 -3
- package/front_end/generated/SupportedCSSProperties.js +11 -0
- package/front_end/generated/protocol-mapping.d.ts +14 -0
- package/front_end/generated/protocol-proxy-api.d.ts +10 -0
- package/front_end/generated/protocol.ts +67 -0
- package/front_end/legacy_test_runner/sources_test_runner/DebuggerTestRunner.js +1 -1
- package/front_end/models/bindings/CompilerScriptMapping.ts +1 -1
- package/front_end/models/bindings/DebuggerWorkspaceBinding.ts +7 -1
- package/front_end/models/bindings/IgnoreListManager.ts +18 -20
- package/front_end/models/issues_manager/descriptions/arAttributionUntrustworthyOrigin.md +3 -3
- package/front_end/models/issues_manager/descriptions/clientHintMetaTagAllowListInvalidOrigin.md +1 -1
- package/front_end/models/issues_manager/descriptions/clientHintMetaTagModifiedHTML.md +1 -1
- package/front_end/models/javascript_metadata/NativeFunctions.js +79 -67
- package/front_end/models/source_map_scopes/NamesResolver.ts +34 -0
- package/front_end/models/text_utils/TextRange.ts +8 -0
- package/front_end/models/timeline_model/TimelineModel.ts +18 -1
- package/front_end/panels/elements/ElementsTreeOutline.ts +18 -34
- package/front_end/panels/elements/TopLayerContainer.ts +51 -29
- package/front_end/panels/elements/elementsTreeOutline.css +1 -1
- package/front_end/panels/lighthouse/LighthouseController.ts +3 -0
- package/front_end/panels/network/NetworkDataGridNode.ts +1 -2
- package/front_end/panels/profiler/ProfilesPanel.ts +1 -0
- package/front_end/panels/security/SecurityPanel.ts +52 -0
- package/front_end/panels/security/originView.css +1 -1
- package/front_end/panels/sources/CallStackSidebarPane.ts +45 -16
- package/front_end/panels/sources/DebuggerPlugin.ts +2 -2
- package/front_end/panels/sources/callStackSidebarPane.css +15 -9
- package/front_end/panels/sources/navigatorTree.css +3 -3
- package/front_end/panels/sources/watchExpressionsSidebarPane.css +6 -0
- package/front_end/panels/timeline/TimelineFlameChartDataProvider.ts +1 -1
- package/front_end/ui/components/docs/building-ui-documentation/CreatingComponents.md +172 -1
- package/front_end/ui/components/text_editor/TextEditor.ts +3 -0
- package/front_end/ui/legacy/components/data_grid/dataGrid.css +2 -1
- package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +3 -2
- package/front_end/ui/legacy/components/object_ui/objectPropertiesSection.css +6 -1
- package/front_end/ui/legacy/components/utils/JSPresentationUtils.ts +5 -4
- package/package.json +1 -1
@@ -97,17 +97,25 @@ export class IgnoreListManager implements SDK.TargetManager.SDKModelObserver<SDK
|
|
97
97
|
return debuggerModel.setBlackboxPatterns(patterns);
|
98
98
|
}
|
99
99
|
|
100
|
-
|
100
|
+
isUserOrSourceMapIgnoreListedUISourceCode(
|
101
|
+
uiSourceCode: Workspace.UISourceCode.UISourceCode, sourceMap: SDK.SourceMap.SourceMap|null): boolean {
|
101
102
|
const projectType = uiSourceCode.project().type();
|
102
103
|
const isContentScript = projectType === Workspace.Workspace.projectTypes.ContentScripts;
|
103
104
|
if (isContentScript && Common.Settings.Settings.instance().moduleSetting('skipContentScripts').get()) {
|
104
105
|
return true;
|
105
106
|
}
|
106
107
|
const url = this.uiSourceCodeURL(uiSourceCode);
|
107
|
-
return url ? this.
|
108
|
+
return url ? this.isUserOrSourceMapIgnoreListedURL(url, sourceMap) : false;
|
108
109
|
}
|
109
110
|
|
110
|
-
|
111
|
+
isUserOrSourceMapIgnoreListedURL(url: Platform.DevToolsPath.UrlString, sourceMap: SDK.SourceMap.SourceMap|null):
|
112
|
+
boolean {
|
113
|
+
const userIgnoreListed = this.isUserIgnoreListedURL(url);
|
114
|
+
const sourceMapIgnoreListed = sourceMap?.hasIgnoreListHint(url) ?? false;
|
115
|
+
return userIgnoreListed || sourceMapIgnoreListed;
|
116
|
+
}
|
117
|
+
|
118
|
+
isUserIgnoreListedURL(url: Platform.DevToolsPath.UrlString, isContentScript?: boolean): boolean {
|
111
119
|
if (this.#isIgnoreListedURLCache.has(url)) {
|
112
120
|
return Boolean(this.#isIgnoreListedURLCache.get(url));
|
113
121
|
}
|
@@ -137,8 +145,9 @@ export class IgnoreListManager implements SDK.TargetManager.SDKModelObserver<SDK
|
|
137
145
|
|
138
146
|
private async updateScriptRanges(script: SDK.Script.Script, sourceMap: SDK.SourceMap.SourceMap|null): Promise<void> {
|
139
147
|
let hasIgnoreListedMappings = false;
|
140
|
-
if (!IgnoreListManager.instance().
|
141
|
-
hasIgnoreListedMappings =
|
148
|
+
if (!IgnoreListManager.instance().isUserIgnoreListedURL(script.sourceURL, script.isContentScript())) {
|
149
|
+
hasIgnoreListedMappings =
|
150
|
+
sourceMap?.sourceURLs().some(url => this.isUserOrSourceMapIgnoreListedURL(url, sourceMap)) ?? false;
|
142
151
|
}
|
143
152
|
if (!hasIgnoreListedMappings) {
|
144
153
|
if (scriptToRange.get(script) && await script.setBlackboxedRanges([])) {
|
@@ -152,21 +161,10 @@ export class IgnoreListManager implements SDK.TargetManager.SDKModelObserver<SDK
|
|
152
161
|
return;
|
153
162
|
}
|
154
163
|
|
155
|
-
const
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
if (mappings[0].lineNumber !== 0 || mappings[0].columnNumber !== 0) {
|
160
|
-
newRanges.push({lineNumber: 0, columnNumber: 0});
|
161
|
-
currentIgnoreListed = true;
|
162
|
-
}
|
163
|
-
for (const mapping of mappings) {
|
164
|
-
if (mapping.sourceURL && currentIgnoreListed !== this.isIgnoreListedURL(mapping.sourceURL)) {
|
165
|
-
newRanges.push({lineNumber: mapping.lineNumber, columnNumber: mapping.columnNumber});
|
166
|
-
currentIgnoreListed = !currentIgnoreListed;
|
167
|
-
}
|
168
|
-
}
|
169
|
-
}
|
164
|
+
const newRanges =
|
165
|
+
sourceMap
|
166
|
+
.findRanges(srcURL => this.isUserOrSourceMapIgnoreListedURL(srcURL, sourceMap), {isStartMatching: true})
|
167
|
+
.flatMap(range => [range.start, range.end]);
|
170
168
|
|
171
169
|
const oldRanges = scriptToRange.get(script) || [];
|
172
170
|
if (!isEqual(oldRanges, newRanges) && await script.setBlackboxedRanges(newRanges)) {
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Ensure the origin of an attribution
|
1
|
+
# Ensure the origin of an attribution-registration request is trustworthy
|
2
2
|
|
3
|
-
An attribution was not
|
4
|
-
|
3
|
+
An attribution source or trigger was not registered because the origin of the
|
4
|
+
request was not trustworthy.
|
@@ -846,7 +846,7 @@ export const NativeFunctions = [
|
|
846
846
|
{
|
847
847
|
name: 'addEventListener',
|
848
848
|
signatures: [['type','listener','?options']],
|
849
|
-
receivers: ['AbortSignal','SharedWorker','Worker','ServiceWorker','Animation','AudioBufferSourceNode','AudioContext','AudioScheduledSourceNode','AudioWorkletNode','BaseAudioContext','BroadcastChannel','CSSAnimation','CSSTransition','CanvasCaptureMediaStreamTrack','ConstantSourceNode','Document','HTMLElement','MathMLElement','SVGElement','Element','EventSource','FileReader','FontFaceSet','Window','HTMLAnchorElement','HTMLAreaElement','HTMLAudioElement','HTMLBRElement','HTMLBaseElement','HTMLBodyElement','HTMLButtonElement','HTMLCanvasElement','HTMLDListElement','HTMLDataElement','HTMLDataListElement','HTMLDetailsElement','HTMLDialogElement','HTMLDirectoryElement','HTMLDivElement','HTMLDocument','HTMLEmbedElement','HTMLFieldSetElement','HTMLFontElement','HTMLFormElement','HTMLFrameElement','HTMLFrameSetElement','HTMLHRElement','HTMLHeadElement','HTMLHeadingElement','HTMLHtmlElement','HTMLIFrameElement','HTMLImageElement','HTMLInputElement','HTMLLIElement','HTMLLabelElement','HTMLLegendElement','HTMLLinkElement','HTMLMapElement','HTMLMarqueeElement','HTMLMediaElement','HTMLMenuElement','HTMLMetaElement','HTMLMeterElement','HTMLModElement','HTMLOListElement','HTMLObjectElement','HTMLOptGroupElement','HTMLOptionElement','HTMLOutputElement','HTMLParagraphElement','HTMLParamElement','HTMLPictureElement','HTMLPreElement','HTMLProgressElement','HTMLQuoteElement','HTMLScriptElement','HTMLSelectElement','HTMLSlotElement','HTMLSourceElement','HTMLSpanElement','HTMLStyleElement','HTMLTableCaptionElement','HTMLTableCellElement','HTMLTableColElement','HTMLTableDataCellElement','HTMLTableElement','HTMLTableHeaderCellElement','HTMLTableRowElement','HTMLTableSectionElement','HTMLTemplateElement','HTMLTextAreaElement','HTMLTimeElement','HTMLTitleElement','HTMLTrackElement','HTMLUListElement','HTMLUnknownElement','HTMLVideoElement','IDBDatabase','IDBOpenDBRequest','IDBRequest','IDBTransaction','MediaDevices','MediaKeySession','MediaQueryList','MediaRecorder','MediaSource','MediaStream','MediaStreamTrack','MessagePort','Notification','OfflineAudioContext','OscillatorNode','PaymentRequest','Performance','PermissionStatus','PictureInPictureWindow','RTCDTMFSender','RTCDataChannel','RTCDtlsTransport','RTCPeerConnection','RemotePlayback','SVGAElement','SVGAnimateElement','SVGAnimateMotionElement','SVGAnimateTransformElement','SVGAnimationElement','SVGCircleElement','SVGClipPathElement','SVGComponentTransferFunctionElement','SVGDefsElement','SVGDescElement','SVGEllipseElement','SVGFEBlendElement','SVGFEColorMatrixElement','SVGFEComponentTransferElement','SVGFECompositeElement','SVGFEConvolveMatrixElement','SVGFEDiffuseLightingElement','SVGFEDisplacementMapElement','SVGFEDistantLightElement','SVGFEDropShadowElement','SVGFEFloodElement','SVGFEFuncAElement','SVGFEFuncBElement','SVGFEFuncGElement','SVGFEFuncRElement','SVGFEGaussianBlurElement','SVGFEImageElement','SVGFEMergeElement','SVGFEMergeNodeElement','SVGFEMorphologyElement','SVGFEOffsetElement','SVGFEPointLightElement','SVGFESpecularLightingElement','SVGFESpotLightElement','SVGFETileElement','SVGFETurbulenceElement','SVGFilterElement','SVGForeignObjectElement','SVGGElement','SVGGeometryElement','SVGGradientElement','SVGGraphicsElement','SVGImageElement','SVGLineElement','SVGLinearGradientElement','SVGMPathElement','SVGMarkerElement','SVGMaskElement','SVGMetadataElement','SVGPathElement','SVGPatternElement','SVGPolygonElement','SVGPolylineElement','SVGRadialGradientElement','SVGRectElement','SVGSVGElement','SVGScriptElement','SVGSetElement','SVGStopElement','SVGStyleElement','SVGSwitchElement','SVGSymbolElement','SVGTSpanElement','SVGTextContentElement','SVGTextElement','SVGTextPathElement','SVGTextPositioningElement','SVGTitleElement','SVGUseElement','SVGViewElement','ScreenOrientation','ScriptProcessorNode','ServiceWorkerContainer','ServiceWorkerRegistration','ShadowRoot','SourceBuffer','SourceBufferList','SpeechSynthesis','SpeechSynthesisUtterance','TextTrack','TextTrackCue','TextTrackList','VTTCue','VisualViewport','WebSocket','XMLDocument','XMLHttpRequest','XMLHttpRequestEventTarget','XMLHttpRequestUpload','DedicatedWorkerGlobalScope','ServiceWorkerGlobalScope','SharedWorkerGlobalScope','WorkerGlobalScope']
|
849
|
+
receivers: ['AbortSignal','SharedWorker','Worker','ServiceWorker','Animation','AudioBufferSourceNode','AudioContext','AudioScheduledSourceNode','AudioWorkletNode','BaseAudioContext','BroadcastChannel','CSSAnimation','CSSTransition','CanvasCaptureMediaStreamTrack','ConstantSourceNode','Document','HTMLElement','MathMLElement','SVGElement','Element','EventSource','FileReader','FontFaceSet','Window','HTMLAnchorElement','HTMLAreaElement','HTMLAudioElement','HTMLBRElement','HTMLBaseElement','HTMLBodyElement','HTMLButtonElement','HTMLCanvasElement','HTMLDListElement','HTMLDataElement','HTMLDataListElement','HTMLDetailsElement','HTMLDialogElement','HTMLDirectoryElement','HTMLDivElement','HTMLDocument','HTMLEmbedElement','HTMLFieldSetElement','HTMLFontElement','HTMLFormElement','HTMLFrameElement','HTMLFrameSetElement','HTMLHRElement','HTMLHeadElement','HTMLHeadingElement','HTMLHtmlElement','HTMLIFrameElement','HTMLImageElement','HTMLInputElement','HTMLLIElement','HTMLLabelElement','HTMLLegendElement','HTMLLinkElement','HTMLMapElement','HTMLMarqueeElement','HTMLMediaElement','HTMLMenuElement','HTMLMetaElement','HTMLMeterElement','HTMLModElement','HTMLOListElement','HTMLObjectElement','HTMLOptGroupElement','HTMLOptionElement','HTMLOutputElement','HTMLParagraphElement','HTMLParamElement','HTMLPictureElement','HTMLPreElement','HTMLProgressElement','HTMLQuoteElement','HTMLScriptElement','HTMLSelectElement','HTMLSlotElement','HTMLSourceElement','HTMLSpanElement','HTMLStyleElement','HTMLTableCaptionElement','HTMLTableCellElement','HTMLTableColElement','HTMLTableDataCellElement','HTMLTableElement','HTMLTableHeaderCellElement','HTMLTableRowElement','HTMLTableSectionElement','HTMLTemplateElement','HTMLTextAreaElement','HTMLTimeElement','HTMLTitleElement','HTMLTrackElement','HTMLUListElement','HTMLUnknownElement','HTMLVideoElement','IDBDatabase','IDBOpenDBRequest','IDBRequest','IDBTransaction','MIDIAccess','MIDIInput','MIDIOutput','MIDIPort','MediaDevices','MediaKeySession','MediaQueryList','MediaRecorder','MediaSource','MediaStream','MediaStreamTrack','MessagePort','Notification','OfflineAudioContext','OscillatorNode','PaymentRequest','Performance','PermissionStatus','PictureInPictureWindow','RTCDTMFSender','RTCDataChannel','RTCDtlsTransport','RTCIceTransport','RTCPeerConnection','RTCSctpTransport','RemotePlayback','SVGAElement','SVGAnimateElement','SVGAnimateMotionElement','SVGAnimateTransformElement','SVGAnimationElement','SVGCircleElement','SVGClipPathElement','SVGComponentTransferFunctionElement','SVGDefsElement','SVGDescElement','SVGEllipseElement','SVGFEBlendElement','SVGFEColorMatrixElement','SVGFEComponentTransferElement','SVGFECompositeElement','SVGFEConvolveMatrixElement','SVGFEDiffuseLightingElement','SVGFEDisplacementMapElement','SVGFEDistantLightElement','SVGFEDropShadowElement','SVGFEFloodElement','SVGFEFuncAElement','SVGFEFuncBElement','SVGFEFuncGElement','SVGFEFuncRElement','SVGFEGaussianBlurElement','SVGFEImageElement','SVGFEMergeElement','SVGFEMergeNodeElement','SVGFEMorphologyElement','SVGFEOffsetElement','SVGFEPointLightElement','SVGFESpecularLightingElement','SVGFESpotLightElement','SVGFETileElement','SVGFETurbulenceElement','SVGFilterElement','SVGForeignObjectElement','SVGGElement','SVGGeometryElement','SVGGradientElement','SVGGraphicsElement','SVGImageElement','SVGLineElement','SVGLinearGradientElement','SVGMPathElement','SVGMarkerElement','SVGMaskElement','SVGMetadataElement','SVGPathElement','SVGPatternElement','SVGPolygonElement','SVGPolylineElement','SVGRadialGradientElement','SVGRectElement','SVGSVGElement','SVGScriptElement','SVGSetElement','SVGStopElement','SVGStyleElement','SVGSwitchElement','SVGSymbolElement','SVGTSpanElement','SVGTextContentElement','SVGTextElement','SVGTextPathElement','SVGTextPositioningElement','SVGTitleElement','SVGUseElement','SVGViewElement','ScreenOrientation','ScriptProcessorNode','ServiceWorkerContainer','ServiceWorkerRegistration','ShadowRoot','SourceBuffer','SourceBufferList','SpeechSynthesis','SpeechSynthesisUtterance','TextTrack','TextTrackCue','TextTrackList','VTTCue','VisualViewport','WebSocket','XMLDocument','XMLHttpRequest','XMLHttpRequestEventTarget','XMLHttpRequestUpload','DedicatedWorkerGlobalScope','ServiceWorkerGlobalScope','SharedWorkerGlobalScope','WorkerGlobalScope']
|
850
850
|
},
|
851
851
|
{
|
852
852
|
name: 'addEventListener',
|
@@ -856,7 +856,7 @@ export const NativeFunctions = [
|
|
856
856
|
{
|
857
857
|
name: 'removeEventListener',
|
858
858
|
signatures: [['type','listener','?options']],
|
859
|
-
receivers: ['AbortSignal','SharedWorker','Worker','ServiceWorker','Animation','AudioBufferSourceNode','AudioContext','AudioScheduledSourceNode','AudioWorkletNode','BaseAudioContext','BroadcastChannel','CSSAnimation','CSSTransition','CanvasCaptureMediaStreamTrack','ConstantSourceNode','Document','HTMLElement','MathMLElement','SVGElement','Element','EventSource','FileReader','FontFaceSet','Window','HTMLAnchorElement','HTMLAreaElement','HTMLAudioElement','HTMLBRElement','HTMLBaseElement','HTMLBodyElement','HTMLButtonElement','HTMLCanvasElement','HTMLDListElement','HTMLDataElement','HTMLDataListElement','HTMLDetailsElement','HTMLDialogElement','HTMLDirectoryElement','HTMLDivElement','HTMLDocument','HTMLEmbedElement','HTMLFieldSetElement','HTMLFontElement','HTMLFormElement','HTMLFrameElement','HTMLFrameSetElement','HTMLHRElement','HTMLHeadElement','HTMLHeadingElement','HTMLHtmlElement','HTMLIFrameElement','HTMLImageElement','HTMLInputElement','HTMLLIElement','HTMLLabelElement','HTMLLegendElement','HTMLLinkElement','HTMLMapElement','HTMLMarqueeElement','HTMLMediaElement','HTMLMenuElement','HTMLMetaElement','HTMLMeterElement','HTMLModElement','HTMLOListElement','HTMLObjectElement','HTMLOptGroupElement','HTMLOptionElement','HTMLOutputElement','HTMLParagraphElement','HTMLParamElement','HTMLPictureElement','HTMLPreElement','HTMLProgressElement','HTMLQuoteElement','HTMLScriptElement','HTMLSelectElement','HTMLSlotElement','HTMLSourceElement','HTMLSpanElement','HTMLStyleElement','HTMLTableCaptionElement','HTMLTableCellElement','HTMLTableColElement','HTMLTableDataCellElement','HTMLTableElement','HTMLTableHeaderCellElement','HTMLTableRowElement','HTMLTableSectionElement','HTMLTemplateElement','HTMLTextAreaElement','HTMLTimeElement','HTMLTitleElement','HTMLTrackElement','HTMLUListElement','HTMLUnknownElement','HTMLVideoElement','IDBDatabase','IDBOpenDBRequest','IDBRequest','IDBTransaction','MediaDevices','MediaKeySession','MediaQueryList','MediaRecorder','MediaSource','MediaStream','MediaStreamTrack','MessagePort','Notification','OfflineAudioContext','OscillatorNode','PaymentRequest','Performance','PermissionStatus','PictureInPictureWindow','RTCDTMFSender','RTCDataChannel','RTCDtlsTransport','RTCPeerConnection','RemotePlayback','SVGAElement','SVGAnimateElement','SVGAnimateMotionElement','SVGAnimateTransformElement','SVGAnimationElement','SVGCircleElement','SVGClipPathElement','SVGComponentTransferFunctionElement','SVGDefsElement','SVGDescElement','SVGEllipseElement','SVGFEBlendElement','SVGFEColorMatrixElement','SVGFEComponentTransferElement','SVGFECompositeElement','SVGFEConvolveMatrixElement','SVGFEDiffuseLightingElement','SVGFEDisplacementMapElement','SVGFEDistantLightElement','SVGFEDropShadowElement','SVGFEFloodElement','SVGFEFuncAElement','SVGFEFuncBElement','SVGFEFuncGElement','SVGFEFuncRElement','SVGFEGaussianBlurElement','SVGFEImageElement','SVGFEMergeElement','SVGFEMergeNodeElement','SVGFEMorphologyElement','SVGFEOffsetElement','SVGFEPointLightElement','SVGFESpecularLightingElement','SVGFESpotLightElement','SVGFETileElement','SVGFETurbulenceElement','SVGFilterElement','SVGForeignObjectElement','SVGGElement','SVGGeometryElement','SVGGradientElement','SVGGraphicsElement','SVGImageElement','SVGLineElement','SVGLinearGradientElement','SVGMPathElement','SVGMarkerElement','SVGMaskElement','SVGMetadataElement','SVGPathElement','SVGPatternElement','SVGPolygonElement','SVGPolylineElement','SVGRadialGradientElement','SVGRectElement','SVGSVGElement','SVGScriptElement','SVGSetElement','SVGStopElement','SVGStyleElement','SVGSwitchElement','SVGSymbolElement','SVGTSpanElement','SVGTextContentElement','SVGTextElement','SVGTextPathElement','SVGTextPositioningElement','SVGTitleElement','SVGUseElement','SVGViewElement','ScreenOrientation','ScriptProcessorNode','ServiceWorkerContainer','ServiceWorkerRegistration','ShadowRoot','SourceBuffer','SourceBufferList','SpeechSynthesis','SpeechSynthesisUtterance','TextTrack','TextTrackCue','TextTrackList','VTTCue','VisualViewport','WebSocket','XMLDocument','XMLHttpRequest','XMLHttpRequestEventTarget','XMLHttpRequestUpload','DedicatedWorkerGlobalScope','ServiceWorkerGlobalScope','SharedWorkerGlobalScope','WorkerGlobalScope']
|
859
|
+
receivers: ['AbortSignal','SharedWorker','Worker','ServiceWorker','Animation','AudioBufferSourceNode','AudioContext','AudioScheduledSourceNode','AudioWorkletNode','BaseAudioContext','BroadcastChannel','CSSAnimation','CSSTransition','CanvasCaptureMediaStreamTrack','ConstantSourceNode','Document','HTMLElement','MathMLElement','SVGElement','Element','EventSource','FileReader','FontFaceSet','Window','HTMLAnchorElement','HTMLAreaElement','HTMLAudioElement','HTMLBRElement','HTMLBaseElement','HTMLBodyElement','HTMLButtonElement','HTMLCanvasElement','HTMLDListElement','HTMLDataElement','HTMLDataListElement','HTMLDetailsElement','HTMLDialogElement','HTMLDirectoryElement','HTMLDivElement','HTMLDocument','HTMLEmbedElement','HTMLFieldSetElement','HTMLFontElement','HTMLFormElement','HTMLFrameElement','HTMLFrameSetElement','HTMLHRElement','HTMLHeadElement','HTMLHeadingElement','HTMLHtmlElement','HTMLIFrameElement','HTMLImageElement','HTMLInputElement','HTMLLIElement','HTMLLabelElement','HTMLLegendElement','HTMLLinkElement','HTMLMapElement','HTMLMarqueeElement','HTMLMediaElement','HTMLMenuElement','HTMLMetaElement','HTMLMeterElement','HTMLModElement','HTMLOListElement','HTMLObjectElement','HTMLOptGroupElement','HTMLOptionElement','HTMLOutputElement','HTMLParagraphElement','HTMLParamElement','HTMLPictureElement','HTMLPreElement','HTMLProgressElement','HTMLQuoteElement','HTMLScriptElement','HTMLSelectElement','HTMLSlotElement','HTMLSourceElement','HTMLSpanElement','HTMLStyleElement','HTMLTableCaptionElement','HTMLTableCellElement','HTMLTableColElement','HTMLTableDataCellElement','HTMLTableElement','HTMLTableHeaderCellElement','HTMLTableRowElement','HTMLTableSectionElement','HTMLTemplateElement','HTMLTextAreaElement','HTMLTimeElement','HTMLTitleElement','HTMLTrackElement','HTMLUListElement','HTMLUnknownElement','HTMLVideoElement','IDBDatabase','IDBOpenDBRequest','IDBRequest','IDBTransaction','MIDIAccess','MIDIInput','MIDIOutput','MIDIPort','MediaDevices','MediaKeySession','MediaQueryList','MediaRecorder','MediaSource','MediaStream','MediaStreamTrack','MessagePort','Notification','OfflineAudioContext','OscillatorNode','PaymentRequest','Performance','PermissionStatus','PictureInPictureWindow','RTCDTMFSender','RTCDataChannel','RTCDtlsTransport','RTCIceTransport','RTCPeerConnection','RTCSctpTransport','RemotePlayback','SVGAElement','SVGAnimateElement','SVGAnimateMotionElement','SVGAnimateTransformElement','SVGAnimationElement','SVGCircleElement','SVGClipPathElement','SVGComponentTransferFunctionElement','SVGDefsElement','SVGDescElement','SVGEllipseElement','SVGFEBlendElement','SVGFEColorMatrixElement','SVGFEComponentTransferElement','SVGFECompositeElement','SVGFEConvolveMatrixElement','SVGFEDiffuseLightingElement','SVGFEDisplacementMapElement','SVGFEDistantLightElement','SVGFEDropShadowElement','SVGFEFloodElement','SVGFEFuncAElement','SVGFEFuncBElement','SVGFEFuncGElement','SVGFEFuncRElement','SVGFEGaussianBlurElement','SVGFEImageElement','SVGFEMergeElement','SVGFEMergeNodeElement','SVGFEMorphologyElement','SVGFEOffsetElement','SVGFEPointLightElement','SVGFESpecularLightingElement','SVGFESpotLightElement','SVGFETileElement','SVGFETurbulenceElement','SVGFilterElement','SVGForeignObjectElement','SVGGElement','SVGGeometryElement','SVGGradientElement','SVGGraphicsElement','SVGImageElement','SVGLineElement','SVGLinearGradientElement','SVGMPathElement','SVGMarkerElement','SVGMaskElement','SVGMetadataElement','SVGPathElement','SVGPatternElement','SVGPolygonElement','SVGPolylineElement','SVGRadialGradientElement','SVGRectElement','SVGSVGElement','SVGScriptElement','SVGSetElement','SVGStopElement','SVGStyleElement','SVGSwitchElement','SVGSymbolElement','SVGTSpanElement','SVGTextContentElement','SVGTextElement','SVGTextPathElement','SVGTextPositioningElement','SVGTitleElement','SVGUseElement','SVGViewElement','ScreenOrientation','ScriptProcessorNode','ServiceWorkerContainer','ServiceWorkerRegistration','ShadowRoot','SourceBuffer','SourceBufferList','SpeechSynthesis','SpeechSynthesisUtterance','TextTrack','TextTrackCue','TextTrackList','VTTCue','VisualViewport','WebSocket','XMLDocument','XMLHttpRequest','XMLHttpRequestEventTarget','XMLHttpRequestUpload','DedicatedWorkerGlobalScope','ServiceWorkerGlobalScope','SharedWorkerGlobalScope','WorkerGlobalScope']
|
860
860
|
},
|
861
861
|
{
|
862
862
|
name: 'removeEventListener',
|
@@ -973,13 +973,13 @@ export const NativeFunctions = [
|
|
973
973
|
},
|
974
974
|
{
|
975
975
|
name: 'close',
|
976
|
-
signatures: [['?
|
977
|
-
receivers: ['
|
976
|
+
signatures: [['?returnValue']],
|
977
|
+
receivers: ['HTMLDialogElement']
|
978
978
|
},
|
979
979
|
{
|
980
980
|
name: 'close',
|
981
|
-
signatures: [['?
|
982
|
-
receivers: ['
|
981
|
+
signatures: [['?code','?reason']],
|
982
|
+
receivers: ['WebSocket']
|
983
983
|
},
|
984
984
|
{
|
985
985
|
name: 'close',
|
@@ -2281,6 +2281,10 @@ export const NativeFunctions = [
|
|
2281
2281
|
name: 'webkitMatchesSelector',
|
2282
2282
|
signatures: [['selectors']]
|
2283
2283
|
},
|
2284
|
+
{
|
2285
|
+
name: 'setFormValue',
|
2286
|
+
signatures: [['value','?state']]
|
2287
|
+
},
|
2284
2288
|
{
|
2285
2289
|
name: 'initEvent',
|
2286
2290
|
signatures: [['type','?bubbles','?cancelable']]
|
@@ -2498,6 +2502,11 @@ export const NativeFunctions = [
|
|
2498
2502
|
name: 'toDataURL',
|
2499
2503
|
signatures: [['?type','?quality']]
|
2500
2504
|
},
|
2505
|
+
{
|
2506
|
+
name: 'show',
|
2507
|
+
signatures: [['?detailsPromise']],
|
2508
|
+
receivers: ['PaymentRequest']
|
2509
|
+
},
|
2501
2510
|
{
|
2502
2511
|
name: 'requestSubmit',
|
2503
2512
|
signatures: [['?submitter']]
|
@@ -2608,6 +2617,14 @@ export const NativeFunctions = [
|
|
2608
2617
|
name: 'insertCell',
|
2609
2618
|
signatures: [['?index']]
|
2610
2619
|
},
|
2620
|
+
{
|
2621
|
+
name: 'cancelVideoFrameCallback',
|
2622
|
+
signatures: [['handle']]
|
2623
|
+
},
|
2624
|
+
{
|
2625
|
+
name: 'requestVideoFrameCallback',
|
2626
|
+
signatures: [['callback']]
|
2627
|
+
},
|
2611
2628
|
{
|
2612
2629
|
name: 'back',
|
2613
2630
|
signatures: [['?options']],
|
@@ -2801,6 +2818,31 @@ export const NativeFunctions = [
|
|
2801
2818
|
signatures: [['?type']],
|
2802
2819
|
receivers: ['WakeLock']
|
2803
2820
|
},
|
2821
|
+
{
|
2822
|
+
name: 'send',
|
2823
|
+
signatures: [['data','?timestamp']],
|
2824
|
+
receivers: ['MIDIOutput']
|
2825
|
+
},
|
2826
|
+
{
|
2827
|
+
name: 'send',
|
2828
|
+
signatures: [['data']],
|
2829
|
+
receivers: ['RTCDataChannel','WebSocket']
|
2830
|
+
},
|
2831
|
+
{
|
2832
|
+
name: 'send',
|
2833
|
+
signatures: [['?body']],
|
2834
|
+
receivers: ['XMLHttpRequest']
|
2835
|
+
},
|
2836
|
+
{
|
2837
|
+
name: 'send',
|
2838
|
+
signatures: [['command']],
|
2839
|
+
receivers: ['InspectorOverlayHost']
|
2840
|
+
},
|
2841
|
+
{
|
2842
|
+
name: 'send',
|
2843
|
+
signatures: [['message'],['data']],
|
2844
|
+
receivers: ['PresentationConnection']
|
2845
|
+
},
|
2804
2846
|
{
|
2805
2847
|
name: 'decodingInfo',
|
2806
2848
|
signatures: [['configuration']]
|
@@ -2861,7 +2903,7 @@ export const NativeFunctions = [
|
|
2861
2903
|
},
|
2862
2904
|
{
|
2863
2905
|
name: 'addSourceBuffer',
|
2864
|
-
signatures: [['type']
|
2906
|
+
signatures: [['type']]
|
2865
2907
|
},
|
2866
2908
|
{
|
2867
2909
|
name: 'endOfStream',
|
@@ -2869,7 +2911,7 @@ export const NativeFunctions = [
|
|
2869
2911
|
},
|
2870
2912
|
{
|
2871
2913
|
name: 'removeSourceBuffer',
|
2872
|
-
signatures: [['sourceBuffer']
|
2914
|
+
signatures: [['sourceBuffer']]
|
2873
2915
|
},
|
2874
2916
|
{
|
2875
2917
|
name: 'setLiveSeekableRange',
|
@@ -2950,10 +2992,28 @@ export const NativeFunctions = [
|
|
2950
2992
|
name: 'setNamedItemNS',
|
2951
2993
|
signatures: [['attr']]
|
2952
2994
|
},
|
2995
|
+
{
|
2996
|
+
name: 'disable',
|
2997
|
+
signatures: [['cap']],
|
2998
|
+
receivers: ['WebGLRenderingContext','WebGL2RenderingContextBase','WebGL2RenderingContext']
|
2999
|
+
},
|
3000
|
+
{
|
3001
|
+
name: 'enable',
|
3002
|
+
signatures: [['cap']],
|
3003
|
+
receivers: ['WebGLRenderingContext','WebGL2RenderingContextBase','WebGL2RenderingContext']
|
3004
|
+
},
|
3005
|
+
{
|
3006
|
+
name: 'setHeaderValue',
|
3007
|
+
signatures: [['value']]
|
3008
|
+
},
|
2953
3009
|
{
|
2954
3010
|
name: 'canShare',
|
2955
3011
|
signatures: [['?data']]
|
2956
3012
|
},
|
3013
|
+
{
|
3014
|
+
name: 'requestMIDIAccess',
|
3015
|
+
signatures: [['?options']]
|
3016
|
+
},
|
2957
3017
|
{
|
2958
3018
|
name: 'requestMediaKeySystemAccess',
|
2959
3019
|
signatures: [['keySystem','supportedConfigurations']]
|
@@ -3097,11 +3157,6 @@ export const NativeFunctions = [
|
|
3097
3157
|
name: 'addPath',
|
3098
3158
|
signatures: [['path','?transform']]
|
3099
3159
|
},
|
3100
|
-
{
|
3101
|
-
name: 'show',
|
3102
|
-
signatures: [['?detailsPromise']],
|
3103
|
-
receivers: ['PaymentRequest']
|
3104
|
-
},
|
3105
3160
|
{
|
3106
3161
|
name: 'updateWith',
|
3107
3162
|
signatures: [['detailsPromise']]
|
@@ -3176,29 +3231,9 @@ export const NativeFunctions = [
|
|
3176
3231
|
signatures: [['tones','?duration','?interToneGap']]
|
3177
3232
|
},
|
3178
3233
|
{
|
3179
|
-
name: '
|
3180
|
-
signatures: [['
|
3181
|
-
receivers: ['
|
3182
|
-
},
|
3183
|
-
{
|
3184
|
-
name: 'send',
|
3185
|
-
signatures: [['?body']],
|
3186
|
-
receivers: ['XMLHttpRequest']
|
3187
|
-
},
|
3188
|
-
{
|
3189
|
-
name: 'send',
|
3190
|
-
signatures: [['command']],
|
3191
|
-
receivers: ['InspectorOverlayHost']
|
3192
|
-
},
|
3193
|
-
{
|
3194
|
-
name: 'send',
|
3195
|
-
signatures: [['message'],['data']],
|
3196
|
-
receivers: ['PresentationConnection']
|
3197
|
-
},
|
3198
|
-
{
|
3199
|
-
name: 'send',
|
3200
|
-
signatures: [['data','?timestamp']],
|
3201
|
-
receivers: ['MIDIOutput']
|
3234
|
+
name: 'getMetadata',
|
3235
|
+
signatures: [['successCallback','?errorCallback']],
|
3236
|
+
receivers: ['Entry']
|
3202
3237
|
},
|
3203
3238
|
{
|
3204
3239
|
name: 'addIceCandidate',
|
@@ -4522,11 +4557,6 @@ export const NativeFunctions = [
|
|
4522
4557
|
name: 'detachShader',
|
4523
4558
|
signatures: [['program','shader']]
|
4524
4559
|
},
|
4525
|
-
{
|
4526
|
-
name: 'disable',
|
4527
|
-
signatures: [['cap']],
|
4528
|
-
receivers: ['WebGLRenderingContext','WebGL2RenderingContextBase','WebGL2RenderingContext']
|
4529
|
-
},
|
4530
4560
|
{
|
4531
4561
|
name: 'disableVertexAttribArray',
|
4532
4562
|
signatures: [['index']]
|
@@ -4539,11 +4569,6 @@ export const NativeFunctions = [
|
|
4539
4569
|
name: 'drawElements',
|
4540
4570
|
signatures: [['mode','count','type','offset']]
|
4541
4571
|
},
|
4542
|
-
{
|
4543
|
-
name: 'enable',
|
4544
|
-
signatures: [['cap']],
|
4545
|
-
receivers: ['WebGLRenderingContext','WebGL2RenderingContextBase','WebGL2RenderingContext']
|
4546
|
-
},
|
4547
4572
|
{
|
4548
4573
|
name: 'enableVertexAttribArray',
|
4549
4574
|
signatures: [['index']]
|
@@ -4925,6 +4950,10 @@ export const NativeFunctions = [
|
|
4925
4950
|
name: 'setTimeout',
|
4926
4951
|
signatures: [['handler','?timeout','...arguments']]
|
4927
4952
|
},
|
4953
|
+
{
|
4954
|
+
name: 'structuredClone',
|
4955
|
+
signatures: [['value','?options']]
|
4956
|
+
},
|
4928
4957
|
{
|
4929
4958
|
name: 'addModule',
|
4930
4959
|
signatures: [['moduleURL','?options']],
|
@@ -5886,6 +5915,10 @@ export const NativeFunctions = [
|
|
5886
5915
|
name: 'registerProperty',
|
5887
5916
|
signatures: [['definition']]
|
5888
5917
|
},
|
5918
|
+
{
|
5919
|
+
name: 'ContentVisibilityAutoStateChangedEvent',
|
5920
|
+
signatures: [['type','?eventInitDict']]
|
5921
|
+
},
|
5889
5922
|
{
|
5890
5923
|
name: 'timeout',
|
5891
5924
|
signatures: [['milliseconds']]
|
@@ -6912,11 +6945,6 @@ export const NativeFunctions = [
|
|
6912
6945
|
signatures: [['successCallback','?errorCallback']],
|
6913
6946
|
receivers: ['DirectoryEntry']
|
6914
6947
|
},
|
6915
|
-
{
|
6916
|
-
name: 'getMetadata',
|
6917
|
-
signatures: [['successCallback','?errorCallback']],
|
6918
|
-
receivers: ['Entry']
|
6919
|
-
},
|
6920
6948
|
{
|
6921
6949
|
name: 'copyTo',
|
6922
6950
|
signatures: [['parent','name']],
|
@@ -7523,10 +7551,6 @@ export const NativeFunctions = [
|
|
7523
7551
|
name: 'InstallEvent',
|
7524
7552
|
signatures: [['type','?eventInitDict']]
|
7525
7553
|
},
|
7526
|
-
{
|
7527
|
-
name: 'setHeaderValue',
|
7528
|
-
signatures: [['value']]
|
7529
|
-
},
|
7530
7554
|
{
|
7531
7555
|
name: 'BarcodeDetector',
|
7532
7556
|
signatures: [['?barcodeDetectorOptions']]
|
@@ -7587,14 +7611,6 @@ export const NativeFunctions = [
|
|
7587
7611
|
name: 'compareComponent',
|
7588
7612
|
signatures: [['component','left','right']]
|
7589
7613
|
},
|
7590
|
-
{
|
7591
|
-
name: 'requestVideoFrameCallback',
|
7592
|
-
signatures: [['callback']]
|
7593
|
-
},
|
7594
|
-
{
|
7595
|
-
name: 'cancelVideoFrameCallback',
|
7596
|
-
signatures: [['handle']]
|
7597
|
-
},
|
7598
7614
|
{
|
7599
7615
|
name: 'VirtualKeyboardGeometryChangeEvent',
|
7600
7616
|
signatures: [['type']]
|
@@ -8103,10 +8119,6 @@ export const NativeFunctions = [
|
|
8103
8119
|
name: 'MIDIMessageEvent',
|
8104
8120
|
signatures: [['type','?eventInitDict']]
|
8105
8121
|
},
|
8106
|
-
{
|
8107
|
-
name: 'requestMIDIAccess',
|
8108
|
-
signatures: [['?options']]
|
8109
|
-
},
|
8110
8122
|
{
|
8111
8123
|
name: 'CloseEvent',
|
8112
8124
|
signatures: [['type','?eventInitDict']]
|
@@ -641,6 +641,40 @@ export class RemoteObject extends SDK.RemoteObject.RemoteObject {
|
|
641
641
|
}
|
642
642
|
}
|
643
643
|
|
644
|
+
// Resolve the frame's function name using the name associated with the opening
|
645
|
+
// paren that starts the scope. If there is no name associated with the scope
|
646
|
+
// start or if the function scope does not start with a left paren (e.g., arrow
|
647
|
+
// function with one parameter), the resolution returns null.
|
648
|
+
export async function resolveFrameFunctionName(frame: SDK.DebuggerModel.CallFrame): Promise<string|null> {
|
649
|
+
const script = frame.script;
|
650
|
+
const scope = frame.localScope();
|
651
|
+
if (!scope || !script) {
|
652
|
+
return null;
|
653
|
+
}
|
654
|
+
const startLocation = scope.startLocation();
|
655
|
+
if (!startLocation) {
|
656
|
+
return null;
|
657
|
+
}
|
658
|
+
const {content} = await script.requestContent();
|
659
|
+
if (!content) {
|
660
|
+
return null;
|
661
|
+
}
|
662
|
+
|
663
|
+
const text = new TextUtils.Text.Text(content);
|
664
|
+
const openRange = new TextUtils.TextRange.TextRange(
|
665
|
+
startLocation.lineNumber, startLocation.columnNumber, startLocation.lineNumber, startLocation.columnNumber + 1);
|
666
|
+
if (text.extract(openRange) !== '(') {
|
667
|
+
return null;
|
668
|
+
}
|
669
|
+
|
670
|
+
const sourceMap = Bindings.DebuggerWorkspaceBinding.DebuggerWorkspaceBinding.instance().sourceMapForScript(script);
|
671
|
+
if (!sourceMap) {
|
672
|
+
return null;
|
673
|
+
}
|
674
|
+
const entry = sourceMap.findEntry(startLocation.lineNumber, startLocation.columnNumber);
|
675
|
+
return entry?.name ?? null;
|
676
|
+
}
|
677
|
+
|
644
678
|
// TODO(crbug.com/1172300) Ignored during the jsdoc to ts migration)
|
645
679
|
// eslint-disable-next-line @typescript-eslint/naming-convention, @typescript-eslint/no-explicit-any
|
646
680
|
let _scopeResolvedForTest: (...arg0: any[]) => void = function(): void {};
|
@@ -230,6 +230,14 @@ export class TextRange {
|
|
230
230
|
}
|
231
231
|
return this.startLine < lineNumber && lineNumber < this.endLine;
|
232
232
|
}
|
233
|
+
|
234
|
+
get start(): {lineNumber: number, columnNumber: number} {
|
235
|
+
return {lineNumber: this.startLine, columnNumber: this.startColumn};
|
236
|
+
}
|
237
|
+
|
238
|
+
get end(): {lineNumber: number, columnNumber: number} {
|
239
|
+
return {lineNumber: this.endLine, columnNumber: this.endColumn};
|
240
|
+
}
|
233
241
|
}
|
234
242
|
|
235
243
|
export class SourceRange {
|
@@ -94,6 +94,18 @@ const UIStrings = {
|
|
94
94
|
*@description Title of an auction worklet in the timeline flame chart of the Performance panel
|
95
95
|
*/
|
96
96
|
unknownWorklet: 'Auction Worklet',
|
97
|
+
|
98
|
+
/**
|
99
|
+
*@description Title of control thread of a service process for an auction worklet in the timeline flame chart of the Performance panel
|
100
|
+
*/
|
101
|
+
workletService: 'Auction Worklet Service',
|
102
|
+
|
103
|
+
/**
|
104
|
+
*@description Title of control thread of a service process for an auction worklet with known URL in the timeline flame chart of the Performance panel
|
105
|
+
* @example {https://google.com} PH1
|
106
|
+
*/
|
107
|
+
workletServiceS: 'Auction Worklet Service — {PH1}',
|
108
|
+
|
97
109
|
};
|
98
110
|
const str_ = i18n.i18n.registerUIStrings('models/timeline_model/TimelineModel.ts', UIStrings);
|
99
111
|
const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
|
@@ -535,7 +547,8 @@ export class TimelineModelImpl {
|
|
535
547
|
} else {
|
536
548
|
let urlForOther: Platform.DevToolsPath.UrlString|null = null;
|
537
549
|
let workletTypeForOther: WorkletType = WorkletType.NotWorklet;
|
538
|
-
if (thread.name() === TimelineModelImpl.AuctionWorkletThreadName
|
550
|
+
if (thread.name() === TimelineModelImpl.AuctionWorkletThreadName ||
|
551
|
+
thread.name() === TimelineModelImpl.UtilityMainThreadName) {
|
539
552
|
if (typeof workletUrl !== 'boolean') {
|
540
553
|
urlForOther = workletUrl;
|
541
554
|
}
|
@@ -822,6 +835,9 @@ export class TimelineModelImpl {
|
|
822
835
|
} else if (thread.name() === TimelineModelImpl.AuctionWorkletThreadName) {
|
823
836
|
track.url = url || Platform.DevToolsPath.EmptyUrlString;
|
824
837
|
track.name = TimelineModelImpl.nameAuctionWorklet(workletType, url);
|
838
|
+
} else if (workletType !== WorkletType.NotWorklet && thread.name() === TimelineModelImpl.UtilityMainThreadName) {
|
839
|
+
track.url = url || Platform.DevToolsPath.EmptyUrlString;
|
840
|
+
track.name = url ? i18nString(UIStrings.workletServiceS, {PH1: url}) : i18nString(UIStrings.workletService);
|
825
841
|
}
|
826
842
|
this.tracksInternal.push(track);
|
827
843
|
|
@@ -1700,6 +1716,7 @@ export namespace TimelineModelImpl {
|
|
1700
1716
|
export const WorkerThreadNameLegacy = 'DedicatedWorker Thread';
|
1701
1717
|
export const RendererMainThreadName = 'CrRendererMain';
|
1702
1718
|
export const BrowserMainThreadName = 'CrBrowserMain';
|
1719
|
+
export const UtilityMainThreadName = 'CrUtilityMain';
|
1703
1720
|
export const AuctionWorkletThreadName = 'AuctionV8HelperThread';
|
1704
1721
|
|
1705
1722
|
export const DevToolsMetadataEvent = {
|
@@ -453,6 +453,8 @@ export class ElementsTreeOutline extends
|
|
453
453
|
}
|
454
454
|
}
|
455
455
|
|
456
|
+
this.createTopLayerContainer();
|
457
|
+
|
456
458
|
if (selectedNode) {
|
457
459
|
this.revealAndSelectNode(selectedNode, true);
|
458
460
|
}
|
@@ -1173,40 +1175,17 @@ export class ElementsTreeOutline extends
|
|
1173
1175
|
}
|
1174
1176
|
|
1175
1177
|
return new Promise<void>(resolve => {
|
1176
|
-
|
1177
|
-
|
1178
|
-
|
1179
|
-
|
1180
|
-
|
1181
|
-
|
1182
|
-
.then(() => {
|
1183
|
-
if (treeElement.node().nodeName() === 'BODY') {
|
1184
|
-
void this.createTopLayerContainer(treeElement);
|
1185
|
-
}
|
1186
|
-
});
|
1187
|
-
}
|
1188
|
-
|
1189
|
-
async createTopLayerContainer(bodyElement: ElementsTreeElement): Promise<void> {
|
1190
|
-
if (!this.topLayerContainer) {
|
1191
|
-
this.topLayerContainer = new TopLayerContainer(bodyElement);
|
1192
|
-
}
|
1193
|
-
this.topLayerContainer.updateBody(bodyElement);
|
1194
|
-
await this.updateTopLayerContainer();
|
1178
|
+
treeElement.node().getChildNodes(() => {
|
1179
|
+
populatedTreeElements.add(treeElement);
|
1180
|
+
this.updateModifiedParentNode(treeElement.node());
|
1181
|
+
resolve();
|
1182
|
+
});
|
1183
|
+
});
|
1195
1184
|
}
|
1196
1185
|
|
1197
|
-
|
1198
|
-
|
1199
|
-
|
1200
|
-
if (!bodyElement.children().includes(this.topLayerContainer) && !this.topLayerContainer.parent &&
|
1201
|
-
!this.topLayerContainer.treeOutline) {
|
1202
|
-
bodyElement.insertChild(this.topLayerContainer, bodyElement.childCount() - 1);
|
1203
|
-
}
|
1204
|
-
this.topLayerContainer.removeChildren();
|
1205
|
-
const topLayerElementsExists = await this.topLayerContainer.addTopLayerElementsAsChildren();
|
1206
|
-
if (!topLayerElementsExists) {
|
1207
|
-
bodyElement.removeChild(this.topLayerContainer);
|
1208
|
-
}
|
1209
|
-
}
|
1186
|
+
createTopLayerContainer(): void {
|
1187
|
+
this.topLayerContainer = new TopLayerContainer(this);
|
1188
|
+
void this.topLayerContainer.throttledUpdateTopLayerElements();
|
1210
1189
|
}
|
1211
1190
|
|
1212
1191
|
private createElementTreeElement(node: SDK.DOMModel.DOMNode, isClosingTag?: boolean): ElementsTreeElement {
|
@@ -1280,6 +1259,11 @@ export class ElementsTreeOutline extends
|
|
1280
1259
|
visibleChildren.push(afterPseudoElement);
|
1281
1260
|
}
|
1282
1261
|
|
1262
|
+
const backdropPseudoElement = node.backdropPseudoElement();
|
1263
|
+
if (backdropPseudoElement) {
|
1264
|
+
visibleChildren.push(backdropPseudoElement);
|
1265
|
+
}
|
1266
|
+
|
1283
1267
|
return visibleChildren;
|
1284
1268
|
}
|
1285
1269
|
|
@@ -1463,8 +1447,8 @@ export class ElementsTreeOutline extends
|
|
1463
1447
|
}
|
1464
1448
|
}
|
1465
1449
|
|
1466
|
-
private
|
1467
|
-
|
1450
|
+
private topLayerElementsChanged(): void {
|
1451
|
+
void this.topLayerContainer?.throttledUpdateTopLayerElements();
|
1468
1452
|
}
|
1469
1453
|
|
1470
1454
|
private static treeOutlineSymbol = Symbol('treeOutline');
|