Skip to content

Commit b9bf66b

Browse files
author
Benjamin Pasero
committed
web - limit workspace actions
1 parent 177b8b1 commit b9bf66b

19 files changed

Lines changed: 236 additions & 206 deletions

File tree

src/vs/code/electron-main/app.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,8 @@ import { Disposable } from 'vs/base/common/lifecycle';
3939
import { IWindowsMainService, ICodeWindow } from 'vs/platform/windows/electron-main/windows';
4040
import { IHistoryMainService } from 'vs/platform/history/common/history';
4141
import { URI } from 'vs/base/common/uri';
42-
import { WorkspacesChannel } from 'vs/platform/workspaces/node/workspacesIpc';
43-
import { IWorkspacesMainService, hasWorkspaceFileExtension } from 'vs/platform/workspaces/common/workspaces';
42+
import { WorkspacesChannel } from 'vs/platform/workspaces/electron-main/workspacesIpc';
43+
import { hasWorkspaceFileExtension } from 'vs/platform/workspaces/common/workspaces';
4444
import { getMachineId } from 'vs/base/node/id';
4545
import { Win32UpdateService } from 'vs/platform/update/electron-main/updateService.win32';
4646
import { LinuxUpdateService } from 'vs/platform/update/electron-main/updateService.linux';
@@ -69,7 +69,7 @@ import { BackupMainService } from 'vs/platform/backup/electron-main/backupMainSe
6969
import { IBackupMainService } from 'vs/platform/backup/common/backup';
7070
import { HistoryMainService } from 'vs/platform/history/electron-main/historyMainService';
7171
import { URLService } from 'vs/platform/url/node/urlService';
72-
import { WorkspacesMainService } from 'vs/platform/workspaces/electron-main/workspacesMainService';
72+
import { WorkspacesMainService, IWorkspacesMainService } from 'vs/platform/workspaces/electron-main/workspacesMainService';
7373
import { statSync } from 'fs';
7474
import { DiagnosticsService } from 'vs/platform/diagnostics/node/diagnosticsIpc';
7575
import { IDiagnosticsService } from 'vs/platform/diagnostics/node/diagnosticsService';

src/vs/code/electron-main/window.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@ import { IWindowSettings, MenuBarVisibility, IWindowConfiguration, ReadyState, g
1717
import { Disposable, toDisposable } from 'vs/base/common/lifecycle';
1818
import { isLinux, isMacintosh, isWindows } from 'vs/base/common/platform';
1919
import { ICodeWindow, IWindowState, WindowMode } from 'vs/platform/windows/electron-main/windows';
20-
import { IWorkspaceIdentifier, IWorkspacesMainService } from 'vs/platform/workspaces/common/workspaces';
20+
import { IWorkspaceIdentifier } from 'vs/platform/workspaces/common/workspaces';
21+
import { IWorkspacesMainService } from 'vs/platform/workspaces/electron-main/workspacesMainService';
2122
import { IBackupMainService } from 'vs/platform/backup/common/backup';
2223
import { ISerializableCommandAction } from 'vs/platform/actions/common/actions';
2324
import * as perf from 'vs/base/common/performance';

src/vs/code/electron-main/windows.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ import { ITelemetryService, ITelemetryData } from 'vs/platform/telemetry/common/
2525
import { IWindowsMainService, IOpenConfiguration, IWindowsCountChangedEvent, ICodeWindow, IWindowState as ISingleWindowState, WindowMode } from 'vs/platform/windows/electron-main/windows';
2626
import { IHistoryMainService, IRecent } from 'vs/platform/history/common/history';
2727
import { IProcessEnvironment, isMacintosh, isWindows } from 'vs/base/common/platform';
28-
import { IWorkspacesMainService, IWorkspaceIdentifier, WORKSPACE_FILTER, isSingleFolderWorkspaceIdentifier, hasWorkspaceFileExtension } from 'vs/platform/workspaces/common/workspaces';
28+
import { IWorkspaceIdentifier, WORKSPACE_FILTER, isSingleFolderWorkspaceIdentifier, hasWorkspaceFileExtension } from 'vs/platform/workspaces/common/workspaces';
2929
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
3030
import { mnemonicButtonLabel } from 'vs/base/common/labels';
3131
import { Schemas } from 'vs/base/common/network';
@@ -36,7 +36,7 @@ import { exists, dirExists } from 'vs/base/node/pfs';
3636
import { getComparisonKey, isEqual, normalizePath, basename as resourcesBasename, originalFSPath, hasTrailingPathSeparator, removeTrailingPathSeparator } from 'vs/base/common/resources';
3737
import { getRemoteAuthority } from 'vs/platform/remote/common/remoteHosts';
3838
import { restoreWindowsState, WindowsStateStorageData, getWindowsStateStoreData } from 'vs/code/electron-main/windowsStateStorage';
39-
import { getWorkspaceIdentifier } from 'vs/platform/workspaces/electron-main/workspacesMainService';
39+
import { getWorkspaceIdentifier, IWorkspacesMainService } from 'vs/platform/workspaces/electron-main/workspacesMainService';
4040
import { once } from 'vs/base/common/functional';
4141
import { Disposable } from 'vs/base/common/lifecycle';
4242

src/vs/platform/history/electron-main/historyMainService.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ import { getBaseLabel, getPathLabel } from 'vs/base/common/labels';
1212
import { IPath } from 'vs/platform/windows/common/windows';
1313
import { Event as CommonEvent, Emitter } from 'vs/base/common/event';
1414
import { isWindows, isMacintosh } from 'vs/base/common/platform';
15-
import { IWorkspaceIdentifier, IWorkspacesMainService, ISingleFolderWorkspaceIdentifier, isSingleFolderWorkspaceIdentifier } from 'vs/platform/workspaces/common/workspaces';
15+
import { IWorkspaceIdentifier, ISingleFolderWorkspaceIdentifier, isSingleFolderWorkspaceIdentifier } from 'vs/platform/workspaces/common/workspaces';
16+
import { IWorkspacesMainService } from 'vs/platform/workspaces/electron-main/workspacesMainService';
1617
import { IHistoryMainService, IRecentlyOpened, isRecentWorkspace, isRecentFolder, IRecent, isRecentFile, IRecentFolder, IRecentWorkspace, IRecentFile } from 'vs/platform/history/common/history';
1718
import { ThrottledDelayer } from 'vs/base/common/async';
1819
import { isEqual as areResourcesEqual, dirname, originalFSPath, basename } from 'vs/base/common/resources';

src/vs/platform/launch/electron-main/launchService.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import { createDecorator } from 'vs/platform/instantiation/common/instantiation'
1212
import { OpenContext, IWindowSettings } from 'vs/platform/windows/common/windows';
1313
import { IWindowsMainService, ICodeWindow } from 'vs/platform/windows/electron-main/windows';
1414
import { whenDeleted } from 'vs/base/node/pfs';
15-
import { IWorkspacesMainService } from 'vs/platform/workspaces/common/workspaces';
15+
import { IWorkspacesMainService } from 'vs/platform/workspaces/electron-main/workspacesMainService';
1616
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
1717
import { URI } from 'vs/base/common/uri';
1818
import { BrowserWindow, ipcMain, Event as IpcEvent, app } from 'electron';

src/vs/platform/storage/browser/storageService.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ export class BrowserStorageService extends Disposable implements IStorageService
150150
}
151151

