From 6c4322469dbcdc7718d041fdbead6b643c653e17 Mon Sep 17 00:00:00 2001 From: kieferrm Date: Mon, 23 Jan 2017 17:21:50 -0800 Subject: [PATCH] use upper letter drives on windows --- .../electron-browser/trust.contribution.ts | 16 ++++++++++-- .../node/configurationService.ts | 26 ++++++++++++++----- 2 files changed, 34 insertions(+), 8 deletions(-) diff --git a/src/vs/workbench/parts/trust/electron-browser/trust.contribution.ts b/src/vs/workbench/parts/trust/electron-browser/trust.contribution.ts index eb067a1cccf..40a167b478d 100644 --- a/src/vs/workbench/parts/trust/electron-browser/trust.contribution.ts +++ b/src/vs/workbench/parts/trust/electron-browser/trust.contribution.ts @@ -18,6 +18,8 @@ import { IWorkspaceConfigurationService } from 'vs/workbench/services/configurat import { IConfigurationEditingService, ConfigurationTarget } from 'vs/workbench/services/configuration/common/configurationEditing'; import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; +import baseplatform = require('vs/base/common/platform'); + class TrustContribution implements IWorkbenchContribution { @@ -55,12 +57,22 @@ class TrustContribution implements IWorkbenchContribution { } } + private getWorkspaceTrustKey(): string { + let path = this.workspaceContextService.getWorkspace().resource.fsPath; + if (baseplatform.isWindows && path.length > 2) { + if (path.charAt(1) === ':') { + return path.charAt(0).toLocaleUpperCase().concat(path.substr(1)); + } + } + return path; + } + private updateUserSettings(): TPromise { const key = 'security.workspacesTrustedToSpecifyExecutables'; - const path = this.workspaceContextService.getWorkspace().resource.fsPath; + const workspace = this.getWorkspaceTrustKey(); const value = this.configurationService.lookup(key).user || {}; - value[path] = true; + value[workspace] = true; return this.configurationEditingService.writeConfiguration(ConfigurationTarget.USER, { key: key, value: value }, { writeToBuffer: true, autoSave: false }); } diff --git a/src/vs/workbench/services/configuration/node/configurationService.ts b/src/vs/workbench/services/configuration/node/configurationService.ts index 8a8394fb36d..9a1dc6888cf 100644 --- a/src/vs/workbench/services/configuration/node/configurationService.ts +++ b/src/vs/workbench/services/configuration/node/configurationService.ts @@ -26,6 +26,7 @@ import { FileChangeType, FileChangesEvent } from 'vs/platform/files/common/files import Event, { Emitter } from 'vs/base/common/event'; import { Registry } from 'vs/platform/platform'; import { IConfigurationRegistry, IConfigurationNode, Extensions, ISecurityConfiguration } from 'vs/platform/configuration/common/configurationRegistry'; +import baseplatform = require('vs/base/common/platform'); interface IStat { @@ -48,13 +49,26 @@ export class WorkspaceTrust implements IWorkspaceTrust { constructor(private contextService: IWorkspaceContextService, private baseConfigurationService: BaseConfigurationService) { } - public isTrusted(): boolean { - let workspace = this.contextService.getWorkspace(); + private getWorkspaceTrustKey(): string { + const workspace = this.contextService.getWorkspace(); if (workspace) { - let path = workspace.resource.fsPath; - let securityConfiguration = this.baseConfigurationService.getConfiguration(); - let whiteList = securityConfiguration.security.workspacesTrustedToSpecifyExecutables; - return whiteList && whiteList[path]; + const path = workspace.resource.fsPath; + if (baseplatform.isWindows && path.length > 2) { + if (path.charAt(1) === ':') { + return path.charAt(0).toLocaleUpperCase().concat(path.substr(1)); + } + } + return path; + } + return null; + } + + public isTrusted(): boolean { + const workspaceTrustKey = this.getWorkspaceTrustKey(); + if (workspaceTrustKey) { + const securityConfiguration = this.baseConfigurationService.getConfiguration(); + const whiteList = securityConfiguration.security.workspacesTrustedToSpecifyExecutables; + return whiteList && whiteList[workspaceTrustKey]; } return false; } -- GitLab