Skip to content

Commit 03dec33

Browse files
szuendDevtools-frontend LUCI CQ
authored andcommitted
[cleanup] Replace 'ModelClass' with 'SDKModelConstructor'
Small cleanup to use the same type everywhere. [email protected] Bug: None Change-Id: I9c325aa7b6d10b38a8c60973a7231986e95e832c Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/7157342 Commit-Queue: Kim-Anh Tran <[email protected]> Auto-Submit: Simon Zünd <[email protected]> Reviewed-by: Kim-Anh Tran <[email protected]>
1 parent 7562764 commit 03dec33

File tree

2 files changed

+18
-17
lines changed

2 files changed

+18
-17
lines changed

front_end/core/sdk/SDKModel.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@ export interface RegistrationInfo {
1212
early?: boolean;
1313
}
1414

15-
const registeredModels = new Map<new (arg1: Target) => SDKModel, RegistrationInfo>();
15+
export type SDKModelConstructor<T extends SDKModel = SDKModel> = new (target: Target) => T;
16+
17+
const registeredModels = new Map<SDKModelConstructor, RegistrationInfo>();
1618

1719
// TODO(crbug.com/1228674) Remove defaults for generic type parameters once
1820
// all event emitters and sinks have been migrated.
@@ -52,7 +54,7 @@ export class SDKModel<Events = any> extends Common.ObjectWrapper.ObjectWrapper<E
5254
dispose(): void {
5355
}
5456