152152
async migrate(toWorkspace: IWorkspaceInitializationPayload): Promise<void> {
153-
// TODO@ben implement storage migration in web
153+
throw new Error('Migrating storage is currently unsupported in Web');
154154
}
155155

156156
close(): void {

src/vs/platform/workspaces/common/workspaces.ts

Lines changed: 3 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55

66
import { createDecorator } from 'vs/platform/instantiation/common/instantiation';
77
import { localize } from 'vs/nls';
8-
import { Event } from 'vs/base/common/event';
98
import { IWorkspaceFolder, IWorkspace } from 'vs/platform/workspace/common/workspace';
109
import { URI, UriComponents } from 'vs/base/common/uri';
1110
import { isWindows, isLinux, isMacintosh } from 'vs/base/common/platform';
@@ -19,9 +18,6 @@ import { toSlashes } from 'vs/base/common/extpath';
1918
import { FormattingOptions } from 'vs/base/common/jsonFormatter';
2019
import { getRemoteAuthority } from 'vs/platform/remote/common/remoteHosts';
2120

22-
export const IWorkspacesMainService = createDecorator<IWorkspacesMainService>('workspacesMainService');
23-
export const IWorkspacesService = createDecorator<IWorkspacesService>('workspacesService');
24-
2521
export const WORKSPACE_EXTENSION = 'code-workspace';
2622
export const WORKSPACE_FILTER = [{ name: localize('codeWorkspace', "Code Workspace"), extensions: [WORKSPACE_EXTENSION] }];
2723
export const UNTITLED_WORKSPACE_NAME = 'workspace.json';
@@ -95,23 +91,10 @@ export interface IUntitledWorkspaceInfo {
9591
remoteAuthority?: string;
9692
}
9793

98-
export interface IWorkspacesMainService extends IWorkspacesService {
99-
_serviceBrand: undefined;
100-
101-
onUntitledWorkspaceDeleted: Event<IWorkspaceIdentifier>;
102-
103-
createUntitledWorkspaceSync(folders?: IWorkspaceFolderCreationData[]): IWorkspaceIdentifier;
104-
105-
resolveLocalWorkspaceSync(path: URI): IResolvedWorkspace | null;
106-
107-
isUntitledWorkspace(workspace: IWorkspaceIdentifier): boolean;
108-
109-
deleteUntitledWorkspaceSync(workspace: IWorkspaceIdentifier): void;
110-
111-
getUntitledWorkspacesSync(): IUntitledWorkspaceInfo[];
112-
}
94+
export const IWorkspacesService = createDecorator<IWorkspacesService>('workspacesService');
11395

11496
export interface IWorkspacesService {
97+
11598
_serviceBrand: undefined;
11699

117100
createUntitledWorkspace(folders?: IWorkspaceFolderCreationData[], remoteAuthority?: string): Promise<IWorkspaceIdentifier>;
@@ -276,4 +259,4 @@ export function useSlashForPath(storedFolders: IStoredWorkspaceFolder[]): boolea
276259
return false;
277260
}
278261
return true;
279-
}
262+
}

