diff --git a/extensions/vscode-test-resolver/src/extension.ts b/extensions/vscode-test-resolver/src/extension.ts index 99d3619e316..c338957146b 100644 --- a/extensions/vscode-test-resolver/src/extension.ts +++ b/extensions/vscode-test-resolver/src/extension.ts @@ -203,7 +203,8 @@ export function activate(context: vscode.ExtensionContext) { proxyServer.listen(0, () => { const port = (proxyServer.address()).port; outputChannel.appendLine(`Going through proxy at port ${port}`); - res(new vscode.ResolvedAuthority('127.0.0.1', port)); + const r: vscode.ResolverResult = new vscode.ResolvedAuthority('127.0.0.1', port); + res(r); }); context.subscriptions.push({ dispose: () => { diff --git a/src/vs/platform/remote/common/remoteAuthorityResolver.ts b/src/vs/platform/remote/common/remoteAuthorityResolver.ts index 163eb7223c0..52902edfcbc 100644 --- a/src/vs/platform/remote/common/remoteAuthorityResolver.ts +++ b/src/vs/platform/remote/common/remoteAuthorityResolver.ts @@ -18,12 +18,12 @@ export interface ResolvedAuthority { export enum RemoteTrustOption { Unknown = 0, DisableTrust = 1, - MachineTrusted = 2, - MachineUntrusted = 3 + MachineTrusted = 2 } export interface ResolvedOptions { readonly extensionHostEnv?: { [key: string]: string | null }; + readonly trust?: RemoteTrustOption; } export interface TunnelDescription { diff --git a/src/vs/vscode.proposed.d.ts b/src/vs/vscode.proposed.d.ts index 8bf049a5403..a8a8d826f6f 100644 --- a/src/vs/vscode.proposed.d.ts +++ b/src/vs/vscode.proposed.d.ts @@ -83,8 +83,7 @@ declare module 'vscode' { export enum RemoteTrustOption { Unknown = 0, DisableTrust = 1, - MachineTrusted = 2, - MachineUntrusted = 3 + MachineTrusted = 2 } export interface ResolvedOptions { diff --git a/src/vs/workbench/api/common/extHostExtensionService.ts b/src/vs/workbench/api/common/extHostExtensionService.ts index 56f193da7fa..757dacc932c 100644 --- a/src/vs/workbench/api/common/extHostExtensionService.ts +++ b/src/vs/workbench/api/common/extHostExtensionService.ts @@ -668,7 +668,8 @@ export abstract class AbstractExtHostExtensionService extends Disposable impleme connectionToken: result.connectionToken }; const options: ResolvedOptions = { - extensionHostEnv: result.extensionHostEnv + extensionHostEnv: result.extensionHostEnv, + trust: result.trust }; return { diff --git a/src/vs/workbench/services/extensions/electron-browser/extensionService.ts b/src/vs/workbench/services/extensions/electron-browser/extensionService.ts index 20f334886e0..a20ccff1632 100644 --- a/src/vs/workbench/services/extensions/electron-browser/extensionService.ts +++ b/src/vs/workbench/services/extensions/electron-browser/extensionService.ts @@ -15,7 +15,7 @@ import { IWorkbenchExtensionEnablementService, EnablementState, IWebExtensionsSc import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { IRemoteExtensionHostDataProvider, RemoteExtensionHost, IRemoteExtensionHostInitData } from 'vs/workbench/services/extensions/common/remoteExtensionHost'; import { IRemoteAgentService } from 'vs/workbench/services/remote/common/remoteAgentService'; -import { IRemoteAuthorityResolverService, RemoteAuthorityResolverError, ResolverResult } from 'vs/platform/remote/common/remoteAuthorityResolver'; +import { IRemoteAuthorityResolverService, RemoteAuthorityResolverError, RemoteTrustOption, ResolverResult } from 'vs/platform/remote/common/remoteAuthorityResolver'; import { IInstantiationService, ServicesAccessor } from 'vs/platform/instantiation/common/instantiation'; import { ILifecycleService, LifecyclePhase } from 'vs/workbench/services/lifecycle/common/lifecycle'; import { INotificationService, Severity } from 'vs/platform/notification/common/notification'; @@ -44,6 +44,7 @@ import { updateProxyConfigurationsScope } from 'vs/platform/request/common/reque import { ConfigurationScope } from 'vs/platform/configuration/common/configurationRegistry'; import { Codicon } from 'vs/base/common/codicons'; import { IDialogService } from 'vs/platform/dialogs/common/dialogs'; +import { IWorkspaceTrustManagementService } from 'vs/platform/workspace/common/workspaceTrust'; const MACHINE_PROMPT = false; @@ -74,6 +75,7 @@ export class ExtensionService extends AbstractExtensionService implements IExten @IExtensionGalleryService private readonly _extensionGalleryService: IExtensionGalleryService, @ILogService private readonly _logService: ILogService, @IDialogService private readonly _dialogService: IDialogService, + @IWorkspaceTrustManagementService private readonly _workspaceTrustManagementService: IWorkspaceTrustManagementService, ) { super( new ExtensionRunningLocationClassifier( @@ -363,11 +365,20 @@ export class ExtensionService extends AbstractExtensionService implements IExten return; } - if (MACHINE_PROMPT) { + let promptForMachineTrust = MACHINE_PROMPT; + + if (resolverResult.options?.trust === RemoteTrustOption.DisableTrust) { + promptForMachineTrust = false; + this._workspaceTrustManagementService.setWorkspaceTrust(true); + } else if (resolverResult.options?.trust === RemoteTrustOption.MachineTrusted) { + promptForMachineTrust = false; + } + + if (promptForMachineTrust) { const dialogResult = await this._dialogService.show( Severity.Info, nls.localize('machineTrustQuestion', "Do you trust the machine you're connecting to?"), - [nls.localize('yes', "Yes, connect."), nls.localize('no', "No, disconnect.")], + [nls.localize('yes', "Yes, connect."), nls.localize('no', "No, do not connect.")], { cancelId: 1, custom: {