chrome-devtools-frontend 1.0.998142 → 1.0.999279

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 (94) hide show
  1. package/.clang-format +1 -0
  2. package/front_end/core/common/Color.ts +9 -1
  3. package/front_end/core/common/Object.ts +2 -1
  4. package/front_end/core/common/Settings.ts +13 -1
  5. package/front_end/core/host/InspectorFrontendHost.ts +4 -1
  6. package/front_end/core/host/UserMetrics.ts +2 -1
  7. package/front_end/core/i18n/locales/en-US.json +4 -1
  8. package/front_end/core/i18n/locales/en-XL.json +4 -1
  9. package/front_end/core/sdk/CSSProperty.ts +6 -7
  10. package/front_end/core/sdk/ChildTargetManager.ts +0 -3
  11. package/front_end/core/sdk/ConsoleModel.ts +2 -1
  12. package/front_end/core/sdk/DebuggerModel.ts +4 -30
  13. package/front_end/core/sdk/NetworkManager.ts +3 -1
  14. package/front_end/core/sdk/RuntimeModel.ts +7 -1
  15. package/front_end/core/sdk/SourceMapManager.ts +10 -1
  16. package/front_end/entrypoints/formatter_worker/FormatterWorker.ts +5 -1
  17. package/front_end/entrypoints/inspector_main/RenderingOptions.ts +31 -0
  18. package/front_end/entrypoints/inspector_main/inspector_main-meta.ts +15 -0
  19. package/front_end/entrypoints/lighthouse_worker/LighthouseWorkerService.ts +6 -0
  20. package/front_end/generated/InspectorBackendCommands.js +0 -1
  21. package/front_end/generated/protocol.ts +0 -1
  22. package/front_end/legacy/legacy-defs.d.ts +2 -2
  23. package/front_end/models/formatter/ScriptFormatter.ts +3 -1
  24. package/front_end/models/issues_manager/DeprecationIssue.ts +202 -201
  25. package/front_end/models/issues_manager/SourceFrameIssuesManager.ts +5 -1
  26. package/front_end/models/text_utils/CodeMirrorUtils.ts +14 -17
  27. package/front_end/models/timeline_model/TimelineModel.ts +1 -1
  28. package/front_end/panels/application/IndexedDBViews.ts +5 -2
  29. package/front_end/panels/console/ConsoleView.ts +9 -1
  30. package/front_end/panels/css_overview/CSSOverviewCompletedView.ts +3 -1
  31. package/front_end/panels/elements/PropertiesWidget.ts +0 -1
  32. package/front_end/panels/elements/StylesSidebarPane.ts +7 -1
  33. package/front_end/panels/lighthouse/LighthouseController.ts +19 -12
  34. package/front_end/panels/lighthouse/LighthousePanel.ts +3 -2
  35. package/front_end/panels/lighthouse/LighthouseStartView.ts +10 -4
  36. package/front_end/panels/lighthouse/LighthouseStartViewFR.ts +50 -48
  37. package/front_end/panels/lighthouse/LighthouseTimespanView.ts +9 -2
  38. package/front_end/panels/lighthouse/lighthouseDialog.css +5 -0
  39. package/front_end/panels/lighthouse/lighthouseStartView.css +3 -3
  40. package/front_end/panels/mobile_throttling/ThrottlingManager.ts +3 -1
  41. package/front_end/panels/network/NetworkLogView.ts +5 -1
  42. package/front_end/panels/network/NetworkLogViewColumns.ts +3 -1
  43. package/front_end/panels/network/RequestTimingView.ts +1 -1
  44. package/front_end/panels/profiler/HeapSnapshotDataGrids.ts +8 -1
  45. package/front_end/panels/profiler/HeapSnapshotGridNodes.ts +3 -1
  46. package/front_end/panels/profiler/HeapSnapshotView.ts +14 -2
  47. package/front_end/panels/sources/SourcesPanel.ts +7 -1
  48. package/front_end/panels/timeline/TimelineController.ts +1 -1
  49. package/front_end/panels/timeline/TimelineFlameChartView.ts +4 -1
  50. package/front_end/panels/timeline/TimelineHistoryManager.ts +6 -1
  51. package/front_end/panels/timeline/TimelinePanel.ts +10 -1
  52. package/front_end/panels/timeline/TimelineUIUtils.ts +7 -28
  53. package/front_end/panels/web_audio/graph_visualizer/GraphView.ts +3 -1
  54. package/front_end/panels/web_audio/graph_visualizer/NodeRendererUtility.ts +8 -1
  55. package/front_end/panels/web_audio/graph_visualizer/NodeView.ts +13 -1
  56. package/front_end/panels/web_audio/web_audio.ts +8 -1
  57. package/front_end/third_party/puppeteer/README.chromium +1 -1
  58. package/front_end/third_party/puppeteer/package/README.md +11 -11
  59. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Input.d.ts +1 -1
  60. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Input.d.ts.map +1 -1
  61. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/JSHandle.d.ts +2 -1
  62. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/JSHandle.d.ts.map +1 -1
  63. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/JSHandle.js.map +1 -1
  64. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/LaunchOptions.d.ts +1 -1
  65. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/LaunchOptions.d.ts.map +1 -1
  66. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/Launcher.d.ts.map +1 -1
  67. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/Launcher.js +1 -1
  68. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/Launcher.js.map +1 -1
  69. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Input.d.ts +1 -1
  70. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Input.d.ts.map +1 -1
  71. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/JSHandle.d.ts +2 -1
  72. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/JSHandle.d.ts.map +1 -1
  73. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/JSHandle.js.map +1 -1
  74. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/LaunchOptions.d.ts +1 -1
  75. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/LaunchOptions.d.ts.map +1 -1
  76. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/Launcher.d.ts.map +1 -1
  77. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/Launcher.js +1 -1
  78. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/Launcher.js.map +1 -1
  79. package/front_end/third_party/puppeteer/package/lib/types.d.ts +3 -3
  80. package/front_end/third_party/puppeteer/package/package.json +13 -12
  81. package/front_end/ui/components/buttons/button.css +16 -3
  82. package/front_end/ui/components/data_grid/DataGrid.ts +9 -1
  83. package/front_end/ui/components/docs/button/basic.ts +10 -0
  84. package/front_end/ui/components/linear_memory_inspector/LinearMemoryInspector.ts +11 -3
  85. package/front_end/ui/components/linear_memory_inspector/ValueInterpreterDisplay.ts +12 -1
  86. package/front_end/ui/components/tree_outline/TreeOutline.ts +16 -11
  87. package/front_end/ui/legacy/ActionRegistration.ts +1 -0
  88. package/front_end/ui/legacy/Fragment.ts +2 -2
  89. package/front_end/ui/legacy/Toolbar.ts +4 -0
  90. package/front_end/ui/legacy/ViewManager.ts +12 -1
  91. package/front_end/ui/legacy/XLink.ts +6 -1
  92. package/front_end/ui/legacy/components/inline_editor/CSSAngle.ts +8 -1
  93. package/front_end/ui/legacy/components/inline_editor/CSSAngleEditor.ts +7 -1
  94. package/package.json +1 -1
