Skip to content

Commit 4a5e915

Browse files
szuendDevtools-frontend LUCI CQ
authored andcommitted
[sdk] Move parts of model creation into TargetManager
We want to allow creators of TargetManager to override which models are auto-started and this is a first step. [email protected] Bug: 451502260 Change-Id: I7f5a174a43f85caf7fa06ba89b3c731f97c30ba5 Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/7157174 Reviewed-by: Alex Rudenko <[email protected]> Commit-Queue: Simon Zünd <[email protected]>
1 parent 03dec33 commit 4a5e915

File tree

2 files changed

+21
-16
lines changed

2 files changed

+21
-16
lines changed

front_end/core/sdk/Target.ts

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import * as Common from '../common/common.js';
77
import * as Platform from '../platform/platform.js';
88
import * as ProtocolClient from '../protocol_client/protocol_client.js';
99

10-
import {SDKModel} from './SDKModel.js';
10+
import {SDKModel, type SDKModelConstructor} from './SDKModel.js';
1111
import type {TargetManager} from './TargetManager.js';
1212

1313
export class Target extends ProtocolClient.InspectorBackend.TargetBase {
@@ -111,20 +111,11 @@ export class Target extends ProtocolClient.InspectorBackend.TargetBase {
111111
this.#targetInfo = targetInfo;
112112
}
113113

114-
createModels(required: Set<new(arg1: Target) => SDKModel>): void {
114+
/** Creates the models in the order in which they are provided */
115+
createModels(models: SDKModelConstructor[]): void {
115116
this.#creatingModels = true;
116-
const registeredModels = Array.from(SDKModel.registeredModels.entries());
117-
// Create early models.
118-
for (const [modelClass, info] of registeredModels) {
119-
if (info.early) {
120-
this.model(modelClass);
121-
}
122-
}
123-
// Create autostart and required models.
124-
for (const [modelClass, info] of registeredModels) {
125-
if (info.autostart || required.has(modelClass)) {
126-
this.model(modelClass);
127-
}
117+
for (const model of models) {
118+
this.model(model);
128119
}
129120
this.#creatingModels = false;
130121
}

front_end/core/sdk/TargetManager.ts

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,20 @@ export class TargetManager extends Common.ObjectWrapper.ObjectWrapper<EventTypes
205205
this.#scopedObservers.delete(targetObserver);
206206
}
207207

208+
/** @returns The set of models we create unconditionally for new targets in the order in which they should be created */
209+
#autoStartModels(): SDKModelConstructor[] {
210+
const earlyModels = new Set<SDKModelConstructor>();
211+
const models = new Set<SDKModelConstructor>();
212+
for (const [model, info] of SDKModel.registeredModels) {
213+
if (info.early) {
214+
earlyModels.add(model);
215+
} else if (info.autostart || this.#modelObservers.has(model)) {
216+
models.add(model);
217+
}
218+
}
219+
return [...earlyModels, ...models];
220+
}
221+
208222
createTarget(
209223
id: Protocol.Target.TargetID|'main', name: string, type: TargetType, parentTarget: Target|null,
210224
sessionId?: string, waitForDebuggerInPage?: boolean, connection?: ProtocolClient.CDPConnection.CDPConnection,
@@ -214,7 +228,7 @@ export class TargetManager extends Common.ObjectWrapper.ObjectWrapper<EventTypes
214228
if (waitForDebuggerInPage) {
215229
void target.pageAgent().invoke_waitForDebugger();
216230
}
217-
target.createModels(new Set(this.#modelObservers.keysArray()));
231+
target.createModels(this.#autoStartModels());
218232
this.#targets.add(target);
219233

220234
const inScope = this.isInScope(target);
@@ -316,7 +330,7 @@ export class TargetManager extends Common.ObjectWrapper.ObjectWrapper<EventTypes
316330
this.#browserTarget = new Target(
317331
this, /* #id*/ 'main', /* #name*/ 'browser', TargetType.BROWSER, /* #parentTarget*/ null,
318332
/* #sessionId */ '', /* suspended*/ false, /* #connection*/ null, /* targetInfo*/ undefined);
319-
this.#browserTarget.createModels(new Set(this.#modelObservers.keysArray()));
333+
this.#browserTarget.createModels(this.#autoStartModels());
320334
}
321335
const targetId =
322336
await Host.InspectorFrontendHost.InspectorFrontendHostInstance.initialTargetId() as Protocol.Target.TargetID;

0 commit comments

Comments
 (0)