chrome-devtools-frontend 1.0.1153166 → 1.0.1155899

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.
Files changed (61) hide show
  1. package/config/gni/devtools_grd_files.gni +3 -2
  2. package/front_end/core/common/Revealer.ts +1 -1
  3. package/front_end/core/host/InspectorFrontendHostAPI.ts +2 -0
  4. package/front_end/core/host/UserMetrics.ts +32 -12
  5. package/front_end/core/platform/array-utilities.ts +25 -9
  6. package/front_end/core/sdk/ChildTargetManager.ts +2 -1
  7. package/front_end/core/sdk/FilmStripModel.ts +35 -25
  8. package/front_end/devtools_compatibility.js +2 -0
  9. package/front_end/entrypoints/lighthouse_worker/LighthouseWorkerService.ts +8 -2
  10. package/front_end/entrypoints/worker_app/worker_app.ts +0 -1
  11. package/front_end/generated/InspectorBackendCommands.js +2 -1
  12. package/front_end/generated/protocol.ts +36 -0
  13. package/front_end/models/bindings/PresentationConsoleMessageHelper.ts +90 -73
  14. package/front_end/models/issues_manager/IssuesManager.ts +5 -0
  15. package/front_end/models/issues_manager/SourceFrameIssuesManager.ts +31 -61
  16. package/front_end/models/issues_manager/StylesheetLoadingIssue.ts +69 -0
  17. package/front_end/models/issues_manager/descriptions/stylesheetLateImport.md +4 -0
  18. package/front_end/models/issues_manager/descriptions/stylesheetRequestFailed.md +3 -0
  19. package/front_end/models/issues_manager/issues_manager.ts +2 -0
  20. package/front_end/models/timeline_model/TimelineModel.ts +4 -0
  21. package/front_end/models/trace/ModelImpl.ts +1 -0
  22. package/front_end/models/trace/README.md +73 -17
  23. package/front_end/models/trace/handlers/NetworkRequestsHandler.ts +1 -1
  24. package/front_end/models/trace/handlers/RendererHandler.ts +33 -143
  25. package/front_end/models/trace/handlers/UserTimings.md +1 -1
  26. package/front_end/models/trace/types/TraceEvents.ts +3 -2
  27. package/front_end/panels/application/ApplicationPanelSidebar.ts +9 -6
  28. package/front_end/panels/application/PreloadingTreeElement.ts +25 -7
  29. package/front_end/panels/application/preloading/PreloadingView.ts +64 -31
  30. package/front_end/panels/application/preloading/components/UsedPreloadingView.ts +19 -9
  31. package/front_end/panels/console/ConsoleViewMessage.ts +14 -2
  32. package/front_end/panels/elements/ElementsPanel.ts +2 -3
  33. package/front_end/panels/elements/components/LayoutPane.ts +256 -60
  34. package/front_end/panels/elements/elements-legacy.ts +0 -3
  35. package/front_end/panels/elements/elements-meta.ts +10 -2
  36. package/front_end/panels/elements/elements.ts +0 -2
  37. package/front_end/panels/network/NetworkDataGridNode.ts +8 -0
  38. package/front_end/panels/network/NetworkLogView.ts +2 -1
  39. package/front_end/panels/network/NetworkPanel.ts +12 -1
  40. package/front_end/panels/recorder/components/ExtensionView.ts +1 -1
  41. package/front_end/panels/sources/DebuggerPlugin.ts +7 -4
  42. package/front_end/panels/sources/SourcesPanel.ts +1 -1
  43. package/front_end/panels/sources/components/BreakpointsView.ts +406 -89
  44. package/front_end/panels/sources/sources-meta.ts +13 -4
  45. package/front_end/panels/sources/sources.ts +0 -2
  46. package/front_end/panels/timeline/TimelineFlameChartDataProvider.ts +1 -1
  47. package/front_end/panels/timeline/TimelineFlameChartNetworkDataProvider.ts +106 -95
  48. package/front_end/panels/timeline/TimelineFlameChartView.ts +1 -1
  49. package/front_end/panels/timeline/TimelinePaintProfilerView.ts +5 -0
  50. package/front_end/panels/timeline/TimelinePanel.ts +8 -8
  51. package/front_end/ui/legacy/UIUtils.ts +1 -1
  52. package/front_end/ui/legacy/components/perf_ui/.eslintrc.js +18 -0
  53. package/front_end/ui/legacy/components/perf_ui/FlameChart.ts +5 -1
  54. package/front_end/ui/legacy/components/perf_ui/TimelineOverviewPane.ts +5 -2
  55. package/front_end/ui/legacy/components/utils/Linkifier.ts +10 -0
  56. package/package.json +1 -1
  57. package/scripts/build/generate_deprecations.py +3 -0
  58. package/front_end/panels/elements/LayoutSidebarPane.ts +0 -249
  59. package/front_end/panels/sources/BreakpointsSidebarPane.ts +0 -480
  60. package/front_end/ui/components/docs/layout_pane/basic.html +0 -25
  61. package/front_end/ui/components/docs/layout_pane/basic.ts +0 -78
