MCPcopy
hub / github.com/microsoft/vscode-js-debug / BrowserTargetManager

Class BrowserTargetManager

src/targets/browser/browserTargetManager.ts:20–370  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

18import { IBrowserProcess } from './spawn/browserProcess';
19
20export class BrowserTargetManager implements IDisposable {
21 private _connection: CdpConnection;
22 private _targets: Map<Cdp.Target.SessionID, BrowserTarget> = new Map();
23 protected readonly _browser: Cdp.Api;
24 private readonly _detachedTargets = new Set();
25 readonly frameModel = new FrameModel();
26 readonly serviceWorkerModel = new ServiceWorkerModel(this.frameModel);
27 private _lifecycleQueue = Promise.resolve();
28 _sourcePathResolver: ISourcePathResolver;
29 _targetOrigin: ITargetOrigin;
30 _scriptSkipper?: ScriptSkipper;
31
32 private _onTargetAddedEmitter = new EventEmitter<BrowserTarget>();
33 private _onTargetRemovedEmitter = new EventEmitter<BrowserTarget>();
34 readonly onTargetAdded = this._onTargetAddedEmitter.event;
35 readonly onTargetRemoved = this._onTargetRemovedEmitter.event;
36
37 static async connect(
38 connection: CdpConnection,
39 process: undefined | IBrowserProcess,
40 sourcePathResolver: ISourcePathResolver,
41 launchParams: AnyChromiumConfiguration,
42 logger: ILogger,
43 telemetry: ITelemetryReporter,
44 targetOrigin: ITargetOrigin,
45 ): Promise<BrowserTargetManager | undefined> {
46 const rootSession = connection.rootSession();
47 const result = await rootSession.Target.attachToBrowserTarget({});
48 if (!result) return;
49 const browserSession = connection.createSession(result.sessionId);
50 return new this(
51 connection,
52 process,
53 browserSession,
54 sourcePathResolver,
55 logger,
56 telemetry,
57 launchParams,
58 targetOrigin,
59 );
60 }
61
62 constructor(
63 connection: CdpConnection,
64 private process: IBrowserProcess | undefined,
65 browserSession: Cdp.Api,
66 sourcePathResolver: ISourcePathResolver,
67 private readonly logger: ILogger,
68 private readonly telemetry: ITelemetryReporter,
69 protected readonly launchParams: AnyChromiumConfiguration,
70 targetOrigin: ITargetOrigin,
71 ) {
72 this._connection = connection;
73 this._sourcePathResolver = sourcePathResolver;
74 this._browser = browserSession;
75 this._targetOrigin = targetOrigin;
76 this.serviceWorkerModel.onDidChange(() => {
77 for (const target of this._targets.values()) {

Callers

nothing calls this directly

Calls 1

resolveMethod · 0.80

Tested by

no test coverage detected