chrome-devtools-frontend 1.0.921086 → 1.0.922671

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 (190) hide show
  1. package/config/gni/all_devtools_files.gni +1 -1
  2. package/config/gni/devtools_grd_files.gni +2 -0
  3. package/front_end/core/common/ColorUtils.ts +2 -1
  4. package/front_end/core/common/Object.ts +36 -1
  5. package/front_end/core/common/Settings.ts +8 -1
  6. package/front_end/core/common/common.ts +2 -1
  7. package/front_end/core/i18n/locales/af.json +53 -32
  8. package/front_end/core/i18n/locales/am.json +56 -35
  9. package/front_end/core/i18n/locales/ar.json +53 -32
  10. package/front_end/core/i18n/locales/as.json +63 -42
  11. package/front_end/core/i18n/locales/az.json +53 -32
  12. package/front_end/core/i18n/locales/be.json +52 -31
  13. package/front_end/core/i18n/locales/bg.json +51 -30
  14. package/front_end/core/i18n/locales/bn.json +63 -42
  15. package/front_end/core/i18n/locales/bs.json +57 -36
  16. package/front_end/core/i18n/locales/ca.json +55 -34
  17. package/front_end/core/i18n/locales/cs.json +51 -30
  18. package/front_end/core/i18n/locales/cy.json +63 -42
  19. package/front_end/core/i18n/locales/da.json +55 -34
  20. package/front_end/core/i18n/locales/de.json +52 -31
  21. package/front_end/core/i18n/locales/el.json +58 -37
  22. package/front_end/core/i18n/locales/en-GB.json +51 -30
  23. package/front_end/core/i18n/locales/en-US.json +3 -0
  24. package/front_end/core/i18n/locales/en-XL.json +3 -0
  25. package/front_end/core/i18n/locales/es-419.json +53 -32
  26. package/front_end/core/i18n/locales/es.json +52 -31
  27. package/front_end/core/i18n/locales/et.json +54 -33
  28. package/front_end/core/i18n/locales/eu.json +71 -50
  29. package/front_end/core/i18n/locales/fa.json +54 -33
  30. package/front_end/core/i18n/locales/fi.json +55 -34
  31. package/front_end/core/i18n/locales/fil.json +59 -38
  32. package/front_end/core/i18n/locales/fr-CA.json +52 -31
  33. package/front_end/core/i18n/locales/fr.json +54 -33
  34. package/front_end/core/i18n/locales/gl.json +57 -36
  35. package/front_end/core/i18n/locales/gu.json +65 -44
  36. package/front_end/core/i18n/locales/he.json +56 -35
  37. package/front_end/core/i18n/locales/hi.json +61 -40
  38. package/front_end/core/i18n/locales/hr.json +55 -34
  39. package/front_end/core/i18n/locales/hu.json +53 -32
  40. package/front_end/core/i18n/locales/hy.json +54 -33
  41. package/front_end/core/i18n/locales/id.json +59 -38
  42. package/front_end/core/i18n/locales/is.json +51 -30
  43. package/front_end/core/i18n/locales/it.json +51 -30
  44. package/front_end/core/i18n/locales/ja.json +52 -31
  45. package/front_end/core/i18n/locales/ka.json +51 -30
  46. package/front_end/core/i18n/locales/kk.json +56 -35
  47. package/front_end/core/i18n/locales/km.json +59 -38
  48. package/front_end/core/i18n/locales/kn.json +63 -42
  49. package/front_end/core/i18n/locales/ko.json +59 -38
  50. package/front_end/core/i18n/locales/ky.json +54 -33
  51. package/front_end/core/i18n/locales/lo.json +59 -38
  52. package/front_end/core/i18n/locales/lt.json +52 -31
  53. package/front_end/core/i18n/locales/lv.json +60 -39
  54. package/front_end/core/i18n/locales/mk.json +51 -30
  55. package/front_end/core/i18n/locales/ml.json +65 -44
  56. package/front_end/core/i18n/locales/mn.json +59 -38
  57. package/front_end/core/i18n/locales/mr.json +61 -40
  58. package/front_end/core/i18n/locales/ms.json +59 -38
  59. package/front_end/core/i18n/locales/my.json +59 -38
  60. package/front_end/core/i18n/locales/ne.json +63 -42
  61. package/front_end/core/i18n/locales/nl.json +55 -34
  62. package/front_end/core/i18n/locales/no.json +54 -33
  63. package/front_end/core/i18n/locales/or.json +63 -42
  64. package/front_end/core/i18n/locales/pa.json +61 -40
  65. package/front_end/core/i18n/locales/pl.json +51 -30
  66. package/front_end/core/i18n/locales/pt-PT.json +52 -31
  67. package/front_end/core/i18n/locales/pt.json +59 -38
  68. package/front_end/core/i18n/locales/ro.json +52 -31
  69. package/front_end/core/i18n/locales/ru.json +52 -31
  70. package/front_end/core/i18n/locales/si.json +59 -38
  71. package/front_end/core/i18n/locales/sk.json +52 -31
  72. package/front_end/core/i18n/locales/sl.json +52 -31
  73. package/front_end/core/i18n/locales/sq.json +51 -30
  74. package/front_end/core/i18n/locales/sr-Latn.json +52 -31
  75. package/front_end/core/i18n/locales/sr.json +52 -31
  76. package/front_end/core/i18n/locales/sv.json +52 -31
  77. package/front_end/core/i18n/locales/sw.json +60 -39
  78. package/front_end/core/i18n/locales/ta.json +67 -46
  79. package/front_end/core/i18n/locales/te.json +62 -41
  80. package/front_end/core/i18n/locales/th.json +52 -31
  81. package/front_end/core/i18n/locales/tr.json +55 -34
  82. package/front_end/core/i18n/locales/uk.json +55 -34
  83. package/front_end/core/i18n/locales/ur.json +60 -39
  84. package/front_end/core/i18n/locales/uz.json +52 -31
  85. package/front_end/core/i18n/locales/vi.json +54 -33
  86. package/front_end/core/i18n/locales/zh-HK.json +52 -31
  87. package/front_end/core/i18n/locales/zh-TW.json +57 -36
  88. package/front_end/core/i18n/locales/zh.json +56 -35
  89. package/front_end/core/i18n/locales/zu.json +59 -38
  90. package/front_end/core/sdk/FrameManager.ts +2 -2
  91. package/front_end/core/sdk/RemoteObject.ts +43 -20
  92. package/front_end/entrypoints/inspector_main/InspectorMain.ts +1 -1
  93. package/front_end/entrypoints/js_app/JsMain.ts +1 -1
  94. package/front_end/entrypoints/node_main/NodeMain.ts +1 -1
  95. package/front_end/entrypoints/worker_app/WorkerMain.ts +1 -1
  96. package/front_end/legacy/legacy-defs.d.ts +9 -0
  97. package/front_end/models/emulation/DeviceModeModel.ts +1 -1
  98. package/front_end/models/extensions/ExtensionAPI.ts +1 -1
  99. package/front_end/models/issues_manager/AttributionReportingIssue.ts +4 -1
  100. package/front_end/models/issues_manager/descriptions/arAttributionEventSourceTriggerDataTooLarge.md +4 -0
  101. package/front_end/models/timeline_model/TimelineModel.ts +5 -1
  102. package/front_end/panels/application/ApplicationPanelSidebar.ts +8 -7
  103. package/front_end/panels/application/DatabaseQueryView.ts +7 -1
  104. package/front_end/panels/application/ServiceWorkerCacheViews.ts +1 -1
  105. package/front_end/panels/changes/ChangesSidebar.ts +6 -1
  106. package/front_end/panels/console/ConsolePrompt.ts +6 -1
  107. package/front_end/panels/console/ConsoleSidebar.ts +5 -1
  108. package/front_end/panels/console/ConsoleViewMessage.ts +2 -2
  109. package/front_end/panels/coverage/CoverageView.ts +5 -4
  110. package/front_end/panels/css_overview/CSSOverviewCompletedView.ts +59 -48
  111. package/front_end/panels/css_overview/CSSOverviewController.ts +48 -8
  112. package/front_end/panels/css_overview/CSSOverviewPanel.ts +1 -1
  113. package/front_end/panels/css_overview/CSSOverviewSidebarPanel.ts +8 -1
  114. package/front_end/panels/elements/ColorSwatchPopoverIcon.ts +14 -12
  115. package/front_end/panels/elements/ElementsPanel.ts +10 -8
  116. package/front_end/panels/elements/ElementsTreeOutline.ts +8 -1
  117. package/front_end/panels/elements/StylesSidebarPane.ts +12 -2
  118. package/front_end/panels/elements/layoutPane.css +1 -0
  119. package/front_end/panels/emulation/AdvancedApp.ts +2 -12
  120. package/front_end/panels/emulation/InspectedPagePlaceholder.ts +14 -1
  121. package/front_end/panels/issues/AttributionReportingIssueDetailsView.ts +10 -0
  122. package/front_end/panels/layer_viewer/LayerDetailsView.ts +7 -1
  123. package/front_end/panels/layer_viewer/LayerTreeOutline.ts +4 -4
  124. package/front_end/panels/layer_viewer/Layers3DView.ts +7 -1
  125. package/front_end/panels/layer_viewer/PaintProfilerView.ts +7 -1
  126. package/front_end/panels/layers/LayersPanel.ts +1 -1
  127. package/front_end/panels/lighthouse/LighthouseProtocolService.ts +1 -2
  128. package/front_end/panels/mobile_throttling/throttlingSettingsTab.css +4 -0
  129. package/front_end/panels/network/NetworkDataGridNode.ts +46 -104
  130. package/front_end/panels/network/NetworkItemView.ts +2 -6
  131. package/front_end/panels/network/NetworkLogView.ts +4 -4
  132. package/front_end/panels/network/NetworkPanel.ts +12 -18
  133. package/front_end/panels/network/RequestTimingView.ts +3 -1
  134. package/front_end/panels/network/module.json +0 -3
  135. package/front_end/panels/profiler/CPUProfileFlameChart.ts +26 -11
  136. package/front_end/panels/profiler/HeapProfileView.ts +5 -6
  137. package/front_end/panels/profiler/HeapSnapshotView.ts +6 -6
  138. package/front_end/panels/profiler/HeapTimelineOverview.ts +17 -3
  139. package/front_end/panels/profiler/ProfileLauncherView.ts +6 -1
  140. package/front_end/panels/profiler/ProfileView.ts +1 -1
  141. package/front_end/panels/profiler/ProfilesPanel.ts +2 -2
  142. package/front_end/panels/settings/SettingsScreen.ts +2 -2
  143. package/front_end/panels/sources/CSSPlugin.ts +6 -6
  144. package/front_end/panels/sources/DebuggerPlugin.ts +4 -5
  145. package/front_end/panels/sources/EditingLocationHistoryManager.ts +7 -5
  146. package/front_end/panels/sources/InplaceFormatterEditorAction.ts +5 -5
  147. package/front_end/panels/sources/OutlineQuickOpen.ts +7 -2
  148. package/front_end/panels/sources/ScriptFormatterEditorAction.ts +5 -6
  149. package/front_end/panels/sources/SourcesPanel.ts +2 -2
  150. package/front_end/panels/sources/SourcesView.ts +16 -3
  151. package/front_end/panels/sources/TabbedEditorContainer.ts +8 -13
  152. package/front_end/panels/sources/UISourceCodeFrame.ts +7 -1
  153. package/front_end/panels/sources/watchExpressionsSidebarPane.css +2 -7
  154. package/front_end/panels/timeline/TimelineDetailsView.ts +1 -1
  155. package/front_end/panels/timeline/TimelineFlameChartView.ts +4 -4
  156. package/front_end/panels/timeline/TimelineLayersView.ts +7 -7
  157. package/front_end/panels/timeline/TimelinePanel.ts +2 -1
  158. package/front_end/panels/timeline/TimelineTreeView.ts +6 -1
  159. package/front_end/ui/components/docs/toggle_fonts.ts +28 -1
  160. package/front_end/ui/components/linear_memory_inspector/LinearMemoryInspectorController.ts +4 -5
  161. package/front_end/ui/components/linear_memory_inspector/LinearMemoryInspectorPane.ts +14 -5
  162. package/front_end/ui/legacy/Dialog.ts +12 -2
  163. package/front_end/ui/legacy/FilterBar.ts +12 -8
  164. package/front_end/ui/legacy/InspectorView.ts +3 -3
  165. package/front_end/ui/legacy/SplitWidget.ts +6 -1
  166. package/front_end/ui/legacy/TabbedPane.ts +9 -1
  167. package/front_end/ui/legacy/TextEditor.ts +12 -1
  168. package/front_end/ui/legacy/Treeoutline.ts +19 -11
  169. package/front_end/ui/legacy/ViewManager.ts +8 -7
  170. package/front_end/ui/legacy/components/color_picker/Spectrum.ts +6 -1
  171. package/front_end/ui/legacy/components/inline_editor/BezierEditor.ts +6 -1
  172. package/front_end/ui/legacy/components/inline_editor/CSSShadowEditor.ts +7 -1
  173. package/front_end/ui/legacy/components/inline_editor/FontEditor.ts +12 -1
  174. package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +19 -71
  175. package/front_end/ui/legacy/components/perf_ui/FilmStripView.ts +8 -1
  176. package/front_end/ui/legacy/components/perf_ui/FlameChart.ts +9 -1
  177. package/front_end/ui/legacy/components/perf_ui/OverviewGrid.ts +13 -3
  178. package/front_end/ui/legacy/components/perf_ui/TimelineOverviewPane.ts +14 -3
  179. package/front_end/ui/legacy/components/quick_open/CommandMenu.ts +11 -4
  180. package/front_end/ui/legacy/components/quick_open/FilteredListWidget.ts +13 -3
  181. package/front_end/ui/legacy/components/quick_open/QuickInput.ts +4 -5
  182. package/front_end/ui/legacy/components/quick_open/QuickPick.ts +4 -5
  183. package/front_end/ui/legacy/components/quick_open/filteredListWidget.css +29 -19
  184. package/front_end/ui/legacy/components/source_frame/SourcesTextEditor.ts +18 -2
  185. package/front_end/ui/legacy/components/text_editor/CodeMirrorTextEditor.ts +3 -1
  186. package/front_end/ui/legacy/splitWidget.css +2 -2
  187. package/inspector_overlay/common.ts +3 -3
  188. package/inspector_overlay/tool_viewport_size.ts +1 -1
  189. package/package.json +1 -1
  190. package/scripts/build/generate_css_js_files.js +1 -0
