diff --git a/src/vs/vscode.proposed.d.ts b/src/vs/vscode.proposed.d.ts
index 8ca0b13ea65..7dc2a800f64 100644
--- a/src/vs/vscode.proposed.d.ts
+++ b/src/vs/vscode.proposed.d.ts
@@ -1089,59 +1089,4 @@ declare module 'vscode' {
}
//#endregion
-
- // #region Sandy - User data synchronization
-
- export namespace window {
-
- /**
- * Register an [UserDataSyncProvider](#UserDataSyncProvider) to read and write user data.
- * @param name Name of the user data sync provider
- * @param userDataSyncProvider [UserDataSyncProvider](#UserDataSyncProvider) to read and write user data
- */
- export function registerUserDataSyncProvider(name: string, userDataSyncProvider: UserDataSyncProvider): Disposable;
-
- }
-
- export class UserDataError extends Error {
-
- /**
- * Create an error to signal that writing user data with given ref is rejected, becase of new ref.
- */
- static Rejected(): FileSystemError;
-
- /**
- * Creates a new userData error.
- */
- constructor();
- }
-
- /**
- * User data sync provider to read and write user data.
- */
- export interface UserDataSyncProvider {
-
- /**
- * Reads the content and its ref for the given key.
- * Return null if key does not exists.
- *
- * @param key key of the content to read
- * @returns the content and its ref for the given key. Return null if key does not exists.
- */
- read(key: string): Promise<{ content: string, ref: string } | null>;
-
- /**
- * Writes the new content based on the given ref for the given key.
- *
- * @param key key of the content to write
- * @param content new content to write
- * @param ref ref of the content on which the content to write is based on
- * @throws [Rejected](#UserDataError.Rejected) if the ref is not the latest.
- * @returns the latest ref of the content.
- */
- write(key: string, content: string, ref: string | null): Promise;
-
- }
-
- //#endregion
}
diff --git a/src/vs/workbench/api/browser/extensionHost.contribution.ts b/src/vs/workbench/api/browser/extensionHost.contribution.ts
index 3201bfc181d..2905c524113 100644
--- a/src/vs/workbench/api/browser/extensionHost.contribution.ts
+++ b/src/vs/workbench/api/browser/extensionHost.contribution.ts
@@ -18,7 +18,6 @@ import './mainThreadCodeInsets';
import './mainThreadClipboard';
import './mainThreadCommands';
import './mainThreadConfiguration';
-import './mainThreadUserData';
import './mainThreadConsole';
import './mainThreadDebugService';
import './mainThreadDecorations';
diff --git a/src/vs/workbench/api/browser/mainThreadUserData.ts b/src/vs/workbench/api/browser/mainThreadUserData.ts
deleted file mode 100644
index 509f8566752..00000000000
--- a/src/vs/workbench/api/browser/mainThreadUserData.ts
+++ /dev/null
@@ -1,48 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-import { Disposable } from 'vs/base/common/lifecycle';
-import { MainContext, ExtHostContext, IExtHostContext, MainThreadUserDataShape, ExtHostUserDataShape } from '../common/extHost.protocol';
-import { extHostNamedCustomer } from 'vs/workbench/api/common/extHostCustomers';
-import { IUserData } from 'vs/platform/userDataSync/common/userDataSync';
-import { Registry } from 'vs/platform/registry/common/platform';
-import { IUserDataSyncStoresRegistry, Extensions } from 'vs/workbench/services/userDataSync/common/userDataSyncStores';
-
-@extHostNamedCustomer(MainContext.MainThreadUserData)
-export class MainThreadUserData extends Disposable implements MainThreadUserDataShape {
-
- private readonly proxy: ExtHostUserDataShape;
-
- constructor(
- extHostContext: IExtHostContext,
- ) {
- super();
- this.proxy = extHostContext.getProxy(ExtHostContext.ExtHostUserData);
- }
-
- $registerUserDataProvider(id: string, name: string): void {
- const proxy = this.proxy;
- Registry.as(Extensions.UserDataSyncStoresRegistry).registerUserDataSyncStore({
- id,
- name,
- read(key: string): Promise {
- return proxy.$read(key);
- },
- write(key: string, content: string, ref: string): Promise {
- return proxy.$write(key, content, ref);
- }
- });
- }
-
- $deregisterUserDataProvider(id: string): void {
- Registry.as(Extensions.UserDataSyncStoresRegistry).deregisterUserDataSyncStore(id);
- }
-
- dispose(): void {
- const registry = Registry.as(Extensions.UserDataSyncStoresRegistry);
- registry.all.forEach(store => registry.deregisterUserDataSyncStore(store.id));
- }
-
-}
diff --git a/src/vs/workbench/api/common/extHost.api.impl.ts b/src/vs/workbench/api/common/extHost.api.impl.ts
index 8eeb8078ea4..417b85c2883 100644
--- a/src/vs/workbench/api/common/extHost.api.impl.ts
+++ b/src/vs/workbench/api/common/extHost.api.impl.ts
@@ -68,7 +68,6 @@ import { ILogService } from 'vs/platform/log/common/log';
import { IURITransformerService } from 'vs/workbench/api/common/extHostUriTransformerService';
import { IExtHostRpcService } from 'vs/workbench/api/common/extHostRpcService';
import { IExtHostInitDataService } from 'vs/workbench/api/common/extHostInitDataService';
-import { ExtHostUserData } from 'vs/workbench/api/common/extHostUserData';
export interface IExtensionApiFactory {
(extension: IExtensionDescription, registry: ExtensionDescriptionRegistry, configProvider: ExtHostConfigProvider): typeof vscode;
@@ -125,7 +124,6 @@ export function createApiFactoryAndRegisterActors(accessor: ServicesAccessor): I
const extHostWindow = rpcProtocol.set(ExtHostContext.ExtHostWindow, new ExtHostWindow(rpcProtocol));
const extHostProgress = rpcProtocol.set(ExtHostContext.ExtHostProgress, new ExtHostProgress(rpcProtocol.getProxy(MainContext.MainThreadProgress)));
const extHostLabelService = rpcProtocol.set(ExtHostContext.ExtHosLabelService, new ExtHostLabelService(rpcProtocol));
- const extHostUserData = rpcProtocol.set(ExtHostContext.ExtHostUserData, new ExtHostUserData(rpcProtocol.getProxy(MainContext.MainThreadUserData), extHostLogService));
// Check that no named customers are missing
const expected: ProxyIdentifier[] = values(ExtHostContext);
@@ -545,10 +543,6 @@ export function createApiFactoryAndRegisterActors(accessor: ServicesAccessor): I
},
createInputBox(): vscode.InputBox {
return extHostQuickOpen.createInputBox(extension.identifier);
- },
- registerUserDataSyncProvider: (name: string, userDataProvider: vscode.UserDataSyncProvider): vscode.Disposable => {
- checkProposedApiEnabled(extension);
- return extHostUserData.registerUserDataProvider(extension.identifier.value, name, userDataProvider);
}
};
@@ -907,7 +901,6 @@ export function createApiFactoryAndRegisterActors(accessor: ServicesAccessor): I
CallHierarchyIncomingCall: extHostTypes.CallHierarchyIncomingCall,
CallHierarchyItem: extHostTypes.CallHierarchyItem,
Decoration: extHostTypes.Decoration,
- UserDataError: extHostTypes.UserDataError,
WebviewEditorState: extHostTypes.WebviewEditorState,
UIKind: UIKind
};
diff --git a/src/vs/workbench/api/common/extHost.protocol.ts b/src/vs/workbench/api/common/extHost.protocol.ts
index 55bcebff44e..c62623e3929 100644
--- a/src/vs/workbench/api/common/extHost.protocol.ts
+++ b/src/vs/workbench/api/common/extHost.protocol.ts
@@ -46,7 +46,6 @@ import { ExtensionActivationError } from 'vs/workbench/services/extensions/commo
import { createExtHostContextProxyIdentifier as createExtId, createMainContextProxyIdentifier as createMainId, IRPCProtocol } from 'vs/workbench/services/extensions/common/proxyIdentifier';
import * as search from 'vs/workbench/services/search/common/search';
import { SaveReason } from 'vs/workbench/services/textfile/common/textfiles';
-import { IUserData } from 'vs/platform/userDataSync/common/userDataSync';
export interface IEnvironment {
isExtensionDevelopmentDebug: boolean;
@@ -146,11 +145,6 @@ export interface MainThreadConfigurationShape extends IDisposable {
$removeConfigurationOption(target: ConfigurationTarget | null, key: string, resource: UriComponents | undefined): Promise;
}
-export interface MainThreadUserDataShape extends IDisposable {
- $registerUserDataProvider(id: string, name: string): void;
- $deregisterUserDataProvider(id: string): void;
-}
-
export interface MainThreadDiagnosticsShape extends IDisposable {
$changeMany(owner: string, entries: [UriComponents, IMarkerData[] | undefined][]): void;
$clear(owner: string): void;
@@ -758,11 +752,6 @@ export interface ExtHostConfigurationShape {
$acceptConfigurationChanged(data: IConfigurationInitData, eventData: IWorkspaceConfigurationChangeEventData): void;
}
-export interface ExtHostUserDataShape {
- $read(key: string): Promise;
- $write(key: string, content: string, ref: string): Promise;
-}
-
export interface ExtHostDiagnosticsShape {
$acceptMarkersChange(data: [UriComponents, IMarkerData[]][]): void;
}
@@ -1336,7 +1325,6 @@ export const MainContext = {
MainThreadCommands: createMainId('MainThreadCommands'),
MainThreadComments: createMainId('MainThreadComments'),
MainThreadConfiguration: createMainId('MainThreadConfiguration'),
- MainThreadUserData: createMainId('MainThreadUserData'),
MainThreadConsole: createMainId('MainThreadConsole'),
MainThreadDebugService: createMainId('MainThreadDebugService'),
MainThreadDecorations: createMainId('MainThreadDecorations'),
@@ -1376,7 +1364,6 @@ export const MainContext = {
export const ExtHostContext = {
ExtHostCommands: createExtId('ExtHostCommands'),
ExtHostConfiguration: createExtId('ExtHostConfiguration'),
- ExtHostUserData: createExtId('ExtHostUserData'),
ExtHostDiagnostics: createExtId('ExtHostDiagnostics'),
ExtHostDebugService: createExtId('ExtHostDebugService'),
ExtHostDecorations: createExtId('ExtHostDecorations'),
diff --git a/src/vs/workbench/api/common/extHostTypes.ts b/src/vs/workbench/api/common/extHostTypes.ts
index 6462f5b3b9e..f75f09034e7 100644
--- a/src/vs/workbench/api/common/extHostTypes.ts
+++ b/src/vs/workbench/api/common/extHostTypes.ts
@@ -14,8 +14,6 @@ import { generateUuid } from 'vs/base/common/uuid';
import * as vscode from 'vscode';
import { FileSystemProviderErrorCode, markAsFileSystemProviderError } from 'vs/platform/files/common/files';
import { RemoteAuthorityResolverErrorCode } from 'vs/platform/remote/common/remoteAuthorityResolver';
-import { UserDataSyncStoreErrorCode } from 'vs/platform/userDataSync/common/userDataSync';
-import { markAsUserDataSyncStoreError } from 'vs/workbench/services/userDataSync/common/userDataSyncStores';
function es5ClassCompat(target: Function): any {
///@ts-ignore
@@ -2385,28 +2383,6 @@ export class Decoration {
bubble?: boolean;
}
-@es5ClassCompat
-export class UserDataError extends Error {
-
- static Rejected(message?: string): UserDataError {
- return new UserDataError(message, UserDataSyncStoreErrorCode.Rejected);
- }
-
- constructor(message?: string, code: UserDataSyncStoreErrorCode = UserDataSyncStoreErrorCode.Unknown) {
- super(message);
-
- // mark the error as user data provider error so that
- // we can extract the error code on the receiving side
- markAsUserDataSyncStoreError(this, code);
-
- // workaround when extending builtin objects and when compiling to ES5, see:
- // https://github.com/Microsoft/TypeScript-wiki/blob/master/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work
- if (typeof (Object).setPrototypeOf === 'function') {
- (Object).setPrototypeOf(this, UserDataError.prototype);
- }
- }
-}
-
export enum WebviewEditorState {
Readonly = 1,
Unchanged = 2,
diff --git a/src/vs/workbench/api/common/extHostUserData.ts b/src/vs/workbench/api/common/extHostUserData.ts
deleted file mode 100644
index de5e565f7cb..00000000000
--- a/src/vs/workbench/api/common/extHostUserData.ts
+++ /dev/null
@@ -1,48 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-import { ExtHostUserDataShape, MainThreadUserDataShape } from './extHost.protocol';
-import * as vscode from 'vscode';
-import { toDisposable, Disposable } from 'vs/base/common/lifecycle';
-import { ILogService } from 'vs/platform/log/common/log';
-import { IUserData } from 'vs/platform/userDataSync/common/userDataSync';
-
-export class ExtHostUserData implements ExtHostUserDataShape {
-
- private name: string | null = null;
- private userDataProvider: vscode.UserDataSyncProvider | null = null;
-
- constructor(
- private readonly proxy: MainThreadUserDataShape,
- private readonly logService: ILogService,
- ) {
- }
-
- registerUserDataProvider(id: string, name: string, userDataProvider: vscode.UserDataSyncProvider): vscode.Disposable {
- if (this.userDataProvider) {
- this.logService.warn(`A user data provider '${this.name}' already exists hence ignoring the remote user data provider '${name}'.`);
- return Disposable.None;
- }
- this.userDataProvider = userDataProvider;
- this.name = name;
- this.proxy.$registerUserDataProvider(id, name);
- return toDisposable(() => this.proxy.$deregisterUserDataProvider(id));
- }
-
- $read(key: string): Promise {
- if (!this.userDataProvider) {
- throw new Error('No remote user data provider exists.');
- }
- return this.userDataProvider.read(key);
- }
-
- $write(key: string, content: string, ref: string): Promise {
- if (!this.userDataProvider) {
- throw new Error('No remote user data provider exists.');
- }
- return this.userDataProvider.write(key, content, ref);
- }
-
-}
diff --git a/src/vs/workbench/services/userDataSync/common/userDataSyncStores.ts b/src/vs/workbench/services/userDataSync/common/userDataSyncStores.ts
deleted file mode 100644
index cd83212d09b..00000000000
--- a/src/vs/workbench/services/userDataSync/common/userDataSyncStores.ts
+++ /dev/null
@@ -1,128 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-import { Event, Emitter } from 'vs/base/common/event';
-import { IUserData, UserDataSyncStoreErrorCode, UserDataSyncStoreError } from 'vs/platform/userDataSync/common/userDataSync';
-import { Disposable } from 'vs/base/common/lifecycle';
-import { values } from 'vs/base/common/map';
-import { Registry } from 'vs/platform/registry/common/platform';
-
-export function markAsUserDataSyncStoreError(error: Error, code: UserDataSyncStoreErrorCode): Error {
- error.name = code ? `${code} (UserDataSyncStoreError)` : `UserDataSyncStoreError`;
-
- return error;
-}
-
-export function toUserDataSyncStoreErrorCode(error: Error | undefined | null): UserDataSyncStoreErrorCode {
-
- // Guard against abuse
- if (!error) {
- return UserDataSyncStoreErrorCode.Unknown;
- }
-
- // FileSystemProviderError comes with the code
- if (error instanceof UserDataSyncStoreError) {
- return error.code;
- }
-
- // Any other error, check for name match by assuming that the error
- // went through the markAsUserDataSyncStoreError() method
- const match = /^(.+) \(UserDataSyncStoreError\)$/.exec(error.name);
- if (!match) {
- return UserDataSyncStoreErrorCode.Unknown;
- }
-
- switch (match[1]) {
- case UserDataSyncStoreErrorCode.Rejected: return UserDataSyncStoreErrorCode.Rejected;
- }
-
- return UserDataSyncStoreErrorCode.Unknown;
-}
-
-export interface IUserDataSyncStore {
- readonly id: string;
- readonly name: string;
- read(key: string): Promise;
- write(key: string, content: string, ref: string | null): Promise;
-}
-
-export namespace Extensions {
- export const UserDataSyncStoresRegistry = 'workbench.registry.userData.syncStores';
-}
-
-export interface IUserDataSyncStoresRegistry {
- /**
- * An event that is triggerred when a user data sync store is registered.
- */
- readonly onDidRegister: Event;
-
- /**
- * An event that is triggerred when a user data sync store is deregistered.
- */
- readonly onDidDeregister: Event;
-
- /**
- * All registered user data sync stores
- */
- readonly all: IUserDataSyncStore[];
-
- /**
- * Registers a user data sync store
- *
- * @param userDataSyncStore to register
- */
- registerUserDataSyncStore(userDataSyncStore: IUserDataSyncStore): void;
-
- /**
- * Deregisters the user data sync store with given id
- */
- deregisterUserDataSyncStore(id: string): void;
-
- /**
- * Returns the user data sync store with given id.
- *
- * @returns the user data sync store with given id.
- */
- get(id: string): IUserDataSyncStore | undefined;
-}
-
-class UserDataSyncStoresRegistryImpl extends Disposable implements IUserDataSyncStoresRegistry {
-
- private readonly _onDidRegister = this._register(new Emitter());
- readonly onDidRegister: Event = this._onDidRegister.event;
-
- private readonly _onDidDeregister = this._register(new Emitter());
- readonly onDidDeregister: Event = this._onDidDeregister.event;
-
- private userDataSyncStores: Map = new Map();
-
- get all(): IUserDataSyncStore[] {
- return values(this.userDataSyncStores);
- }
-
- registerUserDataSyncStore(userDataSyncStore: IUserDataSyncStore): void {
- const existing = this.userDataSyncStores.get(userDataSyncStore.id);
- if (existing) {
- return;
- }
-
- this.userDataSyncStores.set(userDataSyncStore.id, userDataSyncStore);
- this._onDidRegister.fire(userDataSyncStore);
- }
-
- deregisterUserDataSyncStore(id: string): void {
- const existing = this.userDataSyncStores.get(id);
- if (existing) {
- this.userDataSyncStores.delete(id);
- this._onDidDeregister.fire(id);
- }
- }
-
- get(id: string): IUserDataSyncStore | undefined {
- return this.userDataSyncStores.get(id);
- }
-}
-
-Registry.add(Extensions.UserDataSyncStoresRegistry, new UserDataSyncStoresRegistryImpl());