提交 6c432246 编写于 作者: K kieferrm

use upper letter drives on windows

上级 42000645
...@@ -18,6 +18,8 @@ import { IWorkspaceConfigurationService } from 'vs/workbench/services/configurat ...@@ -18,6 +18,8 @@ import { IWorkspaceConfigurationService } from 'vs/workbench/services/configurat
import { IConfigurationEditingService, ConfigurationTarget } from 'vs/workbench/services/configuration/common/configurationEditing'; import { IConfigurationEditingService, ConfigurationTarget } from 'vs/workbench/services/configuration/common/configurationEditing';
import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace'; import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace';
import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
import baseplatform = require('vs/base/common/platform');
class TrustContribution implements IWorkbenchContribution { class TrustContribution implements IWorkbenchContribution {
...@@ -55,12 +57,22 @@ 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<void> { private updateUserSettings(): TPromise<void> {
const key = 'security.workspacesTrustedToSpecifyExecutables'; const key = 'security.workspacesTrustedToSpecifyExecutables';
const path = this.workspaceContextService.getWorkspace().resource.fsPath; const workspace = this.getWorkspaceTrustKey();
const value = this.configurationService.lookup(key).user || {}; 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 }); return this.configurationEditingService.writeConfiguration(ConfigurationTarget.USER, { key: key, value: value }, { writeToBuffer: true, autoSave: false });
} }
......
...@@ -26,6 +26,7 @@ import { FileChangeType, FileChangesEvent } from 'vs/platform/files/common/files ...@@ -26,6 +26,7 @@ import { FileChangeType, FileChangesEvent } from 'vs/platform/files/common/files
import Event, { Emitter } from 'vs/base/common/event'; import Event, { Emitter } from 'vs/base/common/event';
import { Registry } from 'vs/platform/platform'; import { Registry } from 'vs/platform/platform';
import { IConfigurationRegistry, IConfigurationNode, Extensions, ISecurityConfiguration } from 'vs/platform/configuration/common/configurationRegistry'; import { IConfigurationRegistry, IConfigurationNode, Extensions, ISecurityConfiguration } from 'vs/platform/configuration/common/configurationRegistry';
import baseplatform = require('vs/base/common/platform');
interface IStat { interface IStat {
...@@ -48,13 +49,26 @@ export class WorkspaceTrust implements IWorkspaceTrust { ...@@ -48,13 +49,26 @@ export class WorkspaceTrust implements IWorkspaceTrust {
constructor(private contextService: IWorkspaceContextService, private baseConfigurationService: BaseConfigurationService<any>) { } constructor(private contextService: IWorkspaceContextService, private baseConfigurationService: BaseConfigurationService<any>) { }
public isTrusted(): boolean { private getWorkspaceTrustKey(): string {
let workspace = this.contextService.getWorkspace(); const workspace = this.contextService.getWorkspace();
if (workspace) { if (workspace) {
let path = workspace.resource.fsPath; const path = workspace.resource.fsPath;
let securityConfiguration = this.baseConfigurationService.getConfiguration<ISecurityConfiguration>(); if (baseplatform.isWindows && path.length > 2) {
let whiteList = securityConfiguration.security.workspacesTrustedToSpecifyExecutables; if (path.charAt(1) === ':') {
return whiteList && whiteList[path]; 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<ISecurityConfiguration>();
const whiteList = securityConfiguration.security.workspacesTrustedToSpecifyExecutables;
return whiteList && whiteList[workspaceTrustKey];
} }
return false; return false;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册