@@ -37,6 +37,9 @@ def deprecations_from_file(file_name):
37
37
  meta = {}
38
38
  ui_strings = {}
39
39
  for entry in doc["data"]:
40
+ if "obsolete_to_be_removed_after_milestone" in entry:
41
+ continue
42
+
40
43
  name = entry["name"]
41
44
 
42
45
  meta_for_entry = {}
@@ -1,249 +0,0 @@
1
- // Copyright (c) 2020 The Chromium Authors. All rights reserved.
2
- // Use of this source code is governed by a BSD-style license that can be
3
- // found in the LICENSE file.
4
-
5
- import * as Common from '../../core/common/common.js';
6
- import * as SDK from '../../core/sdk/sdk.js';
7
- import * as UI from '../../ui/legacy/legacy.js';
8
- import * as ElementsComponents from './components/components.js';
9
-
10
- import {ElementsPanel} from './ElementsPanel.js';
11
-
12
- const nodeToLayoutElement = (node: SDK.DOMModel.DOMNode): ElementsComponents.LayoutPane.LayoutElement => {
13
- const className = node.getAttribute('class');
14
- const nodeId = node.id;
15
- return {
16
- id: nodeId,
17
- color: '#000',
18
- name: node.localName(),
19
- domId: node.getAttribute('id'),
20
- domClasses: className ? className.split(/\s+/).filter(s => Boolean(s)) : undefined,
21
- enabled: false,
22
- reveal: (): void => {
23
- void ElementsPanel.instance().revealAndSelectNode(node, true, true);
24
- void node.scrollIntoView();
25
- },
26
- highlight: (): void => {
27
- node.highlight();
28
- },
29
- hideHighlight: (): void => {
30
- SDK.OverlayModel.OverlayModel.hideDOMNodeHighlight();
31
- },
32
- toggle: (_value: boolean): never => {
33
- throw new Error('Not implemented');
34
- },
35
- setColor(_value: string): never {
36
- throw new Error('Not implemented');
37
- },
38
- };
39
- };
40
-
41
- const gridNodesToElements = (nodes: SDK.DOMModel.DOMNode[]): ElementsComponents.LayoutPane.LayoutElement[] => {
42
- return nodes.map(node => {
43
- const layoutElement = nodeToLayoutElement(node);
44
- const nodeId = node.id;
45
- return {
46
- ...layoutElement,
47
- color: node.domModel().overlayModel().colorOfGridInPersistentOverlay(nodeId) || '#000',
48
- enabled: node.domModel().overlayModel().isHighlightedGridInPersistentOverlay(nodeId),
49
- toggle: (value: boolean): void => {
50
- if (value) {
51
- node.domModel().overlayModel().highlightGridInPersistentOverlay(nodeId);
52
- } else {
53
- node.domModel().overlayModel().hideGridInPersistentOverlay(nodeId);
54
- }
55
- },
56
- setColor(value: string): void {
57
- this.color = value;
58
- node.domModel().overlayModel().setColorOfGridInPersistentOverlay(nodeId, value);
59
- },
60
- };
61
- });
62
- };
63
-
64
- const flexContainerNodesToElements = (nodes: SDK.DOMModel.DOMNode[]): ElementsComponents.LayoutPane.LayoutElement[] => {
65
- return nodes.map(node => {
66
- const layoutElement = nodeToLayoutElement(node);
67
- const nodeId = node.id;
68
- return {
69
- ...layoutElement,
70
- color: node.domModel().overlayModel().colorOfFlexInPersistentOverlay(nodeId) || '#000',
71
- enabled: node.domModel().overlayModel().isHighlightedFlexContainerInPersistentOverlay(nodeId),
72
- toggle: (value: boolean): void => {
73
- if (value) {
74
- node.domModel().overlayModel().highlightFlexContainerInPersistentOverlay(nodeId);
75
- } else {
76
- node.domModel().overlayModel().hideFlexContainerInPersistentOverlay(nodeId);
77
- }
78
- },
79
- setColor(value: string): void {
80
- this.color = value;
81
- node.domModel().overlayModel().setColorOfFlexInPersistentOverlay(nodeId, value);
82
- },
83
- };
84
- });
85
- };
86
-
87
- let layoutSidebarPaneInstance: LayoutSidebarPane;
88
- export class LayoutSidebarPane extends UI.ThrottledWidget.ThrottledWidget {
89
- private layoutPane: ElementsComponents.LayoutPane.LayoutPane;
90
- private readonly settings: string[];
91
- private readonly uaShadowDOMSetting: Common.Settings.Setting<boolean>;
92
- // TODO(crbug.com/1172300) Ignored during the jsdoc to ts migration
93
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
94
- private readonly boundOnSettingChanged: (event: any) => void;
95
- private domModels: SDK.DOMModel.DOMModel[];
96
-
97
- constructor(layoutPane: ElementsComponents.LayoutPane.LayoutPane, throttleTimeout?: number) {
98
- super(true /* isWebComponent */, throttleTimeout);
99
- this.layoutPane = layoutPane;
100
- this.contentElement.appendChild(this.layoutPane);
101
- this.settings = ['showGridLineLabels', 'showGridTrackSizes', 'showGridAreas', 'extendGridLines'];
102
- this.uaShadowDOMSetting = Common.Settings.Settings.instance().moduleSetting('showUAShadowDOM');
103
- this.boundOnSettingChanged = this.onSettingChanged.bind(this);
104
- this.domModels = [];
105
- }
106
-
107
- static instance(opts?: {
108
- forceNew: boolean,
109
- layoutPaneComponent: ElementsComponents.LayoutPane.LayoutPane,
110
- throttleTimeout: number,
111
- }): LayoutSidebarPane {
112
- if (!layoutSidebarPaneInstance || opts?.forceNew) {
113
- layoutSidebarPaneInstance = new LayoutSidebarPane(
114
- opts?.layoutPaneComponent || new ElementsComponents.LayoutPane.LayoutPane(), opts?.throttleTimeout);
115
- }
116
-
117
- return layoutSidebarPaneInstance;
118
- }
119
-
120
- modelAdded(domModel: SDK.DOMModel.DOMModel): void {
121
- const overlayModel = domModel.overlayModel();
122
- overlayModel.addEventListener(SDK.OverlayModel.Events.PersistentGridOverlayStateChanged, this.update, this);
123
- overlayModel.addEventListener(
124
- SDK.OverlayModel.Events.PersistentFlexContainerOverlayStateChanged, this.update, this);
125
- this.domModels.push(domModel);
126
- }
127
-
128
- modelRemoved(domModel: SDK.DOMModel.DOMModel): void {
129
- const overlayModel = domModel.overlayModel();
130
- overlayModel.removeEventListener(SDK.OverlayModel.Events.PersistentGridOverlayStateChanged, this.update, this);
131
- overlayModel.removeEventListener(
132
- SDK.OverlayModel.Events.PersistentFlexContainerOverlayStateChanged, this.update, this);
133
- this.domModels = this.domModels.filter(model => model !== domModel);
134
- }
135
-
136
- private async fetchNodesByStyle(style: {
137
- name: string,
138
- value: string,
139
- }[]): Promise<SDK.DOMModel.DOMNode[]> {
140
- const showUAShadowDOM = this.uaShadowDOMSetting.get();
141
-
142
- const nodes = [];
143
- for (const domModel of this.domModels) {
144
- try {
145
- const nodeIds = await domModel.getNodesByStyle(style, true /* pierce */);
146
- for (const nodeId of nodeIds) {
147
- const node = domModel.nodeForId(nodeId);
148
- if (node !== null && (showUAShadowDOM || !node.ancestorUserAgentShadowRoot())) {
149
- nodes.push(node);
150
- }
151
- }
152
- } catch (error) {
153
- // TODO(crbug.com/1167706): Sometimes in E2E tests the layout panel is updated after a DOM node
154
- // has been removed. This causes an error that a node has not been found.
155
- // We can skip nodes that resulted in an error.
156
- console.warn(error);
157
- }
158
- }
159
-
160
- return nodes;
161
- }
162
-
163
- private async fetchGridNodes(): Promise<SDK.DOMModel.DOMNode[]> {
164
- return await this.fetchNodesByStyle([{name: 'display', value: 'grid'}, {name: 'display', value: 'inline-grid'}]);
165
- }
166
-
167
- private async fetchFlexContainerNodes(): Promise<SDK.DOMModel.DOMNode[]> {
168
- return await this.fetchNodesByStyle([{name: 'display', value: 'flex'}, {name: 'display', value: 'inline-flex'}]);
169
- }
170
-
171
- private mapSettings(): ElementsComponents.LayoutPaneUtils.Setting[] {
172
- const settings = [];
173
- for (const settingName of this.settings) {
174
- const setting = Common.Settings.Settings.instance().moduleSetting(settingName);
175
- const settingValue = setting.get();
176
- const settingType = setting.type();
177
- if (!settingType) {
178
- throw new Error('A setting provided to LayoutSidebarPane does not have a setting type');
179
- }
180
- if (settingType !== Common.Settings.SettingType.BOOLEAN && settingType !== Common.Settings.SettingType.ENUM) {
181
- throw new Error('A setting provided to LayoutSidebarPane does not have a supported setting type');
182
- }
183
- const mappedSetting = {
184
- type: settingType,
185
- name: setting.name,
186
- title: setting.title(),
187
- };
188
- if (typeof settingValue === 'boolean') {
189
- settings.push({
190
- ...mappedSetting,
191
- value: settingValue,
192
- options: setting.options().map(opt => ({
193
- ...opt,
194
- value: (opt.value as boolean),
195
- })),
196
- });
197
- } else if (typeof settingValue === 'string') {
198
- settings.push({
199
- ...mappedSetting,
200
- value: settingValue,
201
- options: setting.options().map(opt => ({
202
- ...opt,
203
- value: (opt.value as string),
204
- })),
205
- });
206
- }
207
- }
208
- return settings;
209
- }
210
-
211
- override async doUpdate(): Promise<void> {
212
- this.layoutPane.data = {
213
- gridElements: gridNodesToElements(await this.fetchGridNodes()),
214
- flexContainerElements: flexContainerNodesToElements(await this.fetchFlexContainerNodes()),
215
- settings: this.mapSettings(),
216
- };
217
- }
218
-
219
- // TODO(crbug.com/1172300) Ignored during the jsdoc to ts migration
220
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
221
- onSettingChanged(event: any): void {
222
- Common.Settings.Settings.instance().moduleSetting(event.data.setting).set(event.data.value);
223
- }
224
-
225
- override wasShown(): void {
226
- for (const setting of this.settings) {
227
- Common.Settings.Settings.instance().moduleSetting(setting).addChangeListener(this.update, this);
228
- }
229
- this.layoutPane.addEventListener('settingchanged', this.boundOnSettingChanged);
230
- for (const domModel of this.domModels) {
231
- this.modelRemoved(domModel);
232
- }
233
- this.domModels = [];
234
- SDK.TargetManager.TargetManager.instance().observeModels(SDK.DOMModel.DOMModel, this, {scoped: true});
235
- UI.Context.Context.instance().addFlavorChangeListener(SDK.DOMModel.DOMNode, this.update, this);
236
- this.uaShadowDOMSetting.addChangeListener(this.update, this);
237
- this.update();
238
- }
239
-
240
- override willHide(): void {
241
- for (const setting of this.settings) {
242
- Common.Settings.Settings.instance().moduleSetting(setting).removeChangeListener(this.update, this);
243
- }
244
- this.layoutPane.removeEventListener('settingchanged', this.boundOnSettingChanged);
245
- SDK.TargetManager.TargetManager.instance().unobserveModels(SDK.DOMModel.DOMModel, this);
246
- UI.Context.Context.instance().removeFlavorChangeListener(SDK.DOMModel.DOMNode, this.update, this);
247
- this.uaShadowDOMSetting.removeChangeListener(this.update, this);
248
- }
249
- }