Skip to content

Commit de1c06c

Browse files
author
Benjamin Pasero
committed
sandbox - move url service
1 parent bd62ffe commit de1c06c

11 files changed

Lines changed: 32 additions & 42 deletions

File tree

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ import { GlobalStorageDatabaseChannel } from 'vs/platform/storage/node/storageIp
6464
import { BackupMainService } from 'vs/platform/backup/electron-main/backupMainService';
6565
import { IBackupMainService } from 'vs/platform/backup/electron-main/backup';
6666
import { WorkspacesHistoryMainService, IWorkspacesHistoryMainService } from 'vs/platform/workspaces/electron-main/workspacesHistoryMainService';
67-
import { URLService } from 'vs/platform/url/node/urlService';
67+
import { NativeURLService } from 'vs/platform/url/common/urlService';
6868
import { WorkspacesMainService, IWorkspacesMainService } from 'vs/platform/workspaces/electron-main/workspacesMainService';
6969
import { statSync } from 'fs';
7070
import { DiagnosticsService } from 'vs/platform/diagnostics/node/diagnosticsIpc';
@@ -484,7 +484,7 @@ export class CodeApplication extends Disposable {
484484
services.set(IBackupMainService, backupMainService);
485485

486486
services.set(IWorkspacesHistoryMainService, new SyncDescriptor(WorkspacesHistoryMainService));
487-
services.set(IURLService, new SyncDescriptor(URLService));
487+
services.set(IURLService, new SyncDescriptor(NativeURLService));
488488
services.set(IWorkspacesMainService, new SyncDescriptor(WorkspacesMainService));
489489

490490
// Telemetry

src/vs/platform/url/common/urlService.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import { URI, UriComponents } from 'vs/base/common/uri';
88
import { values } from 'vs/base/common/map';
99
import { first } from 'vs/base/common/async';
1010
import { toDisposable, IDisposable, Disposable } from 'vs/base/common/lifecycle';
11+
import product from 'vs/platform/product/common/product';
1112

1213
export abstract class AbstractURLService extends Disposable implements IURLService {
1314

@@ -27,3 +28,16 @@ export abstract class AbstractURLService extends Disposable implements IURLServi
2728
return toDisposable(() => this.handlers.delete(handler));
2829
}
2930
}
31+
32+
export class NativeURLService extends AbstractURLService {
33+
34+
create(options?: Partial<UriComponents>): URI {
35+
let { authority, path, query, fragment } = options ? options : { authority: undefined, path: undefined, query: undefined, fragment: undefined };
36+
37+
if (authority && path && path.indexOf('/') !== 0) {
38+
path = `/${path}`; // URI validation requires a path if there is an authority
39+
}
40+
41+
return URI.from({ scheme: product.urlProtocol, authority, path, query, fragment });
42+
}
43+
}

src/vs/platform/url/node/urlService.ts

Lines changed: 0 additions & 21 deletions
This file was deleted.

