Skip to content

Commit c212dda

Browse files
committed
enable hot exit on web
1 parent 43cb2d6 commit c212dda

2 files changed

Lines changed: 20 additions & 8 deletions

File tree

src/vs/workbench/browser/web.main.ts

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,8 @@ import { hash } from 'vs/base/common/hash';
3535
import { IWorkbenchConstructionOptions } from 'vs/workbench/workbench.web.api';
3636
import { ProductService } from 'vs/platform/product/browser/productService';
3737
import { FileUserDataProvider } from 'vs/workbench/services/userData/common/fileUserDataProvider';
38-
import { joinPath, dirname } from 'vs/base/common/resources';
38+
import { joinPath } from 'vs/base/common/resources';
39+
import { BACKUPS } from 'vs/platform/environment/common/environment';
3940

4041
class CodeRendererMain extends Disposable {
4142

@@ -83,8 +84,14 @@ class CodeRendererMain extends Disposable {
8384
const logService = new SimpleLogService();
8485
serviceCollection.set(ILogService, logService);
8586

87+
const payload = await this.resolveWorkspaceInitializationPayload();
88+
8689
// Environment
87-
const environmentService = new BrowserWorkbenchEnvironmentService(this.configuration);
90+
const environmentService = new BrowserWorkbenchEnvironmentService({
91+
workspaceId: payload.id,
92+
remoteAuthority: this.configuration.remoteAuthority,
93+
webviewEndpoint: this.configuration.webviewEndpoint
94+
});
8895
serviceCollection.set(IWorkbenchEnvironmentService, environmentService);
8996

9097
// Product
@@ -118,7 +125,7 @@ class CodeRendererMain extends Disposable {
118125
if (!userDataProvider) {
119126
const remoteUserDataUri = this.getRemoteUserDataUri();
120127
if (remoteUserDataUri) {
121-
userDataProvider = this._register(new FileUserDataProvider(remoteUserDataUri, dirname(remoteUserDataUri), remoteFileSystemProvider, environmentService));
128+
userDataProvider = this._register(new FileUserDataProvider(remoteUserDataUri, joinPath(remoteUserDataUri, BACKUPS), remoteFileSystemProvider, environmentService));
122129
}
123130
}
124131
}
@@ -128,8 +135,6 @@ class CodeRendererMain extends Disposable {
128135
fileService.registerProvider(Schemas.userData, userDataProvider);
129136
}
130137

131-
const payload = await this.resolveWorkspaceInitializationPayload();
132-
133138
await Promise.all([
134139
this.createWorkspaceService(payload, environmentService, fileService, remoteAgentService, logService).then(service => {
135140

src/vs/workbench/services/environment/browser/environmentService.ts

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,14 @@
44
*--------------------------------------------------------------------------------------------*/
55

66
import { IWindowConfiguration, IPath, IPathsToWaitFor } from 'vs/platform/windows/common/windows';
7-
import { IEnvironmentService, IExtensionHostDebugParams, IDebugParams } from 'vs/platform/environment/common/environment';
7+
import { IEnvironmentService, IExtensionHostDebugParams, IDebugParams, BACKUPS } from 'vs/platform/environment/common/environment';
88
import { ServiceIdentifier } from 'vs/platform/instantiation/common/instantiation';
99
import { URI } from 'vs/base/common/uri';
1010
import { IProcessEnvironment } from 'vs/base/common/platform';
1111
import { IWorkspaceIdentifier, ISingleFolderWorkspaceIdentifier } from 'vs/platform/workspaces/common/workspaces';
1212
import { ExportData } from 'vs/base/common/performance';
1313
import { LogLevel } from 'vs/platform/log/common/log';
1414
import { joinPath } from 'vs/base/common/resources';
15-
import { IWorkbenchConstructionOptions } from 'vs/workbench/workbench.web.api';
1615
import { Schemas } from 'vs/base/common/network';
1716

1817
export class BrowserWindowConfiguration implements IWindowConfiguration {
@@ -58,12 +57,18 @@ export class BrowserWindowConfiguration implements IWindowConfiguration {
5857
termProgram?: string;
5958
}
6059

60+
export interface IBrowserWindowConfiguration {
61+
workspaceId: string;
62+
remoteAuthority?: string;
63+
webviewEndpoint?: string;
64+
}
65+
6166
export class BrowserWorkbenchEnvironmentService implements IEnvironmentService {
6267
_serviceBrand: ServiceIdentifier<IEnvironmentService>;
6368

6469
readonly configuration: IWindowConfiguration = new BrowserWindowConfiguration();
6570

66-
constructor(configuration: IWorkbenchConstructionOptions) {
71+
constructor(configuration: IBrowserWindowConfiguration) {
6772
this.args = { _: [] };
6873
this.appRoot = '/web/';
6974
this.appNameLong = 'Visual Studio Code - Web';
@@ -74,6 +79,8 @@ export class BrowserWorkbenchEnvironmentService implements IEnvironmentService {
7479
this.keybindingsResource = joinPath(this.userRoamingDataHome, 'keybindings.json');
7580
this.keyboardLayoutResource = joinPath(this.userRoamingDataHome, 'keyboardLayout.json');
7681
this.localeResource = joinPath(this.userRoamingDataHome, 'locale.json');
82+
this.backupHome = joinPath(this.userRoamingDataHome, BACKUPS);
83+
this.configuration.backupWorkspaceResource = joinPath(this.backupHome, configuration.workspaceId);
7784

7885
this.logsPath = '/web/logs';
7986

0 commit comments

Comments
 (0)