@@ -1000,7 +1000,8 @@ export class BottomUpTimelineTreeView extends AggregatedTimelineTreeView {
1000
1000
  }
1001
1001
  }
1002
1002
 
1003
- export class TimelineStackView extends UI.Widget.VBox {
1003
+ export class TimelineStackView extends
1004
+ Common.ObjectWrapper.eventMixin<TimelineStackView.EventTypes, typeof UI.Widget.VBox>(UI.Widget.VBox) {
1004
1005
  private readonly treeView: TimelineTreeView;
1005
1006
  private readonly dataGrid: DataGrid.ViewportDataGrid.ViewportDataGrid<unknown>;
1006
1007
 
@@ -1059,4 +1060,8 @@ export namespace TimelineStackView {
1059
1060
  export enum Events {
1060
1061
  SelectionChanged = 'SelectionChanged',
1061
1062
  }
1063
+
1064
+ export type EventTypes = {
1065
+ [Events.SelectionChanged]: void,
1066
+ };
1062
1067
  }
@@ -6,7 +6,28 @@ const PLATFORM_MAC_CLASS = 'platform-mac';
6
6
  const PLATFORM_LINUX_CLASS = 'platform-linux';
7
7
  const PLATFORM_WINDOWS_CLASS = 'platform-windows';
8
8
 
9
+ const urlParams = new URLSearchParams(window.location.search);
10
+
9
11
  export function init(): void {
12
+ // fontFamily is provided by the interaction tests.
13
+ // While platform-specific class names define multiple font-families,
14
+ // we want a single font-family to be used by the tests.
15
+ if (urlParams.has('fontFamily')) {
16
+ const div = document.createElement('div');
17
+ div.style.position = 'fixed';
18
+ div.style.bottom = '10px';
19
+ div.style.right = '230px';
20
+ div.style.width = '250px';
21
+ div.style.fontSize = '16px';
22
+ div.style.padding = '5px';
23
+ div.innerText = `font-family: ${urlParams.get('fontFamily')}`;
24
+ window.addEventListener('load', () => {
25
+ document.body.appendChild(div);
26
+ });
27
+ document.body.style.fontFamily = `${urlParams.get('fontFamily')}`;
28
+ return;
29
+ }
30
+
10
31
  document.body.classList.add(PLATFORM_LINUX_CLASS);
11
32
  const button = document.createElement('button');
12
33
 
@@ -17,7 +38,13 @@ export function init(): void {
17
38
  ];
18
39
 
19
40
  function toggleFonts(): void {
20
- document.body.classList.toggle(loop[0]);
41
+ for (const className of loop) {
42
+ if (className === loop[0]) {
43
+ document.body.classList.add(className);
44
+ } else {
45
+ document.body.classList.remove(className);
46
+ }
47
+ }
21
48
  loop.push(loop.shift() as string);
22
49
  button.innerText = 'Turn on ' + loop[0] + ' fonts';
23
50
  }
@@ -9,7 +9,7 @@ import * as Protocol from '../../../generated/protocol.js';
9
9
  import * as UI from '../../legacy/legacy.js';
10
10
 
11
11
  import type {Settings} from './LinearMemoryInspector.js';
12
- import {LinearMemoryInspectorPaneImpl} from './LinearMemoryInspectorPane.js';
12
+ import {Events as LmiEvents, LinearMemoryInspectorPaneImpl} from './LinearMemoryInspectorPane.js';
13
13
  import type {ValueType, ValueTypeMode} from './ValueInterpreterDisplayUtils.js';
14
14
  import {Endianness, getDefaultValueTypeMapping} from './ValueInterpreterDisplayUtils.js';
15
15
 
@@ -82,7 +82,7 @@ export class LinearMemoryInspectorController extends SDK.TargetManager.SDKModelO
82
82
  SDK.TargetManager.TargetManager.instance().observeModels(SDK.RuntimeModel.RuntimeModel, this);
83
83
  SDK.TargetManager.TargetManager.instance().addModelListener(
84
84
  SDK.DebuggerModel.DebuggerModel, SDK.DebuggerModel.Events.GlobalObjectCleared, this.onGlobalObjectClear, this);
85
- this.paneInstance.addEventListener('view-closed', this.viewClosed.bind(this));
85
+ this.paneInstance.addEventListener(LmiEvents.ViewClosed, this.viewClosed.bind(this));
86
86
 
87
87
  SDK.TargetManager.TargetManager.instance().addModelListener(
88
88
  SDK.DebuggerModel.DebuggerModel, SDK.DebuggerModel.Events.DebuggerPaused, this.onDebuggerPause, this);
@@ -202,12 +202,11 @@ export class LinearMemoryInspectorController extends SDK.TargetManager.SDKModelO
202
202
  this.modelRemoved(event.data.runtimeModel());
203
203
  }
204
204
 
205
- private viewClosed(event: Common.EventTarget.EventTargetEvent): void {
206
- const bufferId = event.data;
205
+ private viewClosed({data: bufferId}: Common.EventTarget.EventTargetEvent<string>): void {
207
206
  const remoteObj = this.bufferIdToRemoteObject.get(bufferId);
208
207
  if (remoteObj) {
209
208
  remoteObj.release();
210
209
  }
211
- this.bufferIdToRemoteObject.delete(event.data);
210
+ this.bufferIdToRemoteObject.delete(bufferId);
212
211
  }
213
212
  }
@@ -2,7 +2,7 @@
2
2
  // Use of this source code is governed by a BSD-style license that can be
3
3
  // found in the LICENSE file.
4
4
 
5
- import type * as Common from '../../../core/common/common.js';
5
+ import * as Common from '../../../core/common/common.js';
6
6
  import * as i18n from '../../../core/i18n/i18n.js';
7
7
  import * as UI from '../../legacy/legacy.js';
8
8
 
@@ -48,7 +48,8 @@ export class Wrapper extends UI.Widget.VBox {
48
48
  }
49
49
  }
50
50
 
51
- export class LinearMemoryInspectorPaneImpl extends UI.Widget.VBox {
51
+ export class LinearMemoryInspectorPaneImpl extends Common.ObjectWrapper.eventMixin<EventTypes, typeof UI.Widget.VBox>(
52
+ UI.Widget.VBox) {
52
53
  private readonly tabbedPane: UI.TabbedPane.TabbedPane;
53
54
  private readonly tabIdToInspectorView: Map<string, LinearMemoryInspectorView>;
54
55
  constructor() {
@@ -105,13 +106,21 @@ export class LinearMemoryInspectorPaneImpl extends UI.Widget.VBox {
105
106
  view.refreshData();
106
107
  }
107
108
 
108
- private tabClosed(event: Common.EventTarget.EventTargetEvent): void {
109
- const tabId = event.data.tabId;
109
+ private tabClosed(event: Common.EventTarget.EventTargetEvent<UI.TabbedPane.EventData>): void {
110
+ const {tabId} = event.data;
110
111
  this.tabIdToInspectorView.delete(tabId);
111
- this.dispatchEventToListeners('view-closed', tabId);
112
+ this.dispatchEventToListeners(Events.ViewClosed, tabId);
112
113
  }
113
114
  }
114
115
 
116
+ export const enum Events {
117
+ ViewClosed = 'ViewClosed',
118
+ }
119
+
120
+ export type EventTypes = {
121
+ [Events.ViewClosed]: string,
122
+ };
123
+
115
124
  class LinearMemoryInspectorView extends UI.Widget.VBox {
116
125
  private memoryWrapper: LazyUint8Array;
117
126
  private address: number;
@@ -28,6 +28,8 @@
28
28
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29
29
  */
30
30
 
31
+ import * as Common from '../../core/common/common.js';
32
+
31
33
  import * as ARIAUtils from './ARIAUtils.js';
32
34
  import {GlassPane, PointerEventsBehavior} from './GlassPane.js';
33
35
  import {InspectorView} from './InspectorView.js';
@@ -37,7 +39,7 @@ import type {DevToolsCloseButton} from './UIUtils.js';
37
39
  import type {WidgetElement} from './Widget.js';
38
40
  import {WidgetFocusRestorer} from './Widget.js';
39
41
 
40
- export class Dialog extends GlassPane {
42
+ export class Dialog extends Common.ObjectWrapper.eventMixin<EventTypes, typeof GlassPane>(GlassPane) {
41
43
  private tabIndexBehavior: OutsideTabIndexBehavior;
42
44
  private tabIndexMap: Map<HTMLElement, number>;
43
45
  private focusRestorer: WidgetFocusRestorer|null;
@@ -94,7 +96,7 @@ export class Dialog extends GlassPane {
94
96
  this.targetDocument.removeEventListener('keydown', this.targetDocumentKeyDownHandler, true);
95
97
  }
96
98
  this.restoreTabIndexOnElements();
97
- this.dispatchEventToListeners('hidden');
99
+ this.dispatchEventToListeners(Events.Hidden);
98
100
  Dialog.instance = null;
99
101
  }
100
102
 
@@ -198,6 +200,14 @@ export class Dialog extends GlassPane {
198
200
  private static instance: Dialog|null = null;
199
201
  }
200
202
 
203
+ export const enum Events {
204
+ Hidden = 'hidden',
205
+ }
206
+
207
+ export type EventTypes = {
208
+ [Events.Hidden]: void,
209
+ };
210
+
201
211
  // TODO(crbug.com/1167717): Make this a const enum again
202
212
  // eslint-disable-next-line rulesdir/const_enum
203
213
  export enum OutsideTabIndexBehavior {
@@ -69,7 +69,7 @@ const UIStrings = {
69
69
  };
70
70
  const str_ = i18n.i18n.registerUIStrings('ui/legacy/FilterBar.ts', UIStrings);
71
71
  const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
72
- export class FilterBar extends HBox implements Common.EventTarget.EventTarget<FilterBarEventTypes> {
72
+ export class FilterBar extends Common.ObjectWrapper.eventMixin<FilterBarEventTypes, typeof HBox>(HBox) {
73
73
  private enabled: boolean;
74
74
  private readonly stateSetting: Common.Settings.Setting<boolean>;
75
75
  private readonly filterButtonInternal: ToolbarSettingToggle;
@@ -185,7 +185,7 @@ export type FilterBarEventTypes = {
185
185
  [FilterBarEvents.Changed]: void,
186
186
  };
187
187
 
188
- export interface FilterUI extends Common.EventTarget.EventTarget {
188
+ export interface FilterUI extends Common.EventTarget.EventTarget<FilterUIEventTypes> {
189
189
  isActive(): boolean;
190
190
  element(): Element;
191
191
  }
@@ -194,7 +194,11 @@ export const enum FilterUIEvents {
194
194
  FilterChanged = 'FilterChanged',
195
195
  }
196
196
 
197
- export class TextFilterUI extends Common.ObjectWrapper.ObjectWrapper implements FilterUI {
197
+ export type FilterUIEventTypes = {
198
+ [FilterUIEvents.FilterChanged]: void,
199
+ };
200
+
201
+ export class TextFilterUI extends Common.ObjectWrapper.ObjectWrapper<FilterUIEventTypes> implements FilterUI {
198
202
  private readonly filterElement: HTMLDivElement;
199
203
  private readonly filterInputElement: HTMLElement;
200
204
  private prompt: TextPrompt;
@@ -261,7 +265,7 @@ export class TextFilterUI extends Common.ObjectWrapper.ObjectWrapper implements
261
265
  }
262
266
 
263
267
  private valueChanged(): void {
264
- this.dispatchEventToListeners(FilterUIEvents.FilterChanged, null);
268
+ this.dispatchEventToListeners(FilterUIEvents.FilterChanged);
265
269
  this.updateEmptyStyles();
266
270
  }
267
271
 
@@ -274,7 +278,7 @@ export class TextFilterUI extends Common.ObjectWrapper.ObjectWrapper implements
274
278
  }
275
279
  }
276
280
 
277
- export class NamedBitSetFilterUI extends Common.ObjectWrapper.ObjectWrapper implements FilterUI {
281
+ export class NamedBitSetFilterUI extends Common.ObjectWrapper.ObjectWrapper<FilterUIEventTypes> implements FilterUI {
278
282
  private readonly filtersElement: HTMLDivElement;
279
283
  private readonly typeFilterElementTypeNames: WeakMap<HTMLElement, string>;
280
284
  private allowedTypes: Set<string>;
@@ -350,7 +354,7 @@ export class NamedBitSetFilterUI extends Common.ObjectWrapper.ObjectWrapper impl
350
354
  element.classList.toggle('selected', active);
351
355
  ARIAUtils.setSelected(element, active);
352
356
  }
353
- this.dispatchEventToListeners(FilterUIEvents.FilterChanged, null);
357
+ this.dispatchEventToListeners(FilterUIEvents.FilterChanged);
354
358
  }
355
359
 
356
360
  private addBit(name: string, label: string, title?: string): void {
@@ -447,7 +451,7 @@ export class NamedBitSetFilterUI extends Common.ObjectWrapper.ObjectWrapper impl
447
451
  static readonly ALL_TYPES = 'all';
448
452
  }
449
453
 
450
- export class CheckboxFilterUI extends Common.ObjectWrapper.ObjectWrapper implements FilterUI {
454
+ export class CheckboxFilterUI extends Common.ObjectWrapper.ObjectWrapper<FilterUIEventTypes> implements FilterUI {
451
455
  private readonly filterElement: HTMLDivElement;
452
456
  private readonly activeWhenChecked: boolean;
453
457
  private label: CheckboxLabel;
@@ -490,7 +494,7 @@ export class CheckboxFilterUI extends Common.ObjectWrapper.ObjectWrapper impleme
490
494
  }
491
495
 
492
496
  private fireUpdated(): void {
493
- this.dispatchEventToListeners(FilterUIEvents.FilterChanged, null);
497
+ this.dispatchEventToListeners(FilterUIEvents.FilterChanged);
494
498
  }
495
499
 
496
500
  setColor(backgroundColor: string, borderColor: string): void {
@@ -45,7 +45,7 @@ import {KeyboardShortcut} from './KeyboardShortcut.js';
45
45
  import type {Panel} from './Panel.js';
46
46
  import {SplitWidget} from './SplitWidget.js';
47
47
  import {Events as TabbedPaneEvents} from './TabbedPane.js';
48
- import type {TabbedPane, TabbedPaneTabDelegate} from './TabbedPane.js';
48
+ import type {EventData, TabbedPane, TabbedPaneTabDelegate} from './TabbedPane.js';
49
49
  import {ToolbarButton} from './Toolbar.js';
50
50
  import type {TabbedViewLocation, View, ViewLocation, ViewLocationResolver} from './View.js';
51
51
  import {ViewManager} from './ViewManager.js';
@@ -381,8 +381,8 @@ export class InspectorView extends VBox implements ViewLocationResolver {
381
381
  this.tabbedPane.headerResized();
382
382
  }
383
383
 
384
- private tabSelected(event: Common.EventTarget.EventTargetEvent): void {
385
- const tabId = (event.data['tabId'] as string);
384
+ private tabSelected(event: Common.EventTarget.EventTargetEvent<EventData>): void {
385
+ const {tabId} = event.data;
386
386
  Host.userMetrics.panelShown(tabId);
387
387
  }
388
388
 
@@ -38,7 +38,7 @@ import {ToolbarButton} from './Toolbar.js';
38
38
  import {Widget} from './Widget.js';
39
39
  import {Events as ZoomManagerEvents, ZoomManager} from './ZoomManager.js';
40
40
 
41
- export class SplitWidget extends Widget {
41
+ export class SplitWidget extends Common.ObjectWrapper.eventMixin<EventTypes, typeof Widget>(Widget) {
42
42
  private sidebarElementInternal: HTMLElement;
43
43
  private mainElement: HTMLElement;
44
44
  private resizerElementInternal: HTMLElement;
@@ -869,6 +869,11 @@ export enum Events {
869
869
  ShowModeChanged = 'ShowModeChanged',
870
870
  }
871
871
 
872
+ export type EventTypes = {
873
+ [Events.SidebarSizeChanged]: number,
874
+ [Events.ShowModeChanged]: string,
875
+ };
876
+
872
877
  const MinPadding = 20;
873
878
  export interface SettingForOrientation {
874
879
  showMode: string;
@@ -28,6 +28,7 @@
28
28
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29
29
  */
30
30
 
31
+ import * as Common from '../../core/common/common.js';
31
32
  import * as i18n from '../../core/i18n/i18n.js';
32
33
  import * as Platform from '../../core/platform/platform.js';
33
34
  import * as IconButton from '../components/icon_button/icon_button.js';
@@ -72,7 +73,7 @@ const UIStrings = {
72
73
  };
73
74
  const str_ = i18n.i18n.registerUIStrings('ui/legacy/TabbedPane.ts', UIStrings);
74
75
  const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
75
- export class TabbedPane extends VBox {
76
+ export class TabbedPane extends Common.ObjectWrapper.eventMixin<EventTypes, typeof VBox>(VBox) {
76
77
  private readonly headerElementInternal: HTMLElement;
77
78
  private readonly headerContentsElement: HTMLElement;
78
79
  tabSlider: HTMLDivElement;
@@ -956,6 +957,13 @@ export enum Events {
956
957
  TabOrderChanged = 'TabOrderChanged',
957
958
  }
958
959
 
960
+ export type EventTypes = {
961
+ [Events.TabInvoked]: EventData,
962
+ [Events.TabSelected]: EventData,
963
+ [Events.TabClosed]: EventData,
964
+ [Events.TabOrderChanged]: EventData,
965
+ };
966
+
959
967
  export class TabbedPaneTab {
960
968
  closeable: boolean;
961
969
  private readonly tabbedPane: TabbedPane;
@@ -13,7 +13,7 @@ export interface TextEditorFactory {
13
13
  createEditor(options: Options): TextEditor;
14
14
  }
15
15
 
16
- export interface TextEditor extends Common.EventTarget.EventTarget {
16
+ export interface TextEditor extends Common.EventTarget.EventTarget<EventTypes> {
17
17
  widget(): Widget;
18
18
  fullRange(): TextUtils.TextRange.TextRange;
19
19
  selection(): TextUtils.TextRange.TextRange;
@@ -46,6 +46,17 @@ export enum Events {
46
46
  SuggestionChanged = 'SuggestionChanged',
47
47
  }
48
48
 
49
+ export interface TextChangedEvent {
50
+ newRange: TextUtils.TextRange.TextRange;
51
+ oldRange: TextUtils.TextRange.TextRange;
52
+ }
53
+
54
+ export type EventTypes = {
55
+ [Events.CursorChanged]: void,
56
+ [Events.TextChanged]: TextChangedEvent,
57
+ [Events.SuggestionChanged]: void,
58
+ };
59
+
49
60
  export interface Options {
50
61
  bracketMatchingSetting?: Common.Settings.Setting<boolean>;
51
62
  devtoolsAccessibleName?: string;
@@ -48,7 +48,25 @@ import {deepElementFromPoint, enclosingNodeOrSelfWithNodeNameInArray, isEditing}
48
48
 
49
49
  const nodeToParentTreeElementMap = new WeakMap<Node, TreeElement>();
50
50
 
51
- export class TreeOutline extends Common.ObjectWrapper.ObjectWrapper {
51
+ // TODO(crbug.com/1167717): Make this a const enum again
52
+ // eslint-disable-next-line rulesdir/const_enum
53
+ export enum Events {
54
+ ElementAttached = 'ElementAttached',
55
+ ElementsDetached = 'ElementsDetached',
56
+ ElementExpanded = 'ElementExpanded',
57
+ ElementCollapsed = 'ElementCollapsed',
58
+ ElementSelected = 'ElementSelected',
59
+ }
60
+
61
+ export type EventTypes = {
62
+ [Events.ElementAttached]: TreeElement,
63
+ [Events.ElementsDetached]: void,
64
+ [Events.ElementExpanded]: TreeElement,
65
+ [Events.ElementCollapsed]: TreeElement,
66
+ [Events.ElementSelected]: TreeElement,
67
+ };
68
+
69
+ export class TreeOutline extends Common.ObjectWrapper.ObjectWrapper<EventTypes> {
52
70
  readonly rootElementInternal: TreeElement;
53
71
  renderSelection: boolean;
54
72
  selectedTreeElement: TreeElement|null;
@@ -360,16 +378,6 @@ export class TreeOutline extends Common.ObjectWrapper.ObjectWrapper {
360
378
  }
361
379
  }
362
380
 
363
- // TODO(crbug.com/1167717): Make this a const enum again
364
- // eslint-disable-next-line rulesdir/const_enum
365
- export enum Events {
366
- ElementAttached = 'ElementAttached',
367
- ElementsDetached = 'ElementsDetached',
368
- ElementExpanded = 'ElementExpanded',
369
- ElementCollapsed = 'ElementCollapsed',
370
- ElementSelected = 'ElementSelected',
371
- }
372
-
373
381
  export class TreeOutlineInShadow extends TreeOutline {
374
382
  element: HTMLElement;
375
383
  shadowRoot: ShadowRoot;
@@ -9,6 +9,7 @@ import * as i18n from '../../core/i18n/i18n.js';
9
9
  import * as ARIAUtils from './ARIAUtils.js';
10
10
  import type {ContextMenu} from './ContextMenu.js';
11
11
  import {Icon} from './Icon.js';
12
+ import type {EventData} from './TabbedPane.js';
12
13
  import {Events as TabbedPaneEvents, TabbedPane} from './TabbedPane.js';
13
14
  import type {ToolbarItem} from './Toolbar.js';
14
15
  import {Toolbar, ToolbarMenuButton} from './Toolbar.js';
@@ -771,21 +772,21 @@ export class _TabbedLocation extends Location implements TabbedViewLocation {
771
772
  this.views.delete(view.viewId());
772
773
  }
773
774
 
774
- private tabSelected(event: Common.EventTarget.EventTargetEvent): void {
775
- const tabId = (event.data.tabId as string);
775
+ private tabSelected(event: Common.EventTarget.EventTargetEvent<EventData>): void {
776
+ const {tabId} = event.data;
776
777
  if (this.lastSelectedTabSetting && event.data['isUserGesture']) {
777
778
  this.lastSelectedTabSetting.set(tabId);
778
779
  }
779
780
  }
780
781
 
781
- private tabClosed(event: Common.EventTarget.EventTargetEvent): void {
782
- const id = (event.data['tabId'] as string);
782
+ private tabClosed(event: Common.EventTarget.EventTargetEvent<EventData>): void {
783
+ const {tabId} = event.data;
783
784
  const tabs = this.closeableTabSetting.get();
784
- if (tabs[id]) {
785
- tabs[id] = false;
785
+ if (tabs[tabId]) {
786
+ tabs[tabId] = false;
786
787
  this.closeableTabSetting.set(tabs);
787
788
  }
788
- const view = this.views.get(id);
789
+ const view = this.views.get(tabId);
789
790
  if (view) {
790
791
  view.disposeView();
791
792
  }
@@ -125,7 +125,7 @@ const colorElementToMutable = new WeakMap<HTMLElement, boolean>();
125
125
 
126
126
  const colorElementToColor = new WeakMap<HTMLElement, string>();
127
127
 
128
- export class Spectrum extends UI.Widget.VBox {
128
+ export class Spectrum extends Common.ObjectWrapper.eventMixin<EventTypes, typeof UI.Widget.VBox>(UI.Widget.VBox) {
129
129
  private colorElement: HTMLElement;
130
130
  private colorDragElement: HTMLElement;
131
131
  private dragX: number;
@@ -1212,6 +1212,11 @@ export enum Events {
1212
1212
  SizeChanged = 'SizeChanged',
1213
1213
  }
1214
1214
 
1215
+ export type EventTypes = {
1216
+ [Events.ColorChanged]: string,
1217
+ [Events.SizeChanged]: void,
1218
+ };
1219
+
1215
1220
  const COLOR_CHIP_SIZE = 24;
1216
1221
  const ITEMS_PER_PALETTE_ROW = 8;
1217
1222
  const GeneratedPaletteTitle = 'Page colors';
@@ -2,12 +2,13 @@
2
2
  // Use of this source code is governed by a BSD-style license that can be
3
3
  // found in the LICENSE file.
4
4
 
5
+ import * as Common from '../../../../core/common/common.js';
5
6
  import * as Platform from '../../../../core/platform/platform.js';
6
7
  import * as UI from '../../legacy.js';
7
8
 
8
9
  import {BezierUI} from './BezierUI.js';
9
10
 
10
- export class BezierEditor extends UI.Widget.VBox {
11
+ export class BezierEditor extends Common.ObjectWrapper.eventMixin<EventTypes, typeof UI.Widget.VBox>(UI.Widget.VBox) {
11
12
  private bezierInternal: UI.Geometry.CubicBezier;
12
13
  private previewElement: HTMLElement;
13
14
  private readonly previewOnion: HTMLElement;
@@ -245,6 +246,10 @@ export enum Events {
245
246
  BezierChanged = 'BezierChanged',
246
247
  }
247
248
 
249
+ export type EventTypes = {
250
+ [Events.BezierChanged]: string,
251
+ };
252
+
248
253
  export const Presets = [
249
254
  [
250
255
  {name: 'ease-in-out', value: 'ease-in-out'},
@@ -2,6 +2,7 @@
2
2
  // Use of this source code is governed by a BSD-style license that can be
3
3
  // found in the LICENSE file.
4
4
 
5
+ import * as Common from '../../../../core/common/common.js';
5
6
  import * as i18n from '../../../../core/i18n/i18n.js';
6
7
  import * as Platform from '../../../../core/platform/platform.js';
7
8
  import * as UI from '../../legacy.js';
@@ -40,7 +41,8 @@ const defaultUnit: string = 'px';
40
41
  const sliderThumbRadius: number = 6;
41
42
  const canvasSize: number = 88;
42
43
 
43
- export class CSSShadowEditor extends UI.Widget.VBox {
44
+ export class CSSShadowEditor extends Common.ObjectWrapper.eventMixin<EventTypes, typeof UI.Widget.VBox>(
45
+ UI.Widget.VBox) {
44
46
  private readonly typeField: HTMLElement;
45
47
  private readonly outsetButton: HTMLElement;
46
48
  private readonly insetButton: HTMLElement;
@@ -429,3 +431,7 @@ export class CSSShadowEditor extends UI.Widget.VBox {
429
431
  export enum Events {
430
432
  ShadowChanged = 'ShadowChanged',
431
433
  }
434
+
435
+ export type EventTypes = {
436
+ [Events.ShadowChanged]: CSSShadowModel,
437
+ };
@@ -2,6 +2,7 @@
2
2
  // Use of this source code is governed by a BSD-style license that can be
3
3
  // found in the LICENSE file.
4
4
 
5
+ import * as Common from '../../../../core/common/common.js';
5
6
  import * as i18n from '../../../../core/i18n/i18n.js';
6
7
  import * as SDK from '../../../../core/sdk/sdk.js';
7
8
  import * as IconButton from '../../../components/icon_button/icon_button.js';
@@ -113,7 +114,7 @@ const UIStrings = {
113
114
  const str_ = i18n.i18n.registerUIStrings('ui/legacy/components/inline_editor/FontEditor.ts', UIStrings);
114
115
  const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
115
116
 
116
- export class FontEditor extends UI.Widget.VBox {
117
+ export class FontEditor extends Common.ObjectWrapper.eventMixin<EventTypes, typeof UI.Widget.VBox>(UI.Widget.VBox) {
117
118
  private readonly selectedNode: SDK.DOMModel.DOMNode|null;
118
119
  private readonly propertyMap: Map<string, string>;
119
120
  private readonly fontSelectorSection: HTMLElement;
@@ -428,6 +429,16 @@ export enum Events {
428
429
  FontEditorResized = 'FontEditorResized',
429
430
  }
430
431
 
432
+ export interface FontChangedEvent {
433
+ propertyName: string;
434
+ value: string;
435
+ }
436
+
437
+ export type EventTypes = {
438
+ [Events.FontChanged]: FontChangedEvent,
439
+ [Events.FontEditorResized]: void,
440
+ };
441
+
431
442
  class FontPropertyInputs {
432
443
  private showSliderMode: boolean;
433
444
  private errorText: HTMLElement;