diff --git a/package.json b/package.json index 71f7465f66..e13dc632ff 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "azuredatastudio", "version": "1.28.0", - "distro": "0de18a407aaa6294c15918753b6032c7bb919aaf", + "distro": "1d8bd1032738ec5b6aad0b80551eee7376a617dc", "author": { "name": "Microsoft Corporation" }, diff --git a/src/vs/platform/remote/common/remoteAgentEnvironment.ts b/src/vs/platform/remote/common/remoteAgentEnvironment.ts index ea8ff9f04f..98b5aa3a07 100644 --- a/src/vs/platform/remote/common/remoteAgentEnvironment.ts +++ b/src/vs/platform/remote/common/remoteAgentEnvironment.ts @@ -18,6 +18,7 @@ export interface IRemoteAgentEnvironment { workspaceStorageHome: URI; userHome: URI; os: OperatingSystem; + useHostProxy: boolean; } export interface RemoteAgentConnectionContext { diff --git a/src/vs/platform/request/common/request.ts b/src/vs/platform/request/common/request.ts index 49b939865f..397e30062a 100644 --- a/src/vs/platform/request/common/request.ts +++ b/src/vs/platform/request/common/request.ts @@ -6,7 +6,7 @@ import { localize } from 'vs/nls'; import { CancellationToken } from 'vs/base/common/cancellation'; import { createDecorator } from 'vs/platform/instantiation/common/instantiation'; -import { IConfigurationRegistry, Extensions } from 'vs/platform/configuration/common/configurationRegistry'; +import { IConfigurationRegistry, Extensions, ConfigurationScope, IConfigurationNode } from 'vs/platform/configuration/common/configurationRegistry'; import { Registry } from 'vs/platform/registry/common/platform'; import { streamToBuffer } from 'vs/base/common/buffer'; import { IRequestOptions, IRequestContext } from 'vs/base/parts/request/common/request'; @@ -66,12 +66,22 @@ export interface IHTTPConfiguration { }; } -Registry.as(Extensions.Configuration) - .registerConfiguration({ +export function updateProxyConfigurationsScope(scope: ConfigurationScope): void { + registerProxyConfigurations(scope); +} + +let proxyConfiguration: IConfigurationNode | undefined; +function registerProxyConfigurations(scope: ConfigurationScope): void { + const configurationRegistry = Registry.as(Extensions.Configuration); + if (proxyConfiguration) { + configurationRegistry.deregisterConfigurations([proxyConfiguration]); + } + proxyConfiguration = { id: 'http', order: 15, title: localize('httpConfigurationTitle', "HTTP"), type: 'object', + scope, properties: { 'http.proxy': { type: 'string', @@ -105,4 +115,8 @@ Registry.as(Extensions.Configuration) description: localize('systemCertificates', "Controls whether CA certificates should be loaded from the OS. (On Windows and macOS a reload of the window is required after turning this off.)") } } - }); + }; + configurationRegistry.registerConfiguration(proxyConfiguration); +} + +registerProxyConfigurations(ConfigurationScope.MACHINE); diff --git a/src/vs/workbench/services/extensions/electron-browser/extensionService.ts b/src/vs/workbench/services/extensions/electron-browser/extensionService.ts index dc2ad3e2ba..facb51c6b8 100644 --- a/src/vs/workbench/services/extensions/electron-browser/extensionService.ts +++ b/src/vs/workbench/services/extensions/electron-browser/extensionService.ts @@ -40,6 +40,8 @@ import { ILogService } from 'vs/platform/log/common/log'; import { CATEGORIES } from 'vs/workbench/common/actions'; import { Schemas } from 'vs/base/common/network'; import { ExtensionHostExitCode } from 'vs/workbench/services/extensions/common/extensionHostProtocol'; +import { updateProxyConfigurationsScope } from 'vs/platform/request/common/request'; +import { ConfigurationScope } from 'vs/platform/configuration/common/configurationRegistry'; export class ExtensionService extends AbstractExtensionService implements IExtensionService { @@ -336,6 +338,8 @@ export class ExtensionService extends AbstractExtensionService implements IExten await this._startLocalExtensionHost(localExtensions); return; } + + updateProxyConfigurationsScope(remoteEnv.useHostProxy ? ConfigurationScope.APPLICATION : ConfigurationScope.MACHINE); } await this._startLocalExtensionHost(localExtensions, remoteAuthority, remoteEnv, remoteExtensions); diff --git a/src/vs/workbench/services/remote/common/remoteAgentEnvironmentChannel.ts b/src/vs/workbench/services/remote/common/remoteAgentEnvironmentChannel.ts index 3aeb1fefc8..e838e6466c 100644 --- a/src/vs/workbench/services/remote/common/remoteAgentEnvironmentChannel.ts +++ b/src/vs/workbench/services/remote/common/remoteAgentEnvironmentChannel.ts @@ -41,6 +41,7 @@ export interface IRemoteAgentEnvironmentDTO { workspaceStorageHome: UriComponents; userHome: UriComponents; os: platform.OperatingSystem; + useHostProxy: boolean; } export class RemoteExtensionEnvironmentChannelClient { @@ -63,7 +64,8 @@ export class RemoteExtensionEnvironmentChannelClient { globalStorageHome: URI.revive(data.globalStorageHome), workspaceStorageHome: URI.revive(data.workspaceStorageHome), userHome: URI.revive(data.userHome), - os: data.os + os: data.os, + useHostProxy: data.useHostProxy }; }