@@ -28,14 +28,17 @@
28
28
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29
29
  */
30
30
 
31
- import indexedDBViewsStyles from './indexedDBViews.css.js';
32
31
  import * as i18n from '../../core/i18n/i18n.js';
32
+
33
+ import indexedDBViewsStyles from './indexedDBViews.css.js';
34
+
33
35
  import type * as SDK from '../../core/sdk/sdk.js';
34
36
  import * as DataGrid from '../../ui/legacy/components/data_grid/data_grid.js';
35
37
  import * as ObjectUI from '../../ui/legacy/components/object_ui/object_ui.js';
36
38
  import * as UI from '../../ui/legacy/legacy.js';
37
39
 
38
- import type {Database, DatabaseId, Entry, Index, IndexedDBModel, ObjectStore, ObjectStoreMetadata} from './IndexedDBModel.js';
40
+ import type {
41
+ Database, DatabaseId, Entry, Index, IndexedDBModel, ObjectStore, ObjectStoreMetadata} from './IndexedDBModel.js';
39
42
 
40
43
  const UIStrings = {
41
44
  /**
@@ -56,7 +56,15 @@ import {ConsoleFilter, FilterType} from './ConsoleFilter.js';
56
56
  import {ConsolePinPane} from './ConsolePinPane.js';
57
57
  import {ConsolePrompt, Events as ConsolePromptEvents} from './ConsolePrompt.js';
58
58
  import {ConsoleSidebar, Events} from './ConsoleSidebar.js';
59
- import {ConsoleCommand, ConsoleCommandResult, ConsoleGroupViewMessage, ConsoleTableMessageView, ConsoleViewMessage, getMessageForElement, MaxLengthForLinks} from './ConsoleViewMessage.js';
59
+ import {
60
+ ConsoleCommand,
61
+ ConsoleCommandResult,
62
+ ConsoleGroupViewMessage,
63
+ ConsoleTableMessageView,
64
+ ConsoleViewMessage,
65
+ getMessageForElement,
66
+ MaxLengthForLinks,
67
+ } from './ConsoleViewMessage.js';
60
68
 
61
69
  import type {ConsoleViewportElement, ConsoleViewportProvider} from './ConsoleViewport.js';
62
70
  import {ConsoleViewport} from './ConsoleViewport.js';
@@ -14,7 +14,9 @@ import * as UI from '../../ui/legacy/legacy.js';
14
14
  import type * as Protocol from '../../generated/protocol.js';
15
15
 
16
16
  import cssOverviewCompletedViewStyles from './cssOverviewCompletedView.css.js';
17
- import type {OverviewController, PopulateNodesEvent, PopulateNodesEventNodes, PopulateNodesEventNodeTypes} from './CSSOverviewController.js';
17
+ import type {
18
+ OverviewController, PopulateNodesEvent, PopulateNodesEventNodes, PopulateNodesEventNodeTypes} from
19
+ './CSSOverviewController.js';
18
20
  import {Events as CSSOverViewControllerEvents} from './CSSOverviewController.js';
19
21
  import {CSSOverviewSidebarPanel, SidebarEvents} from './CSSOverviewSidebarPanel.js';
20
22
  import type {UnusedDeclaration} from './CSSOverviewUnusedDeclarations.js';
@@ -212,4 +212,3 @@ export class PropertiesWidget extends UI.ThrottledWidget.ThrottledWidget {
212
212
  this.registerCSSFiles([propertiesWidgetStyles]);
213
213
  }
214
214
  }
215
-
@@ -61,7 +61,13 @@ import {StylePropertyHighlighter} from './StylePropertyHighlighter.js';
61
61
  import stylesSidebarPaneStyles from './stylesSidebarPane.css.js';
62
62
 
63
63
  import type {StylePropertyTreeElement} from './StylePropertyTreeElement.js';
64
- import {StylePropertiesSection, BlankStylePropertiesSection, KeyframePropertiesSection, HighlightPseudoStylePropertiesSection} from './StylePropertiesSection.js';
64
+ import {
65
+ StylePropertiesSection,
66
+ BlankStylePropertiesSection,
67
+ KeyframePropertiesSection,
68
+ HighlightPseudoStylePropertiesSection,
69
+ } from './StylePropertiesSection.js';
70
+
65
71
  import * as LayersWidget from './LayersWidget.js';
66
72
 
67
73
  const UIStrings = {
@@ -399,14 +399,16 @@ export const Presets: Preset[] = [
399
399
  title: i18nLazyString(UIStrings.performance),
400
400
  description: i18nLazyString(UIStrings.howLongDoesThisAppTakeToShow),
401
401
  plugin: false,
402
+ supportedModes: ['navigation', 'timespan', 'snapshot'],
402
403
  },
403
404
  {
404
405
  setting: Common.Settings.Settings.instance().createSetting(
405
- 'lighthouse.cat_pwa', true, Common.Settings.SettingStorageType.Synced),
406
- configID: 'pwa',
407
- title: i18nLazyString(UIStrings.progressiveWebApp),
408
- description: i18nLazyString(UIStrings.doesThisPageMeetTheStandardOfA),
406
+ 'lighthouse.cat_a11y', true, Common.Settings.SettingStorageType.Synced),
407
+ configID: 'accessibility',
408
+ title: i18nLazyString(UIStrings.accessibility),
409
+ description: i18nLazyString(UIStrings.isThisPageUsableByPeopleWith),
409
410
  plugin: false,
411
+ supportedModes: ['navigation', 'snapshot'],
410
412
  },
411
413
  {
412
414
  setting: Common.Settings.Settings.instance().createSetting(
@@ -415,14 +417,7 @@ export const Presets: Preset[] = [
415
417
  title: i18nLazyString(UIStrings.bestPractices),
416
418
  description: i18nLazyString(UIStrings.doesThisPageFollowBestPractices),
417
419
  plugin: false,
418
- },
419
- {
420
- setting: Common.Settings.Settings.instance().createSetting(
421
- 'lighthouse.cat_a11y', true, Common.Settings.SettingStorageType.Synced),
422
- configID: 'accessibility',
423
- title: i18nLazyString(UIStrings.accessibility),
424
- description: i18nLazyString(UIStrings.isThisPageUsableByPeopleWith),
425
- plugin: false,
420
+ supportedModes: ['navigation', 'timespan', 'snapshot'],
426
421
  },
427
422
  {
428
423
  setting: Common.Settings.Settings.instance().createSetting(
@@ -431,6 +426,16 @@ export const Presets: Preset[] = [
431
426
  title: i18nLazyString(UIStrings.seo),
432
427
  description: i18nLazyString(UIStrings.isThisPageOptimizedForSearch),
433
428
  plugin: false,
429
+ supportedModes: ['navigation', 'snapshot'],
430
+ },
431
+ {
432
+ setting: Common.Settings.Settings.instance().createSetting(
433
+ 'lighthouse.cat_pwa', true, Common.Settings.SettingStorageType.Synced),
434
+ configID: 'pwa',
435
+ title: i18nLazyString(UIStrings.progressiveWebApp),
436
+ description: i18nLazyString(UIStrings.doesThisPageMeetTheStandardOfA),
437
+ plugin: false,
438
+ supportedModes: ['navigation'],
434
439
  },
435
440
  {
436
441
  setting: Common.Settings.Settings.instance().createSetting(
@@ -439,6 +444,7 @@ export const Presets: Preset[] = [
439
444
  configID: 'lighthouse-plugin-publisher-ads',
440
445
  title: i18nLazyString(UIStrings.publisherAds),
441
446
  description: i18nLazyString(UIStrings.isThisPageOptimizedForAdSpeedAnd),
447
+ supportedModes: ['navigation'],
442
448
  },
443
449
  ];
444
450
 
@@ -567,6 +573,7 @@ export interface Preset {
567
573
  title: () => Common.UIString.LocalizedString;
568
574
  description: () => Common.UIString.LocalizedString;
569
575
  plugin: boolean;
576
+ supportedModes: string[];
570
577
  }
571
578
  export interface RuntimeSetting {
572
579
  setting: Common.Settings.Setting<string|boolean>;
@@ -12,7 +12,8 @@ import * as EmulationModel from '../../models/emulation/emulation.js';
12
12
  import * as UI from '../../ui/legacy/legacy.js';
13
13
  import * as Emulation from '../emulation/emulation.js';
14
14
 
15
- import type {AuditProgressChangedEvent, PageAuditabilityChangedEvent, PageWarningsChangedEvent} from './LighthouseController.js';
15
+ import type {
16
+ AuditProgressChangedEvent, PageAuditabilityChangedEvent, PageWarningsChangedEvent} from './LighthouseController.js';
16
17
  import {Events, LighthouseController} from './LighthouseController.js';
17
18
  import lighthousePanelStyles from './lighthousePanel.css.js';
18
19
  import type {LighthouseRun} from './LighthouseProtocolService.js';
@@ -174,7 +175,7 @@ export class LighthousePanel extends UI.Panel.Panel {
174
175
  return;
175
176
  }
176
177
 
177
- this.startView.updateMode();
178
+ this.startView.refresh();
178
179
 
179
180
  this.unauditableExplanation = evt.data.helpText;
180
181
  this.startView.setUnauditableExplanation(evt.data.helpText);
@@ -102,20 +102,26 @@ export class StartView extends UI.Widget.Widget {
102
102
  }
103
103
  }
104
104
 
105
- protected populateFormControls(fragment: UI.Fragment.Fragment): void {
105
+ protected populateFormControls(fragment: UI.Fragment.Fragment, mode?: string): void {
106
106
  // Populate the device type
107
107
  const deviceTypeFormElements = fragment.$('device-type-form-elements');
108
108
  this.populateRuntimeSettingAsRadio('lighthouse.device_type', i18nString(UIStrings.device), deviceTypeFormElements);
109
109
 
110
110
  // Populate the categories
111
- const categoryFormElements = fragment.$('categories-form-elements');
112
- const pluginFormElements = fragment.$('plugins-form-elements');
111
+ const categoryFormElements = fragment.$('categories-form-elements') as HTMLElement;
112
+ categoryFormElements.textContent = '';
113
+ const pluginFormElements = fragment.$('plugins-form-elements') as HTMLElement;
114
+ pluginFormElements.textContent = '';
113
115
  for (const preset of Presets) {
114
116
  const formElements = preset.plugin ? pluginFormElements : categoryFormElements;
115
117
  preset.setting.setTitle(preset.title());
116
118
  const checkbox = new UI.Toolbar.ToolbarSettingCheckbox(preset.setting, preset.description());
117
119
  const row = formElements.createChild('div', 'vbox lighthouse-launcher-row');
118
120
  row.appendChild(checkbox.element);
121
+ if (mode && !preset.supportedModes.includes(mode)) {
122
+ checkbox.setEnabled(false);
123
+ checkbox.setIndeterminate(true);
124
+ }
119
125
  }
120
126
  UI.ARIAUtils.markAsGroup(categoryFormElements);
121
127
  UI.ARIAUtils.setAccessibleName(categoryFormElements, i18nString(UIStrings.categories));
@@ -181,7 +187,7 @@ export class StartView extends UI.Widget.Widget {
181
187
  this.contentElement.style.overflow = 'auto';
182
188
  }
183
189
 
184
- updateMode(): void {
190
+ refresh(): void {
185
191
  // Do nothing in default case.
186
192
  }
187
193
 
@@ -46,6 +46,52 @@ const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
46
46
  export class StartViewFR extends StartView {
47
47
  protected render(): void {
48
48
  super.render();
49
+ this.refresh();
50
+ }
51
+
52
+ private createStartButton(mode: string): HTMLButtonElement {
53
+ let buttonLabel: Platform.UIString.LocalizedString;
54
+ let callback: () => void;
55
+
56
+ if (mode === 'timespan') {
57
+ buttonLabel = i18nString(UIStrings.startTimespan);
58
+ callback = (): void => {
59
+ this.controller.dispatchEventToListeners(
60
+ Events.RequestLighthouseTimespanStart,
61
+ /* keyboardInitiated */ this.startButton.matches(':focus-visible'),
62
+ );
63
+ };
64
+ } else if (mode === 'snapshot') {
65
+ buttonLabel = i18nString(UIStrings.analyzeSnapshot);
66
+ callback = (): void => {
67
+ this.controller.dispatchEventToListeners(
68
+ Events.RequestLighthouseStart,
69
+ /* keyboardInitiated */ this.startButton.matches(':focus-visible'),
70
+ );
71
+ };
72
+ } else {
73
+ buttonLabel = i18nString(UIStrings.analyzeNavigation);
74
+ callback = (): void => {
75
+ this.controller.dispatchEventToListeners(
76
+ Events.RequestLighthouseStart,
77
+ /* keyboardInitiated */ this.startButton.matches(':focus-visible'),
78
+ );
79
+ };
80
+ }
81
+
82
+ return UI.UIUtils.createTextButton(
83
+ buttonLabel,
84
+ callback,
85
+ /* className */ '',
86
+ /* primary */ true,
87
+ );
88
+ }
89
+
90
+ refresh(): void {
91
+ const {mode} = this.controller.getFlags();
92
+
93
+ this.startButton = this.createStartButton(mode);
94
+
49
95
  const fragment = UI.Fragment.Fragment.build`
50
96
  <form class="lighthouse-start-view-fr">
51
97
  <header class="hbox">
@@ -82,7 +128,7 @@ export class StartViewFR extends StartView {
82
128
  this.warningText = fragment.$('warning-text');
83
129
 
84
130
  // The previous radios are removed later and don't exist on the new fragment yet.
85
- this.populateFormControls(fragment);
131
+ this.populateFormControls(fragment, mode);
86
132
 
87
133
  // Populate the Lighthouse mode
88
134
  const modeFormElements = fragment.$('mode-form-elements');
@@ -90,7 +136,9 @@ export class StartViewFR extends StartView {
90
136
 
91
137
  this.contentElement.textContent = '';
92
138
  this.contentElement.append(fragment.element());
93
- this.updateMode();
139
+
140
+ // Ensure the correct layout is used after refresh.
141
+ this.onResize();
94
142
  }
95
143
 
96
144
  onResize(): void {
@@ -107,50 +155,4 @@ export class StartViewFR extends StartView {
107
155
  optionsEl.classList.toggle('narrow', useNarrowLayout);
108
156
  }
109
157
  }
110
-
111
- updateMode(): void {
112
- const {mode} = this.controller.getFlags();
113
-
114
- let buttonLabel: Platform.UIString.LocalizedString;
115
- let callback: () => void;
116
-
117
- if (mode === 'timespan') {
118
- buttonLabel = i18nString(UIStrings.startTimespan);
119
- callback = (): void => {
120
- this.controller.dispatchEventToListeners(
121
- Events.RequestLighthouseTimespanStart,
122
- /* keyboardInitiated */ this.startButton.matches(':focus-visible'),
123
- );
124
- };
125
- } else if (mode === 'snapshot') {
126
- buttonLabel = i18nString(UIStrings.analyzeSnapshot);
127
- callback = (): void => {
128
- this.controller.dispatchEventToListeners(
129
- Events.RequestLighthouseStart,
130
- /* keyboardInitiated */ this.startButton.matches(':focus-visible'),
131
- );
132
- };
133
- } else {
134
- buttonLabel = i18nString(UIStrings.analyzeNavigation);
135
- callback = (): void => {
136
- this.controller.dispatchEventToListeners(
137
- Events.RequestLighthouseStart,
138
- /* keyboardInitiated */ this.startButton.matches(':focus-visible'),
139
- );
140
- };
141
- }
142
-
143
- this.startButton = UI.UIUtils.createTextButton(
144
- buttonLabel,
145
- callback,
146
- /* className */ '',
147
- /* primary */ true,
148
- );
149
-
150
- const startButtonContainerEl = this.contentElement.querySelector('.lighthouse-start-button-container');
151
- if (startButtonContainerEl) {
152
- startButtonContainerEl.textContent = '';
153
- startButtonContainerEl.appendChild(this.startButton);
154
- }
155
- }
156
158
  }
@@ -71,13 +71,20 @@ export class TimespanView extends UI.Dialog.Dialog {
71
71
  const dialogRoot = UI.Utils.createShadowRootWithCoreStyles(
72
72
  this.contentElement, {cssFile: [lighthouseDialogStyles], delegatesFocus: undefined});
73
73
 
74
- this.endButton = UI.UIUtils.createTextButton(i18nString(UIStrings.endTimespan), this.endTimespan.bind(this));
74
+ this.endButton = UI.UIUtils.createTextButton(
75
+ i18nString(UIStrings.endTimespan),
76
+ this.endTimespan.bind(this),
77
+ undefined,
78
+ true,
79
+ );
75
80
  const cancelButton = UI.UIUtils.createTextButton(i18nString(UIStrings.cancel), this.cancel.bind(this));
76
81
  const fragment = UI.Fragment.Fragment.build`
77
82
  <div class="lighthouse-view vbox">
78
83
  <h2 $="status-header"></h2>
79
- ${this.endButton}
84
+ <div class="lighthouse-action-buttons hbox">
80
85
  ${cancelButton}
86
+ ${this.endButton}
87
+ </div>
81
88
  </div>
82
89
  `;
83
90
 
@@ -117,3 +117,8 @@
117
117
  display: block;
118
118
  margin-top: 5px;
119
119
  }
120
+
121
+ .lighthouse-action-buttons {
122
+ align-self: end;
123
+ column-gap: 8px;
124
+ }
@@ -170,16 +170,16 @@ input[type="radio"]:focus {
170
170
 
171
171
  .lighthouse-options {
172
172
  display: grid;
173
- grid-template-columns: auto auto;
173
+ grid-template-columns: 1fr 1fr;
174
174
  grid-template-rows: auto auto;
175
175
  }
176
176
 
177
177
  .lighthouse-options.narrow {
178
- grid-template-columns: auto;
178
+ grid-template-columns: 1fr;
179
179
  grid-template-rows: auto auto auto;
180
180
  }
181
181
 
182
182
  .lighthouse-options.wide {
183
- grid-template-columns: auto auto auto;
183
+ grid-template-columns: 1fr 1fr 1fr;
184
184
  grid-template-rows: auto;
185
185
  }
@@ -11,7 +11,9 @@ import * as UI from '../../ui/legacy/legacy.js';
11
11
  import {MobileThrottlingSelector} from './MobileThrottlingSelector.js';
12
12
  import {NetworkThrottlingSelector} from './NetworkThrottlingSelector.js';
13
13
 
14
- import type {Conditions, ConditionsList, MobileThrottlingConditionsGroup, NetworkThrottlingConditionsGroup} from './ThrottlingPresets.js';
14
+ import type {
15
+ Conditions, ConditionsList, MobileThrottlingConditionsGroup, NetworkThrottlingConditionsGroup} from
16
+ './ThrottlingPresets.js';
15
17
  import {ThrottlingPresets} from './ThrottlingPresets.js';
16
18
 
17
19
  const UIStrings = {
@@ -57,7 +57,11 @@ import {Events, NetworkGroupNode, NetworkRequestNode} from './NetworkDataGridNod
57
57
  import {NetworkFrameGrouper} from './NetworkFrameGrouper.js';
58
58
  import {NetworkLogViewColumns} from './NetworkLogViewColumns.js';
59
59
  import type {NetworkTimeCalculator} from './NetworkTimeCalculator.js';
60
- import {NetworkTimeBoundary, NetworkTransferDurationCalculator, NetworkTransferTimeCalculator} from './NetworkTimeCalculator.js';
60
+ import {
61
+ NetworkTimeBoundary,
62
+ NetworkTransferDurationCalculator,
63
+ NetworkTransferTimeCalculator,
64
+ } from './NetworkTimeCalculator.js';
61
65
 
62
66
  const UIStrings = {
63
67
  /**
@@ -14,7 +14,9 @@ import type {NetworkNode} from './NetworkDataGridNode.js';
14
14
  import {NetworkRequestNode} from './NetworkDataGridNode.js';
15
15
  import type {NetworkLogView} from './NetworkLogView.js';
16
16
  import {NetworkManageCustomHeadersView} from './NetworkManageCustomHeadersView.js';
17
- import type {NetworkTimeCalculator, NetworkTransferDurationCalculator, NetworkTransferTimeCalculator} from './NetworkTimeCalculator.js';
17
+ import type {
18
+ NetworkTimeCalculator, NetworkTransferDurationCalculator, NetworkTransferTimeCalculator} from
19
+ './NetworkTimeCalculator.js';
18
20
  import {NetworkWaterfallColumn} from './NetworkWaterfallColumn.js';
19
21
  import {RequestInitiatorView} from './RequestInitiatorView.js';
20
22
 
@@ -102,7 +102,7 @@ const UIStrings = {
102
102
  /**
103
103
  *@description Text in Request Timing View of the Network panel
104
104
  */
105
- waitingTtfb: 'Waiting (TTFB)',
105
+ waitingTtfb: 'Waiting for server response',
106
106
  /**
107
107
  *@description Text in Signed Exchange Info View of the Network panel
108
108
  */
@@ -38,7 +38,14 @@ import type * as SDK from '../../core/sdk/sdk.js';
38
38
  import * as UI from '../../ui/legacy/legacy.js';
39
39
 
40
40
  import type {HeapSnapshotGridNode} from './HeapSnapshotGridNodes.js';
41
- import {AllocationGridNode, HeapSnapshotConstructorNode, HeapSnapshotGenericObjectNode, HeapSnapshotRetainingObjectNode, HeapSnapshotObjectNode, HeapSnapshotDiffNode} from './HeapSnapshotGridNodes.js';
41
+ import {
42
+ AllocationGridNode,
43
+ HeapSnapshotConstructorNode,
44
+ HeapSnapshotGenericObjectNode,
45
+ HeapSnapshotRetainingObjectNode,
46
+ HeapSnapshotObjectNode,
47
+ HeapSnapshotDiffNode,
48
+ } from './HeapSnapshotGridNodes.js';
42
49
  import type {HeapSnapshotProxy} from './HeapSnapshotProxy.js';
43
50
  import type {HeapProfileHeader} from './HeapSnapshotView.js';
44
51
  import type {DataDisplayDelegate} from './ProfileHeader.js';
@@ -38,7 +38,9 @@ import * as DataGrid from '../../ui/legacy/components/data_grid/data_grid.js';
38
38
  import * as UI from '../../ui/legacy/legacy.js';
39
39
 
40
40
  import type {ChildrenProvider} from './ChildrenProvider.js';
41
- import type {AllocationDataGrid, HeapSnapshotConstructorsDataGrid, HeapSnapshotDiffDataGrid, HeapSnapshotSortableDataGrid} from './HeapSnapshotDataGrids.js';
41
+ import type {
42
+ AllocationDataGrid, HeapSnapshotConstructorsDataGrid, HeapSnapshotDiffDataGrid, HeapSnapshotSortableDataGrid} from
43
+ './HeapSnapshotDataGrids.js';
42
44
  import {HeapSnapshotSortableDataGridEvents} from './HeapSnapshotDataGrids.js';
43
45
  import type {HeapSnapshotProviderProxy, HeapSnapshotProxy} from './HeapSnapshotProxy.js';
44
46
  import type {DataDisplayDelegate} from './ProfileHeader.js';
@@ -44,7 +44,14 @@ import * as Components from '../../ui/legacy/components/utils/utils.js';
44
44
  import * as UI from '../../ui/legacy/legacy.js';
45
45
 
46
46
  import type {HeapSnapshotSortableDataGrid} from './HeapSnapshotDataGrids.js';
47
- import {AllocationDataGrid, HeapSnapshotSortableDataGridEvents, HeapSnapshotConstructorsDataGrid, HeapSnapshotDiffDataGrid, HeapSnapshotRetainmentDataGrid, HeapSnapshotContainmentDataGrid} from './HeapSnapshotDataGrids.js';
47
+ import {
48
+ AllocationDataGrid,
49
+ HeapSnapshotSortableDataGridEvents,
50
+ HeapSnapshotConstructorsDataGrid,
51
+ HeapSnapshotDiffDataGrid,
52
+ HeapSnapshotRetainmentDataGrid,
53
+ HeapSnapshotContainmentDataGrid,
54
+ } from './HeapSnapshotDataGrids.js';
48
55
  import type {AllocationGridNode, HeapSnapshotGridNode} from './HeapSnapshotGridNodes.js';
49
56
  import {HeapSnapshotGenericObjectNode} from './HeapSnapshotGridNodes.js';
50
57
  import type {HeapSnapshotProxy} from './HeapSnapshotProxy.js';
@@ -53,7 +60,12 @@ import type {IdsRangeChangedEvent} from './HeapTimelineOverview.js';
53
60
  import {HeapTimelineOverview, Events, Samples} from './HeapTimelineOverview.js';
54
61
  import * as ModuleUIStrings from './ModuleUIStrings.js';
55
62
  import type {DataDisplayDelegate} from './ProfileHeader.js';
56
- import {Events as ProfileHeaderEvents, ProfileEvents as ProfileTypeEvents, ProfileHeader, ProfileType} from './ProfileHeader.js';
63
+ import {
64
+ Events as ProfileHeaderEvents,
65
+ ProfileEvents as ProfileTypeEvents,
66
+ ProfileHeader,
67
+ ProfileType,
68
+ } from './ProfileHeader.js';
57
69
  import {ProfileSidebarTreeElement} from './ProfileSidebarTreeElement.js';
58
70
  import {instance} from './ProfileTypeRegistry.js';
59
71
 
@@ -45,7 +45,13 @@ import {DebuggerPausedMessage} from './DebuggerPausedMessage.js';
45
45
  import sourcesPanelStyles from './sourcesPanel.css.js';
46
46
 
47
47
  import type {NavigatorView} from './NavigatorView.js';
48
- import {ContentScriptsNavigatorView, FilesNavigatorView, NetworkNavigatorView, OverridesNavigatorView, SnippetsNavigatorView} from './SourcesNavigator.js';
48
+ import {
49
+ ContentScriptsNavigatorView,
50
+ FilesNavigatorView,
51
+ NetworkNavigatorView,
52
+ OverridesNavigatorView,
53
+ SnippetsNavigatorView,
54
+ } from './SourcesNavigator.js';
49
55
  import {Events, SourcesView} from './SourcesView.js';
50
56
  import {ThreadsSidebarPane} from './ThreadsSidebarPane.js';
51
57
  import {UISourceCodeFrame} from './UISourceCodeFrame.js';
@@ -90,7 +90,7 @@ export class TimelineController implements SDK.TargetManager.SDKModelObserver<SD
90
90
  // 'disabled-by-default-v8.cpu_profiler'
91
91
  // └ default: on, option: enableJSSampling
92
92
  const categoriesArray = [
93
- '-*',
93
+ Root.Runtime.experiments.isEnabled('timelineShowAllEvents') ? '*' : '-*',
94
94
  TimelineModel.TimelineModel.TimelineModelImpl.Category.Console,
95
95
  TimelineModel.TimelineModel.TimelineModelImpl.Category.UserTiming,
96
96
  'devtools.timeline',
@@ -17,7 +17,10 @@ import type {PerformanceModel, WindowChangedEvent} from './PerformanceModel.js';
17
17
  import {Events as PerformanceModelEvents} from './PerformanceModel.js';
18
18
  import {TimelineDetailsView} from './TimelineDetailsView.js';
19
19
  import {TimelineRegExp} from './TimelineFilters.js';
20
- import {Events as TimelineFlameChartDataProviderEvents, TimelineFlameChartDataProvider} from './TimelineFlameChartDataProvider.js';
20
+ import {
21
+ Events as TimelineFlameChartDataProviderEvents,
22
+ TimelineFlameChartDataProvider,
23
+ } from './TimelineFlameChartDataProvider.js';
21
24
  import {TimelineFlameChartNetworkDataProvider} from './TimelineFlameChartNetworkDataProvider.js';
22
25
  import type {TimelineModeViewDelegate} from './TimelinePanel.js';
23
26
  import {TimelineSelection} from './TimelinePanel.js';
@@ -10,7 +10,12 @@ import * as UI from '../../ui/legacy/legacy.js';
10
10
  import timelineHistoryManagerStyles from './timelineHistoryManager.css.js';
11
11
 
12
12
  import type {PerformanceModel} from './PerformanceModel.js';
13
- import {TimelineEventOverviewCPUActivity, TimelineEventOverviewFrames, TimelineEventOverviewNetwork, TimelineEventOverviewResponsiveness} from './TimelineEventOverview.js';
13
+ import {
14
+ TimelineEventOverviewCPUActivity,
15
+ TimelineEventOverviewFrames,
16
+ TimelineEventOverviewNetwork,
17
+ TimelineEventOverviewResponsiveness,
18
+ } from './TimelineEventOverview.js';
14
19
 
15
20
  const UIStrings = {
16
21
  /**
@@ -57,7 +57,16 @@ import {Events, PerformanceModel} from './PerformanceModel.js';
57
57
  import type {Client} from './TimelineController.js';
58
58
  import {TimelineController} from './TimelineController.js';
59
59
  import type {TimelineEventOverview} from './TimelineEventOverview.js';
60
- import {TimelineEventOverviewCoverage, TimelineEventOverviewCPUActivity, TimelineEventOverviewFrames, TimelineEventOverviewInput, TimelineEventOverviewMemory, TimelineEventOverviewNetwork, TimelineEventOverviewResponsiveness, TimelineFilmStripOverview} from './TimelineEventOverview.js';
60
+ import {
61
+ TimelineEventOverviewCoverage,
62
+ TimelineEventOverviewCPUActivity,
63
+ TimelineEventOverviewFrames,
64
+ TimelineEventOverviewInput,
65
+ TimelineEventOverviewMemory,
66
+ TimelineEventOverviewNetwork,
67
+ TimelineEventOverviewResponsiveness,
68
+ TimelineFilmStripOverview,
69
+ } from './TimelineEventOverview.js';
61
70
  import {TimelineFlameChartView} from './TimelineFlameChartView.js';
62
71
  import {TimelineHistoryManager} from './TimelineHistoryManager.js';
63
72
  import {TimelineLoader} from './TimelineLoader.js';
@@ -1682,8 +1682,7 @@ export class TimelineUIUtils {
1682
1682
  }
1683
1683
  }
1684
1684
 
1685
- static async buildDetailsTextForTraceEvent(event: SDK.TracingModel.Event, target: SDK.Target.Target|null):
1686
- Promise<string|null> {
1685
+ static async buildDetailsTextForTraceEvent(event: SDK.TracingModel.Event): Promise<string|null> {
1687
1686
  const recordType = TimelineModel.TimelineModel.RecordType;
1688
1687
  let detailsText;
1689
1688
  const eventData = event.args['data'];
@@ -1696,9 +1695,9 @@ export class TimelineUIUtils {
1696
1695
  break;
1697
1696
  }
1698
1697
  case recordType.FunctionCall:
1699
- if (eventData) {
1700
- detailsText =
1701
- await linkifyLocationAsText(eventData['scriptId'], eventData['lineNumber'], eventData['columnNumber']);
1698
+ if (eventData && eventData['url'] && eventData['lineNumber'] !== undefined &&
1699
+ eventData['columnNumber'] !== undefined) {
1700
+ detailsText = eventData.url + ':' + (eventData.lineNumber + 1) + ':' + (eventData.columnNumber + 1);
1702
1701
  }
1703
1702
  break;
1704
1703
  case recordType.JSFrame:
@@ -1804,33 +1803,13 @@ export class TimelineUIUtils {
1804
1803
 
1805
1804
  return detailsText;
1806
1805
 
1807
- async function linkifyLocationAsText(
1808
- scriptId: Protocol.Runtime.ScriptId, lineNumber: number, columnNumber: number): Promise<string|null> {
1809
- const debuggerModel = target ? target.model(SDK.DebuggerModel.DebuggerModel) : null;
1810
- if (!target || target.isDisposed() || !scriptId || !debuggerModel) {
1811
- return null;
1812
- }
1813
- const rawLocation = debuggerModel.createRawLocationByScriptId(scriptId, lineNumber, columnNumber);
1814
- if (!rawLocation) {
1815
- return null;
1816
- }
1817
- const uiLocation =
1818
- await Bindings.DebuggerWorkspaceBinding.DebuggerWorkspaceBinding.instance().rawLocationToUILocation(
1819
- rawLocation);
1820
- return uiLocation ? uiLocation.linkText(false /* skipTrim*/, true /* showColumnNumber*/) : null;
1821
- }
1822
-
1823
1806
  async function linkifyTopCallFrameAsText(): Promise<string|null> {
1824
1807
  const frame = TimelineModel.TimelineModel.TimelineData.forEvent(event).topFrame();
1825
1808
  if (!frame) {
1826
1809
  return null;
1827
1810
  }
1828
- let text: string|(string | null) =
1829
- await linkifyLocationAsText(frame.scriptId, frame.lineNumber, frame.columnNumber);
1830
- if (!text) {
1831
- text = frame.url + ':' + (frame.lineNumber + 1) + ':' + (frame.columnNumber + 1);
1832
- }
1833
- return text;
1811
+
1812
+ return frame.url + ':' + (frame.lineNumber + 1) + ':' + (frame.columnNumber + 1);
1834
1813
  }
1835
1814
  }
1836
1815
 
@@ -1859,7 +1838,7 @@ export class TimelineUIUtils {
1859
1838
  case recordType.WebSocketSendHandshakeRequest:
1860
1839
  case recordType.WebSocketReceiveHandshakeResponse:
1861
1840
  case recordType.WebSocketDestroy: {
1862
- detailsText = await TimelineUIUtils.buildDetailsTextForTraceEvent(event, target);
1841
+ detailsText = await TimelineUIUtils.buildDetailsTextForTraceEvent(event);
1863
1842
  break;
1864
1843
  }
1865
1844
 
@@ -6,7 +6,9 @@ import * as Common from '../../../core/common/common.js';
6
6
  import * as Platform from '../../../core/platform/platform.js';
7
7
 
8
8
  import {EdgeTypes, EdgeView, generateEdgePortIdsByData} from './EdgeView.js';
9
- import type {NodeCreationData, NodeParamConnectionData, NodeParamDisconnectionData, NodesConnectionData, NodesDisconnectionData, NodesDisconnectionDataWithDestination, ParamCreationData} from './GraphStyle.js';
9
+ import type {
10
+ NodeCreationData, NodeParamConnectionData, NodeParamDisconnectionData, NodesConnectionData, NodesDisconnectionData,
11
+ NodesDisconnectionDataWithDestination, ParamCreationData} from './GraphStyle.js';
10
12
  import {NodeLabelGenerator, NodeView} from './NodeView.js';
11
13
 
12
14
  // A class that tracks all the nodes and edges of an audio graph.