chrome-devtools-frontend
Version:
Chrome DevTools UI
52 lines (40 loc) • 2.58 kB
text/typescript
// Copyright 2025 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import * as Common from '../core/common/common.js';
import * as Root from '../core/root/root.js';
import * as SDK from '../core/sdk/sdk.js';
import * as Bindings from '../models/bindings/bindings.js';
import * as Workspace from '../models/workspace/workspace.js';
export interface CreationOptions {
settingsCreationOptions: Common.Settings.SettingsCreationOptions;
overrideAutoStartModels?: Set<SDK.SDKModel.SDKModelConstructor>;
}
export class Universe {
readonly context = new Root.DevToolsContext.DevToolsContext();
constructor(options: CreationOptions) {
// TODO(crbug.com/458180550): Store instance on a "DevToolsContext" instead.
// For now the global is fine as we don't anticipate the MCP server to change settings.
const settings = Common.Settings.Settings.instance({
forceNew: true,
...options.settingsCreationOptions,
});
const targetManager = new SDK.TargetManager.TargetManager(this.context, options.overrideAutoStartModels);
this.context.set(SDK.TargetManager.TargetManager, targetManager);
const multitargetNetworkManager = new SDK.NetworkManager.MultitargetNetworkManager(targetManager);
this.context.set(SDK.NetworkManager.MultitargetNetworkManager, multitargetNetworkManager);
const pageResourceLoader =
new SDK.PageResourceLoader.PageResourceLoader(targetManager, settings, multitargetNetworkManager, null);
this.context.set(SDK.PageResourceLoader.PageResourceLoader, pageResourceLoader);
const workspace = new Workspace.Workspace.WorkspaceImpl();
this.context.set(Workspace.Workspace.WorkspaceImpl, workspace);
const ignoreListManager = new Workspace.IgnoreListManager.IgnoreListManager(settings, targetManager);
this.context.set(Workspace.IgnoreListManager.IgnoreListManager, ignoreListManager);
const resourceMapping = new Bindings.ResourceMapping.ResourceMapping(targetManager, workspace);
const cssWorkspaceBinding = new Bindings.CSSWorkspaceBinding.CSSWorkspaceBinding(resourceMapping, targetManager);
this.context.set(Bindings.CSSWorkspaceBinding.CSSWorkspaceBinding, cssWorkspaceBinding);
const debuggerWorkspaceBinding = new Bindings.DebuggerWorkspaceBinding.DebuggerWorkspaceBinding(
resourceMapping, targetManager, ignoreListManager, workspace);
this.context.set(Bindings.DebuggerWorkspaceBinding.DebuggerWorkspaceBinding, debuggerWorkspaceBinding);
}
}