src/vs/workbench/contrib/experiments/test/electron-browser/experimentService.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import { IWorkbenchExtensionEnablementService } from 'vs/workbench/services/exte
1515
import { ExtensionManagementService } from 'vs/platform/extensionManagement/node/extensionManagementService';
1616
import { Emitter } from 'vs/base/common/event';
1717
import { TestExtensionEnablementService } from 'vs/workbench/services/extensionManagement/test/browser/extensionEnablementService.test';
18-
import { URLService } from 'vs/platform/url/node/urlService';
18+
import { NativeURLService } from 'vs/platform/url/common/urlService';
1919
import { IURLService } from 'vs/platform/url/common/url';
2020
import { ITelemetryService, lastSessionDateStorageKey } from 'vs/platform/telemetry/common/telemetry';
2121
import { NullTelemetryService } from 'vs/platform/telemetry/common/telemetryUtils';
@@ -89,7 +89,7 @@ suite('Experiment Service', () => {
8989
instantiationService.stub(IExtensionManagementService, 'onDidUninstallExtension', didUninstallEvent.event);
9090
instantiationService.stub(IWorkbenchExtensionEnablementService, new TestExtensionEnablementService(instantiationService));
9191
instantiationService.stub(ITelemetryService, NullTelemetryService);
92-
instantiationService.stub(IURLService, URLService);
92+
instantiationService.stub(IURLService, NativeURLService);
9393
instantiationService.stubPromise(IExtensionManagementService, 'getInstalled', [local]);
9494
testConfigurationService = new TestConfigurationService();
9595
instantiationService.stub(IConfigurationService, testConfigurationService);

src/vs/workbench/contrib/extensions/test/electron-browser/extensionRecommendationsService.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ import { ITextModel } from 'vs/editor/common/model';
4141
import { IModelService } from 'vs/editor/common/services/modelService';
4242
import { ILifecycleService } from 'vs/platform/lifecycle/common/lifecycle';
4343
import { INotificationService, Severity, IPromptChoice, IPromptOptions } from 'vs/platform/notification/common/notification';
44-
import { URLService } from 'vs/platform/url/node/urlService';
44+
import { NativeURLService } from 'vs/platform/url/common/urlService';
4545
import { IExperimentService } from 'vs/workbench/contrib/experiments/common/experimentService';
4646
import { TestExperimentService } from 'vs/workbench/contrib/experiments/test/electron-browser/experimentService.test';
4747
import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage';
@@ -206,7 +206,7 @@ suite('ExtensionRecommendationsService Test', () => {
206206
instantiationService.stub(IExtensionManagementService, 'onDidUninstallExtension', didUninstallEvent.event);
207207
instantiationService.stub(IWorkbenchExtensionEnablementService, new TestExtensionEnablementService(instantiationService));
208208
instantiationService.stub(ITelemetryService, NullTelemetryService);
209-
instantiationService.stub(IURLService, URLService);
209+
instantiationService.stub(IURLService, NativeURLService);
210210
instantiationService.stub(IWorkspaceTagsService, new NoOpWorkspaceTagsService());
211211
instantiationService.stub(IStorageService, new TestStorageService());
212212
instantiationService.stub(ILogService, new NullLogService());

src/vs/workbench/contrib/extensions/test/electron-browser/extensionsActions.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ import { TestContextService } from 'vs/workbench/test/common/workbenchTestServic
3030
import { TestSharedProcessService } from 'vs/workbench/test/electron-browser/workbenchTestServices';
3131
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
3232
import { ILogService, NullLogService } from 'vs/platform/log/common/log';
33-
import { URLService } from 'vs/platform/url/node/urlService';
33+
import { NativeURLService } from 'vs/platform/url/common/urlService';
3434
import { URI } from 'vs/base/common/uri';
3535
import { TestConfigurationService } from 'vs/platform/configuration/test/common/testConfigurationService';
3636
import { IRemoteAgentService } from 'vs/workbench/services/remote/common/remoteAgentService';
@@ -105,7 +105,7 @@ async function setupTest() {
105105
instantiationService.stub(IExperimentService, instantiationService.createInstance(TestExperimentService));
106106
instantiationService.stub(IExtensionTipsService, instantiationService.createInstance(ExtensionTipsService));
107107
instantiationService.stub(IExtensionRecommendationsService, {});
108-
instantiationService.stub(IURLService, URLService);
108+
instantiationService.stub(IURLService, NativeURLService);
109109

110110
instantiationService.stubPromise(IExtensionManagementService, 'getInstalled', []);
111111
instantiationService.stubPromise(IExtensionManagementService, 'getExtensionsReport', []);

src/vs/workbench/contrib/extensions/test/electron-browser/extensionsViews.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ import { TestMenuService } from 'vs/workbench/test/browser/workbenchTestServices
3030
import { TestSharedProcessService } from 'vs/workbench/test/electron-browser/workbenchTestServices';
3131
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
3232
import { ILogService, NullLogService } from 'vs/platform/log/common/log';
33-
import { URLService } from 'vs/platform/url/node/urlService';
33+
import { NativeURLService } from 'vs/platform/url/common/urlService';
3434
import { URI } from 'vs/base/common/uri';
3535
import { TestConfigurationService } from 'vs/platform/configuration/test/common/testConfigurationService';
3636
import { SinonStub } from 'sinon';
@@ -142,7 +142,7 @@ suite('ExtensionsListView Tests', () => {
142142
return reasons;
143143
}
144144
});
145-
instantiationService.stub(IURLService, URLService);
145+
instantiationService.stub(IURLService, NativeURLService);
146146
});
147147

148148
setup(async () => {

src/vs/workbench/contrib/extensions/test/electron-browser/extensionsWorkbenchService.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ import { ILogService, NullLogService } from 'vs/platform/log/common/log';
3232
import { IProgressService } from 'vs/platform/progress/common/progress';
3333
import { ProgressService } from 'vs/workbench/services/progress/browser/progressService';
3434
import { INotificationService } from 'vs/platform/notification/common/notification';
35-
import { URLService } from 'vs/platform/url/node/urlService';
35+
import { NativeURLService } from 'vs/platform/url/common/urlService';
3636
import { URI } from 'vs/base/common/uri';
3737
import { CancellationToken } from 'vs/base/common/cancellation';
3838
import { ExtensionType } from 'vs/platform/extensions/common/extensions';
@@ -72,7 +72,7 @@ suite('ExtensionsWorkbenchServiceTest', () => {
7272
instantiationService.stub(IProductService, {});
7373

7474
instantiationService.stub(IExtensionGalleryService, ExtensionGalleryService);
75-
instantiationService.stub(IURLService, URLService);
75+
instantiationService.stub(IURLService, NativeURLService);
7676
instantiationService.stub(ISharedProcessService, TestSharedProcessService);
7777

7878
instantiationService.stub(IWorkspaceContextService, new TestContextService());

src/vs/workbench/services/url/electron-browser/urlService.ts renamed to src/vs/workbench/services/url/electron-sandbox/urlService.ts

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,28 +7,25 @@ import { IURLService, IURLHandler, IOpenURLOptions } from 'vs/platform/url/commo
77
import { URI, UriComponents } from 'vs/base/common/uri';
88
import { IMainProcessService } from 'vs/platform/ipc/common/mainProcessService';
99
import { URLHandlerChannel } from 'vs/platform/url/common/urlIpc';
10-
import { URLService } from 'vs/platform/url/node/urlService';
1110
import { IOpenerService, IOpener, matchesScheme } from 'vs/platform/opener/common/opener';
1211
import product from 'vs/platform/product/common/product';
1312
import { registerSingleton } from 'vs/platform/instantiation/common/extensions';
1413
import { createChannelSender } from 'vs/base/parts/ipc/common/ipc';
1514
import { IElectronService } from 'vs/platform/electron/common/electron';
16-
import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService';
17-
import { INativeWorkbenchEnvironmentService } from 'vs/workbench/services/environment/electron-browser/environmentService';
15+
import { NativeURLService } from 'vs/platform/url/common/urlService';
1816

1917
export interface IRelayOpenURLOptions extends IOpenURLOptions {
2018
openToSide?: boolean;
2119
openExternal?: boolean;
2220
}
2321

24-
export class RelayURLService extends URLService implements IURLHandler, IOpener {
22+
export class RelayURLService extends NativeURLService implements IURLHandler, IOpener {
2523

2624
private urlService: IURLService;
2725

2826
constructor(
29-
@IMainProcessService mainProcessService: IMainProcessService,
27+
@IMainProcessService private readonly mainProcessService: IMainProcessService,
3028
@IOpenerService openerService: IOpenerService,
31-
@IWorkbenchEnvironmentService private readonly environmentService: INativeWorkbenchEnvironmentService,
3229
@IElectronService private electronService: IElectronService
3330
) {
3431
super();
@@ -44,9 +41,9 @@ export class RelayURLService extends URLService implements IURLHandler, IOpener
4441

4542
let query = uri.query;
4643
if (!query) {
47-
query = `windowId=${encodeURIComponent(this.environmentService.configuration.windowId)}`;
44+
query = `windowId=${encodeURIComponent(this.mainProcessService.windowId)}`;
4845
} else {
49-
query += `&windowId=${encodeURIComponent(this.environmentService.configuration.windowId)}`;
46+
query += `&windowId=${encodeURIComponent(this.mainProcessService.windowId)}`;
5047
}
5148

5249
return uri.with({ query });

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,6 @@ import 'vs/workbench/services/extensionManagement/node/extensionManagementServic
4949
import 'vs/workbench/services/accessibility/electron-browser/accessibilityService';
5050
import 'vs/workbench/services/remote/node/tunnelService';
5151
import 'vs/workbench/services/backup/node/backupFileService';
52-
import 'vs/workbench/services/url/electron-browser/urlService';
5352
import 'vs/workbench/services/workspaces/electron-browser/workspaceEditingService';
5453
import 'vs/workbench/services/userDataSync/electron-browser/userDataSyncMachinesService';
5554
import 'vs/workbench/services/userDataSync/electron-browser/userDataSyncService';

0 commit comments

Comments
 (0)