mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-15 02:48:30 -05:00
Merge from vscode 2cd495805cf99b31b6926f08ff4348124b2cf73d
This commit is contained in:
committed by
AzureDataStudio
parent
a8a7559229
commit
1388493cc1
@@ -19,7 +19,7 @@ import { RemoteAgentService } from 'vs/workbench/services/remote/browser/remoteA
|
||||
import { RemoteAuthorityResolverService } from 'vs/platform/remote/browser/remoteAuthorityResolverService';
|
||||
import { IRemoteAuthorityResolverService } from 'vs/platform/remote/common/remoteAuthorityResolver';
|
||||
import { IRemoteAgentService } from 'vs/workbench/services/remote/common/remoteAgentService';
|
||||
import { IFileService } from 'vs/platform/files/common/files';
|
||||
import { IFileService, IFileSystemProvider } from 'vs/platform/files/common/files';
|
||||
import { FileService } from 'vs/platform/files/common/fileService';
|
||||
import { Schemas } from 'vs/base/common/network';
|
||||
import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace';
|
||||
@@ -43,14 +43,13 @@ import { registerWindowDriver } from 'vs/platform/driver/browser/driver';
|
||||
import { BufferLogService } from 'vs/platform/log/common/bufferLog';
|
||||
import { FileLogService } from 'vs/platform/log/common/fileLogService';
|
||||
import { toLocalISOString } from 'vs/base/common/date';
|
||||
import { IndexedDBLogProvider } from 'vs/workbench/services/log/browser/indexedDBLogProvider';
|
||||
import { InMemoryLogProvider } from 'vs/workbench/services/log/common/inMemoryLogProvider';
|
||||
import { isWorkspaceToOpen, isFolderToOpen } from 'vs/platform/windows/common/windows';
|
||||
import { getWorkspaceIdentifier } from 'vs/workbench/services/workspaces/browser/workspaces';
|
||||
import { coalesce } from 'vs/base/common/arrays';
|
||||
import { InMemoryFileSystemProvider } from 'vs/platform/files/common/inMemoryFilesystemProvider';
|
||||
import { WebResourceIdentityService, IResourceIdentityService } from 'vs/platform/resource/common/resourceIdentityService';
|
||||
import { ICommandService } from 'vs/platform/commands/common/commands';
|
||||
import { IndexedDB, INDEXEDDB_LOGS_OBJECT_STORE, INDEXEDDB_USERDATA_OBJECT_STORE } from 'vs/platform/files/browser/indexedDBFileSystemProvider';
|
||||
|
||||
class BrowserMain extends Disposable {
|
||||
|
||||
@@ -178,7 +177,7 @@ class BrowserMain extends Disposable {
|
||||
// Files
|
||||
const fileService = this._register(new FileService(logService));
|
||||
serviceCollection.set(IFileService, fileService);
|
||||
this.registerFileSystemProviders(environmentService, fileService, remoteAgentService, logService, logsPath);
|
||||
await this.registerFileSystemProviders(environmentService, fileService, remoteAgentService, logService, logsPath);
|
||||
|
||||
// Long running services (workspace, config, storage)
|
||||
const services = await Promise.all([
|
||||
@@ -205,24 +204,22 @@ class BrowserMain extends Disposable {
|
||||
return { serviceCollection, logService, storageService: services[1] };
|
||||
}
|
||||
|
||||
private registerFileSystemProviders(environmentService: IWorkbenchEnvironmentService, fileService: IFileService, remoteAgentService: IRemoteAgentService, logService: BufferLogService, logsPath: URI): void {
|
||||
private async registerFileSystemProviders(environmentService: IWorkbenchEnvironmentService, fileService: IFileService, remoteAgentService: IRemoteAgentService, logService: BufferLogService, logsPath: URI): Promise<void> {
|
||||
|
||||
const indexedDB = new IndexedDB();
|
||||
|
||||
// Logger
|
||||
(async () => {
|
||||
if (browser.isEdge) {
|
||||
fileService.registerProvider(logsPath.scheme, new InMemoryLogProvider(logsPath.scheme));
|
||||
let indexedDBLogProvider: IFileSystemProvider | null = null;
|
||||
try {
|
||||
indexedDBLogProvider = await indexedDB.createFileSystemProvider(logsPath.scheme, INDEXEDDB_LOGS_OBJECT_STORE);
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
}
|
||||
if (indexedDBLogProvider) {
|
||||
fileService.registerProvider(logsPath.scheme, indexedDBLogProvider);
|
||||
} else {
|
||||
try {
|
||||
const indexedDBLogProvider = new IndexedDBLogProvider(logsPath.scheme);
|
||||
await indexedDBLogProvider.database;
|
||||
|
||||
fileService.registerProvider(logsPath.scheme, indexedDBLogProvider);
|
||||
} catch (error) {
|
||||
logService.info('Error while creating indexedDB log provider. Falling back to in-memory log provider.');
|
||||
logService.error(error);
|
||||
|
||||
fileService.registerProvider(logsPath.scheme, new InMemoryLogProvider(logsPath.scheme));
|
||||
}
|
||||
fileService.registerProvider(logsPath.scheme, new InMemoryFileSystemProvider());
|
||||
}
|
||||
|
||||
logService.logger = new MultiplexLogService(coalesce([
|
||||
@@ -250,8 +247,19 @@ class BrowserMain extends Disposable {
|
||||
|
||||
// User data
|
||||
if (!this.configuration.userDataProvider) {
|
||||
this.configuration.userDataProvider = this._register(new InMemoryFileSystemProvider());
|
||||
let indexedDBUserDataProvider: IFileSystemProvider | null = null;
|
||||
try {
|
||||
indexedDBUserDataProvider = await indexedDB.createFileSystemProvider(Schemas.userData, INDEXEDDB_USERDATA_OBJECT_STORE);
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
}
|
||||
if (indexedDBUserDataProvider) {
|
||||
this.configuration.userDataProvider = indexedDBUserDataProvider;
|
||||
} else {
|
||||
this.configuration.userDataProvider = new InMemoryFileSystemProvider();
|
||||
}
|
||||
}
|
||||
|
||||
fileService.registerProvider(Schemas.userData, this.configuration.userDataProvider);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user