55-
static register(modelClass: new(arg1: Target) => SDKModel, registrationInfo: RegistrationInfo): void {
57+
static register(modelClass: SDKModelConstructor, registrationInfo: RegistrationInfo): void {
5658
if (registrationInfo.early && !registrationInfo.autostart) {
5759
throw new Error(`Error registering model ${modelClass.name}: early models must be autostarted.`);
5860
}

front_end/core/sdk/TargetManager.ts

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -10,22 +10,20 @@ import {assertNotNullOrUndefined} from '../platform/platform.js';
1010
import type * as ProtocolClient from '../protocol_client/protocol_client.js';
1111
import * as Root from '../root/root.js';
1212

13-
import {SDKModel} from './SDKModel.js';
13+
import {SDKModel, type SDKModelConstructor} from './SDKModel.js';
1414
import {Target, Type as TargetType} from './Target.js';
1515

16-
type ModelClass<T = SDKModel> = new (arg1: Target) => T;
17-
1816
export class TargetManager extends Common.ObjectWrapper.ObjectWrapper<EventTypes> {
1917
#targets: Set<Target>;
2018
readonly #observers: Set<Observer>;
2119
/* eslint-disable @typescript-eslint/no-explicit-any */
2220
#modelListeners: Platform.MapUtilities.Multimap<string|symbol|number, {
23-
modelClass: ModelClass,
21+
modelClass: SDKModelConstructor,
2422
thisObject: Object|undefined,
2523
listener: Common.EventTarget.EventListener<any, any>,
2624
wrappedListener: Common.EventTarget.EventListener<any, any>,
2725
}>;
28-
readonly #modelObservers: Platform.MapUtilities.Multimap<ModelClass, SDKModelObserver<any>>;
26+
readonly #modelObservers: Platform.MapUtilities.Multimap<SDKModelConstructor, SDKModelObserver<any>>;
2927
#scopedObservers: WeakSet<Observer|SDKModelObserver<any>>;
3028
/* eslint-enable @typescript-eslint/no-explicit-any */
3129
#isSuspended: boolean;
@@ -99,7 +97,7 @@ export class TargetManager extends Common.ObjectWrapper.ObjectWrapper<EventTypes
9997
return this.#isSuspended;
10098
}
10199

102-
models<T extends SDKModel>(modelClass: ModelClass<T>, opts?: {scoped: boolean}): T[] {
100+
models<T extends SDKModel>(modelClass: SDKModelConstructor<T>, opts?: {scoped: boolean}): T[] {
103101
const result = [];
104102
for (const target of this.#targets) {
105103
if (opts?.scoped && !this.isInScope(target)) {
@@ -119,8 +117,9 @@ export class TargetManager extends Common.ObjectWrapper.ObjectWrapper<EventTypes
119117
return mainTarget ? mainTarget.inspectedURL() : '';
120118
}
121119

122-
observeModels<T extends SDKModel>(modelClass: ModelClass<T>, observer: SDKModelObserver<T>, opts?: {scoped: boolean}):
123-
void {
120+
observeModels<T extends SDKModel>(modelClass: SDKModelConstructor<T>, observer: SDKModelObserver<T>, opts?: {
121+
scoped: boolean,
122+
}): void {
124123
const models = this.models(modelClass, opts);
125124
this.#modelObservers.set(modelClass, observer);
126125
if (opts?.scoped) {
@@ -131,20 +130,20 @@ export class TargetManager extends Common.ObjectWrapper.ObjectWrapper<EventTypes
131130
}
132131
}
133132

134-
unobserveModels<T extends SDKModel>(modelClass: ModelClass<T>, observer: SDKModelObserver<T>): void {
133+
unobserveModels<T extends SDKModel>(modelClass: SDKModelConstructor<T>, observer: SDKModelObserver<T>): void {
135134
this.#modelObservers.delete(modelClass, observer);
136135
this.#scopedObservers.delete(observer);
137136
}
138137

139-
modelAdded(modelClass: ModelClass, model: SDKModel, inScope: boolean): void {
138+
modelAdded(modelClass: SDKModelConstructor, model: SDKModel, inScope: boolean): void {
140139
for (const observer of this.#modelObservers.get(modelClass).values()) {
141140
if (!this.#scopedObservers.has(observer) || inScope) {
142141
observer.modelAdded(model);
143142
}
144143
}
145144
}
146145

147-
private modelRemoved(modelClass: ModelClass, model: SDKModel, inScope: boolean): void {
146+
private modelRemoved(modelClass: SDKModelConstructor, model: SDKModel, inScope: boolean): void {
148147
for (const observer of this.#modelObservers.get(modelClass).values()) {
149148
if (!this.#scopedObservers.has(observer) || inScope) {
150149
observer.modelRemoved(model);
@@ -153,8 +152,8 @@ export class TargetManager extends Common.ObjectWrapper.ObjectWrapper<EventTypes
153152
}
154153

155154
addModelListener<Events, T extends keyof Events>(
156-
modelClass: ModelClass<SDKModel<Events>>, eventType: T, listener: Common.EventTarget.EventListener<Events, T>,
157-
thisObject?: Object, opts?: {scoped: boolean}): void {
155+
modelClass: SDKModelConstructor<SDKModel<Events>>, eventType: T,
156+
listener: Common.EventTarget.EventListener<Events, T>, thisObject?: Object, opts?: {scoped: boolean}): void {
158157
const wrappedListener = (event: Common.EventTarget.EventTargetEvent<Events[T], Events>): void => {
159158
if (!opts?.scoped || this.isInScope(event)) {
160159
listener.call(thisObject, event);
@@ -167,8 +166,8 @@ export class TargetManager extends Common.ObjectWrapper.ObjectWrapper<EventTypes
167166
}
168167

169168
removeModelListener<Events, T extends keyof Events>(
170-
modelClass: ModelClass<SDKModel<Events>>, eventType: T, listener: Common.EventTarget.EventListener<Events, T>,
171-
thisObject?: Object): void {
169+
modelClass: SDKModelConstructor<SDKModel<Events>>, eventType: T,
170+
listener: Common.EventTarget.EventListener<Events, T>, thisObject?: Object): void {
172171
if (!this.#modelListeners.has(eventType)) {
173172
return;
174173
}

0 commit comments

Comments
 (0)