Path: blob/main/src/vs/workbench/contrib/browserView/electron-browser/browserViewWorkbenchService.ts
5240 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/45import { IBrowserViewService, ipcBrowserViewChannelName } from '../../../../platform/browserView/common/browserView.js';6import { IBrowserViewWorkbenchService, IBrowserViewModel, BrowserViewModel } from '../common/browserView.js';7import { IMainProcessService } from '../../../../platform/ipc/common/mainProcessService.js';8import { ProxyChannel } from '../../../../base/parts/ipc/common/ipc.js';9import { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';10import { IWorkspaceContextService } from '../../../../platform/workspace/common/workspace.js';11import { Event } from '../../../../base/common/event.js';1213export class BrowserViewWorkbenchService implements IBrowserViewWorkbenchService {14declare readonly _serviceBrand: undefined;1516private readonly _browserViewService: IBrowserViewService;17private readonly _models = new Map<string, IBrowserViewModel>();1819constructor(20@IMainProcessService mainProcessService: IMainProcessService,21@IInstantiationService private readonly instantiationService: IInstantiationService,22@IWorkspaceContextService private readonly workspaceContextService: IWorkspaceContextService23) {24const channel = mainProcessService.getChannel(ipcBrowserViewChannelName);25this._browserViewService = ProxyChannel.toService<IBrowserViewService>(channel);26}2728async getOrCreateBrowserViewModel(id: string): Promise<IBrowserViewModel> {29let model = this._models.get(id);30if (model) {31return model;32}3334model = this.instantiationService.createInstance(BrowserViewModel, id, this._browserViewService);35this._models.set(id, model);3637// Initialize the model with current state38await model.initialize();3940// Clean up model when disposed41Event.once(model.onWillDispose)(() => {42this._models.delete(id);43});4445return model;46}4748async clearGlobalStorage(): Promise<void> {49return this._browserViewService.clearGlobalStorage();50}5152async clearWorkspaceStorage(): Promise<void> {53const workspaceId = this.workspaceContextService.getWorkspace().id;54return this._browserViewService.clearWorkspaceStorage(workspaceId);55}56}575859