提交 0eda23e1 编写于 作者: A Alex Ross

Fix tasks when one of the exthosts is webworker

上级 d166de9a
......@@ -434,7 +434,6 @@ export class MainThreadTask implements MainThreadTaskShape {
this._proxy.$OnDidEndTask(TaskExecutionDTO.from(task.getTaskExecution()));
}
});
this._taskService.setJsonTasksSupported(Promise.resolve(this._proxy.$jsonTasksSupported()));
}
public dispose(): void {
......
......@@ -213,7 +213,6 @@ export abstract class AbstractTaskService extends Disposable implements ITaskSer
protected _taskSystemInfos: Map<string, TaskSystemInfo>;
protected _workspaceTasksPromise?: Promise<Map<string, WorkspaceFolderTaskResult>>;
protected _areJsonTasksSupportedPromise: Promise<boolean> = Promise.resolve(false);
protected _taskSystem?: ITaskSystem;
protected _taskSystemListener?: IDisposable;
......@@ -543,7 +542,16 @@ export abstract class AbstractTaskService extends Disposable implements ITaskSer
}
public registerTaskSystem(key: string, info: TaskSystemInfo): void {
this._taskSystemInfos.set(key, info);
if (!this._taskSystemInfos.has(key) || info.platform !== Platform.Platform.Web) {
this._taskSystemInfos.set(key, info);
}
}
private getTaskSystemInfo(key: string): TaskSystemInfo | undefined {
if (this.environmentService.remoteAuthority) {
return this._taskSystemInfos.get(key);
}
return undefined;
}
public extensionCallbackTaskComplete(task: Task, result: number): Promise<void> {
......@@ -1588,7 +1596,7 @@ export abstract class AbstractTaskService extends Disposable implements ITaskSer
this.pathService, this.viewDescriptorService, this.logService,
(workspaceFolder: IWorkspaceFolder | undefined) => {
if (workspaceFolder) {
return this._taskSystemInfos.get(workspaceFolder.uri.scheme);
return this.getTaskSystemInfo(workspaceFolder.uri.scheme);
} else if (this._taskSystemInfos.size > 0) {
return this._taskSystemInfos.values().next().value;
} else {
......@@ -1883,8 +1891,8 @@ export abstract class AbstractTaskService extends Disposable implements ITaskSer
}
}
public setJsonTasksSupported(areSupported: Promise<boolean>) {
this._areJsonTasksSupportedPromise = areSupported;
private get jsonTasksSupported(): boolean {
return !!ShellExecutionSupportedContext.getValue(this.contextKeyService) && !!ProcessExecutionSupportedContext.getValue(this.contextKeyService);
}
private computeWorkspaceFolderTasks(workspaceFolder: IWorkspaceFolder, runSource: TaskRunSource = TaskRunSource.User): Promise<WorkspaceFolderTaskResult> {
......@@ -1896,7 +1904,7 @@ export abstract class AbstractTaskService extends Disposable implements ITaskSer
return Promise.resolve({ workspaceFolder, set: undefined, configurations: undefined, hasErrors: workspaceFolderConfiguration ? workspaceFolderConfiguration.hasErrors : false });
}
return ProblemMatcherRegistry.onReady().then(async (): Promise<WorkspaceFolderTaskResult> => {
let taskSystemInfo: TaskSystemInfo | undefined = this._taskSystemInfos.get(workspaceFolder.uri.scheme);
let taskSystemInfo: TaskSystemInfo | undefined = this.getTaskSystemInfo(workspaceFolder.uri.scheme);
let problemReporter = new ProblemReporter(this._outputChannel);
let parseResult = TaskConfig.parse(workspaceFolder, undefined, taskSystemInfo ? taskSystemInfo.platform : Platform.platform, workspaceFolderConfiguration.config!, problemReporter, TaskConfig.TaskConfigSource.TasksJson, this.contextKeyService);
let hasErrors = false;
......@@ -1917,10 +1925,10 @@ export abstract class AbstractTaskService extends Disposable implements ITaskSer
customizedTasks.byIdentifier[task.configures._key] = task;
}
}
if (!(await this._areJsonTasksSupportedPromise) && (parseResult.custom.length > 0)) {
if (!this.jsonTasksSupported && (parseResult.custom.length > 0)) {
console.warn('Custom workspace tasks are not supported.');
}
return { workspaceFolder, set: { tasks: await this._areJsonTasksSupportedPromise ? parseResult.custom : [] }, configurations: customizedTasks, hasErrors };
return { workspaceFolder, set: { tasks: this.jsonTasksSupported ? parseResult.custom : [] }, configurations: customizedTasks, hasErrors };
});
});
}
......@@ -1993,7 +2001,7 @@ export abstract class AbstractTaskService extends Disposable implements ITaskSer
if (!config) {
return false;
}
let taskSystemInfo: TaskSystemInfo | undefined = workspaceFolder ? this._taskSystemInfos.get(workspaceFolder.uri.scheme) : undefined;
let taskSystemInfo: TaskSystemInfo | undefined = workspaceFolder ? this.getTaskSystemInfo(workspaceFolder.uri.scheme) : undefined;
let problemReporter = new ProblemReporter(this._outputChannel);
let parseResult = TaskConfig.parse(workspaceFolder, this._workspace, taskSystemInfo ? taskSystemInfo.platform : Platform.platform, config, problemReporter, source, this.contextKeyService, isRecentTask);
let hasErrors = false;
......@@ -2010,7 +2018,7 @@ export abstract class AbstractTaskService extends Disposable implements ITaskSer
customized[task.configures._key] = task;
}
}
if (!(await this._areJsonTasksSupportedPromise) && (parseResult.custom.length > 0)) {
if (!this.jsonTasksSupported && (parseResult.custom.length > 0)) {
console.warn('Custom workspace tasks are not supported.');
} else {
for (let task of parseResult.custom) {
......
......@@ -96,7 +96,6 @@ export interface ITaskService {
registerTaskSystem(scheme: string, taskSystemInfo: TaskSystemInfo): void;
registerSupportedExecutions(custom?: boolean, shell?: boolean, process?: boolean): void;
setJsonTasksSupported(areSuppored: Promise<boolean>): void;
extensionCallbackTaskComplete(task: Task, result: number | undefined): Promise<void>;
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册