Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/workbench/contrib/browserView/electron-browser/browserViewWorkbenchService.ts
5240 views
1
/*---------------------------------------------------------------------------------------------
2
* Copyright (c) Microsoft Corporation. All rights reserved.
3
* Licensed under the MIT License. See License.txt in the project root for license information.
4
*--------------------------------------------------------------------------------------------*/
5
6
import { IBrowserViewService, ipcBrowserViewChannelName } from '../../../../platform/browserView/common/browserView.js';
7
import { IBrowserViewWorkbenchService, IBrowserViewModel, BrowserViewModel } from '../common/browserView.js';
8
import { IMainProcessService } from '../../../../platform/ipc/common/mainProcessService.js';
9
import { ProxyChannel } from '../../../../base/parts/ipc/common/ipc.js';
10
import { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';
11
import { IWorkspaceContextService } from '../../../../platform/workspace/common/workspace.js';
12
import { Event } from '../../../../base/common/event.js';
13
14
export class BrowserViewWorkbenchService implements IBrowserViewWorkbenchService {
15
declare readonly _serviceBrand: undefined;
16
17
private readonly _browserViewService: IBrowserViewService;
18
private readonly _models = new Map<string, IBrowserViewModel>();
19
20
constructor(
21
@IMainProcessService mainProcessService: IMainProcessService,
22
@IInstantiationService private readonly instantiationService: IInstantiationService,
23
@IWorkspaceContextService private readonly workspaceContextService: IWorkspaceContextService
24
) {
25
const channel = mainProcessService.getChannel(ipcBrowserViewChannelName);
26
this._browserViewService = ProxyChannel.toService<IBrowserViewService>(channel);
27
}
28
29
async getOrCreateBrowserViewModel(id: string): Promise<IBrowserViewModel> {
30
let model = this._models.get(id);
31
if (model) {
32
return model;
33
}
34
35
model = this.instantiationService.createInstance(BrowserViewModel, id, this._browserViewService);
36
this._models.set(id, model);
37
38
// Initialize the model with current state
39
await model.initialize();
40
41
// Clean up model when disposed
42
Event.once(model.onWillDispose)(() => {
43
this._models.delete(id);
44
});
45
46
return model;
47
}
48
49
async clearGlobalStorage(): Promise<void> {
50
return this._browserViewService.clearGlobalStorage();
51
}
52
53
async clearWorkspaceStorage(): Promise<void> {
54
const workspaceId = this.workspaceContextService.getWorkspace().id;
55
return this._browserViewService.clearWorkspaceStorage(workspaceId);
56
}
57
}
58
59