src/vs/platform/workspaces/node/workspacesIpc.ts renamed to src/vs/platform/workspaces/electron-main/workspacesIpc.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44
*--------------------------------------------------------------------------------------------*/
55

66
import { IServerChannel } from 'vs/base/parts/ipc/common/ipc';
7-
import { IWorkspaceIdentifier, IWorkspaceFolderCreationData, IWorkspacesMainService } from 'vs/platform/workspaces/common/workspaces';
7+
import { IWorkspaceIdentifier, IWorkspaceFolderCreationData } from 'vs/platform/workspaces/common/workspaces';
8+
import { IWorkspacesMainService } from 'vs/platform/workspaces/electron-main/workspacesMainService';
89
import { URI } from 'vs/base/common/uri';
910
import { Event } from 'vs/base/common/event';
1011

src/vs/platform/workspaces/electron-main/workspacesMainService.ts

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* Licensed under the MIT License. See License.txt in the project root for license information.
44
*--------------------------------------------------------------------------------------------*/
55

6-
import { IWorkspacesMainService, IWorkspaceIdentifier, hasWorkspaceFileExtension, UNTITLED_WORKSPACE_NAME, IResolvedWorkspace, IStoredWorkspaceFolder, isStoredWorkspaceFolder, IWorkspaceFolderCreationData, IUntitledWorkspaceInfo, getStoredWorkspaceFolder } from 'vs/platform/workspaces/common/workspaces';
6+
import { IWorkspaceIdentifier, hasWorkspaceFileExtension, UNTITLED_WORKSPACE_NAME, IResolvedWorkspace, IStoredWorkspaceFolder, isStoredWorkspaceFolder, IWorkspaceFolderCreationData, IUntitledWorkspaceInfo, getStoredWorkspaceFolder } from 'vs/platform/workspaces/common/workspaces';
77
import { IEnvironmentService } from 'vs/platform/environment/common/environment';
88
import { join, dirname } from 'vs/base/common/path';
99
import { mkdirp, writeFile, rimrafSync, readdirSync, writeFileSync } from 'vs/base/node/pfs';
@@ -18,12 +18,38 @@ import { URI } from 'vs/base/common/uri';
1818
import { Schemas } from 'vs/base/common/network';
1919
import { Disposable } from 'vs/base/common/lifecycle';
2020
import { originalFSPath, isEqualOrParent, joinPath } from 'vs/base/common/resources';
21+
import { createDecorator } from 'vs/platform/instantiation/common/instantiation';
2122

2223
export interface IStoredWorkspace {
2324
folders: IStoredWorkspaceFolder[];
2425
remoteAuthority?: string;
2526
}
2627

28+
export const IWorkspacesMainService = createDecorator<IWorkspacesMainService>('workspacesMainService');
29+
30+
export interface IWorkspacesMainService {
31+
32+
_serviceBrand: undefined;
33+
34+
onUntitledWorkspaceDeleted: Event<IWorkspaceIdentifier>;
35+
36+
createUntitledWorkspaceSync(folders?: IWorkspaceFolderCreationData[]): IWorkspaceIdentifier;
37+
38+
resolveLocalWorkspaceSync(path: URI): IResolvedWorkspace | null;
39+
40+
isUntitledWorkspace(workspace: IWorkspaceIdentifier): boolean;
41+
42+
deleteUntitledWorkspaceSync(workspace: IWorkspaceIdentifier): void;
43+
44+
getUntitledWorkspacesSync(): IUntitledWorkspaceInfo[];
45+
46+
createUntitledWorkspace(folders?: IWorkspaceFolderCreationData[], remoteAuthority?: string): Promise<IWorkspaceIdentifier>;
47+
48+
deleteUntitledWorkspace(workspace: IWorkspaceIdentifier): Promise<void>;
49+
50+
getWorkspaceIdentifier(workspacePath: URI): Promise<IWorkspaceIdentifier>;
51+
}
52+
2753
export class WorkspacesMainService extends Disposable implements IWorkspacesMainService {
2854

2955
_serviceBrand: undefined;

0 commit comments

Comments
 (0)