diff --git a/src/vs/editor/contrib/multicursor/test/multicursor.test.ts b/src/vs/editor/contrib/multicursor/test/multicursor.test.ts index 4e3fb3beabe..ff69c853e8a 100644 --- a/src/vs/editor/contrib/multicursor/test/multicursor.test.ts +++ b/src/vs/editor/contrib/multicursor/test/multicursor.test.ts @@ -68,7 +68,8 @@ suite('Multicursor selection', () => { getNumber: (key: string) => undefined!, store: (key: string, value: any) => { queryState[key] = value; return Promise.resolve(); }, remove: (key) => undefined, - logStorage: () => undefined + logStorage: () => undefined, + migrate: (toWorkspace) => Promise.resolve(undefined) } as IStorageService); test('issue #8817: Cursor position changes when you cancel multicursor', () => { diff --git a/src/vs/platform/storage/browser/storageService.ts b/src/vs/platform/storage/browser/storageService.ts index c307e34f92c..3de0f8f0726 100644 --- a/src/vs/platform/storage/browser/storageService.ts +++ b/src/vs/platform/storage/browser/storageService.ts @@ -149,6 +149,10 @@ export class BrowserStorageService extends Disposable implements IStorageService return logStorage(result[0], result[1], this.globalStorageFile.toString(), this.workspaceStorageFile.toString()); } + async migrate(toWorkspace: IWorkspaceInitializationPayload): Promise { + // TODO@ben implement storage migration in web + } + close(): void { // We explicitly do not close our DBs because writing data onBeforeUnload() // can result in unexpected results. Namely, it seems that - even though this diff --git a/src/vs/platform/storage/common/storage.ts b/src/vs/platform/storage/common/storage.ts index 5e23d0c095f..0094786e95b 100644 --- a/src/vs/platform/storage/common/storage.ts +++ b/src/vs/platform/storage/common/storage.ts @@ -7,6 +7,7 @@ import { createDecorator } from 'vs/platform/instantiation/common/instantiation' import { Event, Emitter } from 'vs/base/common/event'; import { Disposable } from 'vs/base/common/lifecycle'; import { isUndefinedOrNull } from 'vs/base/common/types'; +import { IWorkspaceInitializationPayload } from 'vs/platform/workspaces/common/workspaces'; export const IStorageService = createDecorator('storageService'); @@ -96,6 +97,11 @@ export interface IStorageService { * Log the contents of the storage to the console. */ logStorage(): void; + + /** + * Migrate the storage contents to another workspace. + */ + migrate(toWorkspace: IWorkspaceInitializationPayload): Promise; } export const enum StorageScope { @@ -205,6 +211,10 @@ export class InMemoryStorageService extends Disposable implements IStorageServic logStorage(): void { logStorage(this.globalCache, this.workspaceCache, 'inMemory', 'inMemory'); } + + async migrate(toWorkspace: IWorkspaceInitializationPayload): Promise { + // not supported + } } export async function logStorage(global: Map, workspace: Map, globalPath: string, workspacePath: string): Promise { diff --git a/src/vs/workbench/browser/web.simpleservices.ts b/src/vs/workbench/browser/web.simpleservices.ts index dcbbd450544..28a8ee424ac 100644 --- a/src/vs/workbench/browser/web.simpleservices.ts +++ b/src/vs/workbench/browser/web.simpleservices.ts @@ -14,7 +14,6 @@ import { IWindowService, INativeOpenDialogOptions, IEnterWorkspaceResult, IURITo import { IWorkspaceIdentifier, ISingleFolderWorkspaceIdentifier, IWorkspaceFolderCreationData, IWorkspacesService } from 'vs/platform/workspaces/common/workspaces'; import { IRecentlyOpened, IRecent, isRecentFile, isRecentFolder } from 'vs/platform/history/common/history'; import { ISerializableCommandAction } from 'vs/platform/actions/common/actions'; -import { IWorkspaceEditingService } from 'vs/workbench/services/workspace/common/workspaceEditing'; import { IWorkspaceContextService, WorkbenchState } from 'vs/platform/workspace/common/workspace'; import { addDisposableListener, EventType, windowOpenNoOpener } from 'vs/base/browser/dom'; import { IEditorService, IResourceEditor } from 'vs/workbench/services/editor/common/editorService'; @@ -611,50 +610,6 @@ registerSingleton(IWindowsService, SimpleWindowsService); //#endregion -//#region Workspace Editing - -export class SimpleWorkspaceEditingService implements IWorkspaceEditingService { - - _serviceBrand: undefined; - - addFolders(folders: IWorkspaceFolderCreationData[], donotNotifyError?: boolean): Promise { - return Promise.resolve(undefined); - } - - removeFolders(folders: URI[], donotNotifyError?: boolean): Promise { - return Promise.resolve(undefined); - } - - updateFolders(index: number, deleteCount?: number, foldersToAdd?: IWorkspaceFolderCreationData[], donotNotifyError?: boolean): Promise { - return Promise.resolve(undefined); - } - - enterWorkspace(path: URI): Promise { - return Promise.resolve(undefined); - } - - createAndEnterWorkspace(folders: IWorkspaceFolderCreationData[], path?: URI): Promise { - return Promise.resolve(undefined); - } - - saveAndEnterWorkspace(path: URI): Promise { - return Promise.resolve(undefined); - } - - copyWorkspaceSettings(toWorkspace: IWorkspaceIdentifier): Promise { - return Promise.resolve(undefined); - } - - pickNewWorkspacePath(): Promise { - // @ts-ignore - return Promise.resolve(undefined); - } -} - -registerSingleton(IWorkspaceEditingService, SimpleWorkspaceEditingService, true); - -//#endregion - //#region Workspaces export class SimpleWorkspacesService implements IWorkspacesService { diff --git a/src/vs/workbench/services/workspace/electron-browser/workspaceEditingService.ts b/src/vs/workbench/services/workspace/browser/workspaceEditingService.ts similarity index 99% rename from src/vs/workbench/services/workspace/electron-browser/workspaceEditingService.ts rename to src/vs/workbench/services/workspace/browser/workspaceEditingService.ts index 21fc21e1780..2063ca4429a 100644 --- a/src/vs/workbench/services/workspace/electron-browser/workspaceEditingService.ts +++ b/src/vs/workbench/services/workspace/browser/workspaceEditingService.ts @@ -12,7 +12,6 @@ import { IJSONEditingService, JSONEditingError, JSONEditingErrorCode } from 'vs/ import { IWorkspaceIdentifier, IWorkspaceFolderCreationData, IWorkspacesService, rewriteWorkspaceFileForNewLocation, WORKSPACE_FILTER } from 'vs/platform/workspaces/common/workspaces'; import { WorkspaceService } from 'vs/workbench/services/configuration/browser/configurationService'; import { IStorageService } from 'vs/platform/storage/common/storage'; -import { StorageService } from 'vs/platform/storage/node/storageService'; import { ConfigurationScope, IConfigurationRegistry, Extensions as ConfigurationExtensions, IConfigurationPropertySchema } from 'vs/platform/configuration/common/configurationRegistry'; import { Registry } from 'vs/platform/registry/common/platform'; import { IExtensionService } from 'vs/workbench/services/extensions/common/extensions'; @@ -421,9 +420,7 @@ export class WorkspaceEditingService implements IWorkspaceEditingService { } private migrateStorage(toWorkspace: IWorkspaceIdentifier): Promise { - const storageImpl = this.storageService as StorageService; - - return storageImpl.migrate(toWorkspace); + return this.storageService.migrate(toWorkspace); } private migrateWorkspaceSettings(toWorkspace: IWorkspaceIdentifier): Promise { diff --git a/src/vs/workbench/workbench.common.main.ts b/src/vs/workbench/workbench.common.main.ts index c241bdcb189..f733c644dda 100644 --- a/src/vs/workbench/workbench.common.main.ts +++ b/src/vs/workbench/workbench.common.main.ts @@ -75,6 +75,7 @@ import 'vs/workbench/services/label/common/labelService'; import 'vs/workbench/services/extensionManagement/common/extensionEnablementService'; import 'vs/workbench/services/notification/common/notificationService'; import 'vs/workbench/services/extensions/common/staticExtensions'; +import 'vs/workbench/services/workspace/browser/workspaceEditingService'; import { registerSingleton } from 'vs/platform/instantiation/common/extensions'; import { ExtensionGalleryService } from 'vs/platform/extensionManagement/common/extensionGalleryService'; diff --git a/src/vs/workbench/workbench.desktop.main.ts b/src/vs/workbench/workbench.desktop.main.ts index 562a0195477..08920c2cd60 100644 --- a/src/vs/workbench/workbench.desktop.main.ts +++ b/src/vs/workbench/workbench.desktop.main.ts @@ -29,7 +29,6 @@ import 'vs/workbench/electron-browser/desktop.main'; //#region --- workbench services import 'vs/workbench/services/integrity/node/integrityService'; import 'vs/workbench/services/textMate/electron-browser/textMateService'; -import 'vs/workbench/services/workspace/electron-browser/workspaceEditingService'; import 'vs/workbench/services/search/node/searchService'; import 'vs/workbench/services/output/node/outputChannelModelService'; import 'vs/workbench/services/textfile/node/textFileService';