Skip to content

Commit 73a128e

Browse files
author
Benjamin Pasero
committed
web - add workspace editing service support
1 parent f53f3b5 commit 73a128e

7 files changed

Lines changed: 18 additions & 51 deletions

File tree

src/vs/editor/contrib/multicursor/test/multicursor.test.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,8 @@ suite('Multicursor selection', () => {
6868
getNumber: (key: string) => undefined!,
6969
store: (key: string, value: any) => { queryState[key] = value; return Promise.resolve(); },
7070
remove: (key) => undefined,
71-
logStorage: () => undefined
71+
logStorage: () => undefined,
72+
migrate: (toWorkspace) => Promise.resolve(undefined)
7273
} as IStorageService);
7374

7475
test('issue #8817: Cursor position changes when you cancel multicursor', () => {

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,10 @@ export class BrowserStorageService extends Disposable implements IStorageService
149149
return logStorage(result[0], result[1], this.globalStorageFile.toString(), this.workspaceStorageFile.toString());
150150
}
151151

152+
async migrate(toWorkspace: IWorkspaceInitializationPayload): Promise<void> {
153+
// TODO@ben implement storage migration in web
154+
}
155+
152156
close(): void {
153157
// We explicitly do not close our DBs because writing data onBeforeUnload()
154158
// can result in unexpected results. Namely, it seems that - even though this

src/vs/platform/storage/common/storage.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import { createDecorator } from 'vs/platform/instantiation/common/instantiation'
77
import { Event, Emitter } from 'vs/base/common/event';
88
import { Disposable } from 'vs/base/common/lifecycle';
99
import { isUndefinedOrNull } from 'vs/base/common/types';
10+
import { IWorkspaceInitializationPayload } from 'vs/platform/workspaces/common/workspaces';
1011

1112
export const IStorageService = createDecorator<IStorageService>('storageService');
1213

@@ -96,6 +97,11 @@ export interface IStorageService {
9697
* Log the contents of the storage to the console.
9798
*/
9899
logStorage(): void;
100+
101+
/**
102+
* Migrate the storage contents to another workspace.
103+
*/
104+
migrate(toWorkspace: IWorkspaceInitializationPayload): Promise<void>;
99105
}
100106

101107
export const enum StorageScope {
@@ -205,6 +211,10 @@ export class InMemoryStorageService extends Disposable implements IStorageServic
205211
logStorage(): void {
206212
logStorage(this.globalCache, this.workspaceCache, 'inMemory', 'inMemory');
207213
}
214+
215+
async migrate(toWorkspace: IWorkspaceInitializationPayload): Promise<void> {
216+
// not supported
217+
}
208218
}
209219

210220
export async function logStorage(global: Map<string, string>, workspace: Map<string, string>, globalPath: string, workspacePath: string): Promise<void> {

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

Lines changed: 0 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ import { IWindowService, INativeOpenDialogOptions, IEnterWorkspaceResult, IURITo
1414
import { IWorkspaceIdentifier, ISingleFolderWorkspaceIdentifier, IWorkspaceFolderCreationData, IWorkspacesService } from 'vs/platform/workspaces/common/workspaces';
1515
import { IRecentlyOpened, IRecent, isRecentFile, isRecentFolder } from 'vs/platform/history/common/history';
1616
import { ISerializableCommandAction } from 'vs/platform/actions/common/actions';
17-
import { IWorkspaceEditingService } from 'vs/workbench/services/workspace/common/workspaceEditing';
1817
import { IWorkspaceContextService, WorkbenchState } from 'vs/platform/workspace/common/workspace';
1918
import { addDisposableListener, EventType, windowOpenNoOpener } from 'vs/base/browser/dom';
2019
import { IEditorService, IResourceEditor } from 'vs/workbench/services/editor/common/editorService';
@@ -611,50 +610,6 @@ registerSingleton(IWindowsService, SimpleWindowsService);
611610

612611
//#endregion
613612

614-
//#region Workspace Editing
615-
616-
export class SimpleWorkspaceEditingService implements IWorkspaceEditingService {
617-
618-
_serviceBrand: undefined;
619-
620-
addFolders(folders: IWorkspaceFolderCreationData[], donotNotifyError?: boolean): Promise<void> {
621-
return Promise.resolve(undefined);
622-
}
623-
624-
removeFolders(folders: URI[], donotNotifyError?: boolean): Promise<void> {
625-
return Promise.resolve(undefined);
626-
}
627-
628-
updateFolders(index: number, deleteCount?: number, foldersToAdd?: IWorkspaceFolderCreationData[], donotNotifyError?: boolean): Promise<void> {
629-
return Promise.resolve(undefined);
630-
}
631-
632-
enterWorkspace(path: URI): Promise<void> {
633-
return Promise.resolve(undefined);
634-
}
635-
636-
createAndEnterWorkspace(folders: IWorkspaceFolderCreationData[], path?: URI): Promise<void> {
637-
return Promise.resolve(undefined);
638-
}
639-
640-
saveAndEnterWorkspace(path: URI): Promise<void> {
641-
return Promise.resolve(undefined);
642-
}
643-
644-
copyWorkspaceSettings(toWorkspace: IWorkspaceIdentifier): Promise<void> {
645-
return Promise.resolve(undefined);
646-
}
647-
648-
pickNewWorkspacePath(): Promise<URI> {
649-
// @ts-ignore
650-
return Promise.resolve(undefined);
651-
}
652-
}
653-
654-
registerSingleton(IWorkspaceEditingService, SimpleWorkspaceEditingService, true);
655-
656-
//#endregion
657-
658613
//#region Workspaces
659614

660615
export class SimpleWorkspacesService implements IWorkspacesService {

src/vs/workbench/services/workspace/electron-browser/workspaceEditingService.ts renamed to src/vs/workbench/services/workspace/browser/workspaceEditingService.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ import { IJSONEditingService, JSONEditingError, JSONEditingErrorCode } from 'vs/
1212
import { IWorkspaceIdentifier, IWorkspaceFolderCreationData, IWorkspacesService, rewriteWorkspaceFileForNewLocation, WORKSPACE_FILTER } from 'vs/platform/workspaces/common/workspaces';
1313
import { WorkspaceService } from 'vs/workbench/services/configuration/browser/configurationService';
1414
import { IStorageService } from 'vs/platform/storage/common/storage';
15-
import { StorageService } from 'vs/platform/storage/node/storageService';
1615
import { ConfigurationScope, IConfigurationRegistry, Extensions as ConfigurationExtensions, IConfigurationPropertySchema } from 'vs/platform/configuration/common/configurationRegistry';
1716
import { Registry } from 'vs/platform/registry/common/platform';
1817
import { IExtensionService } from 'vs/workbench/services/extensions/common/extensions';
@@ -421,9 +420,7 @@ export class WorkspaceEditingService implements IWorkspaceEditingService {
421420
}
422421

423422
private migrateStorage(toWorkspace: IWorkspaceIdentifier): Promise<void> {
424-
const storageImpl = this.storageService as StorageService;
425-
426-
return storageImpl.migrate(toWorkspace);
423+
return this.storageService.migrate(toWorkspace);
427424
}
428425

429426
private migrateWorkspaceSettings(toWorkspace: IWorkspaceIdentifier): Promise<void> {

src/vs/workbench/workbench.common.main.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ import 'vs/workbench/services/label/common/labelService';
7575
import 'vs/workbench/services/extensionManagement/common/extensionEnablementService';
7676
import 'vs/workbench/services/notification/common/notificationService';
7777
import 'vs/workbench/services/extensions/common/staticExtensions';
78+
import 'vs/workbench/services/workspace/browser/workspaceEditingService';
7879

7980
import { registerSingleton } from 'vs/platform/instantiation/common/extensions';
8081
import { ExtensionGalleryService } from 'vs/platform/extensionManagement/common/extensionGalleryService';

src/vs/workbench/workbench.desktop.main.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ import 'vs/workbench/electron-browser/desktop.main';
2929
//#region --- workbench services
3030
import 'vs/workbench/services/integrity/node/integrityService';
3131
import 'vs/workbench/services/textMate/electron-browser/textMateService';
32-
import 'vs/workbench/services/workspace/electron-browser/workspaceEditingService';
3332
import 'vs/workbench/services/search/node/searchService';
3433
import 'vs/workbench/services/output/node/outputChannelModelService';
3534
import 'vs/workbench/services/textfile/node/textFileService';

0 commit comments

Comments
 (0)