From 14c33847c8150323ca67505c37a0959fc06c1a3b Mon Sep 17 00:00:00 2001 From: meganrogge Date: Tue, 13 Sep 2022 10:59:25 -0700 Subject: [PATCH 1/7] fix #141506 --- .../audioCues/browser/audioCueService.ts | 7 +++++++ .../audioCues/browser/audioCues.contribution.ts | 4 ++++ .../audioCues/browser/media/taskEnded.mp3 | Bin 0 -> 41536 bytes .../tasks/browser/abstractTaskService.ts | 6 ++++-- .../contrib/tasks/browser/taskTerminalStatus.ts | 10 +++++++++- .../contrib/tasks/browser/terminalTaskSystem.ts | 4 +++- .../tasks/electron-sandbox/taskService.ts | 7 +++++-- 7 files changed, 32 insertions(+), 6 deletions(-) create mode 100644 src/vs/workbench/contrib/audioCues/browser/media/taskEnded.mp3 diff --git a/src/vs/workbench/contrib/audioCues/browser/audioCueService.ts b/src/vs/workbench/contrib/audioCues/browser/audioCueService.ts index abab9778937c9..f5c1277fba498 100644 --- a/src/vs/workbench/contrib/audioCues/browser/audioCueService.ts +++ b/src/vs/workbench/contrib/audioCues/browser/audioCueService.ts @@ -152,6 +152,7 @@ export class Sound { public static readonly foldedArea = Sound.register({ fileName: 'foldedAreas.mp3' }); public static readonly break = Sound.register({ fileName: 'break.mp3' }); public static readonly quickFixes = Sound.register({ fileName: 'quickFixes.mp3' }); + public static readonly taskEnded = Sound.register({ fileName: 'taskEnded.mp3' }); private constructor(public readonly fileName: string) { } } @@ -211,6 +212,12 @@ export class AudioCue { settingsKey: 'audioCues.noInlayHints' }); + public static readonly taskEnded = AudioCue.register({ + name: localize('audioCues.taskEnded', 'Task Ended'), + sound: Sound.taskEnded, + settingsKey: 'audioCues.taskEnded' + }); + private constructor( public readonly sound: Sound, public readonly name: string, diff --git a/src/vs/workbench/contrib/audioCues/browser/audioCues.contribution.ts b/src/vs/workbench/contrib/audioCues/browser/audioCues.contribution.ts index 6ccdbe15f957c..facb74870e4c0 100644 --- a/src/vs/workbench/contrib/audioCues/browser/audioCues.contribution.ts +++ b/src/vs/workbench/contrib/audioCues/browser/audioCues.contribution.ts @@ -72,6 +72,10 @@ Registry.as(ConfigurationExtensions.Configuration).regis 'description': localize('audioCues.noInlayHints', "Plays a sound when trying to read a line with inlay hints that has no inlay hints."), ...audioCueFeatureBase, }, + 'audioCues.taskEnded': { + 'description': localize('audioCues.taskEnded', "Plays a sound when a task ends."), + ...audioCueFeatureBase, + }, } }); diff --git a/src/vs/workbench/contrib/audioCues/browser/media/taskEnded.mp3 b/src/vs/workbench/contrib/audioCues/browser/media/taskEnded.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..37b832b02b5bb0356d7c07792f9aee33b5b426cb GIT binary patch literal 41536 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 literal 0 HcmV?d00001 diff --git a/src/vs/workbench/contrib/tasks/browser/abstractTaskService.ts b/src/vs/workbench/contrib/tasks/browser/abstractTaskService.ts index 3ac94c940c087..60b46e72728c5 100644 --- a/src/vs/workbench/contrib/tasks/browser/abstractTaskService.ts +++ b/src/vs/workbench/contrib/tasks/browser/abstractTaskService.ts @@ -81,6 +81,7 @@ import { IPreferencesService } from 'vs/workbench/services/preferences/common/pr import { TerminalExitReason } from 'vs/platform/terminal/common/terminal'; import { IRemoteAgentService } from 'vs/workbench/services/remote/common/remoteAgentService'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; +import { IAudioCueService } from 'vs/workbench/contrib/audioCues/browser/audioCueService'; const QUICKOPEN_HISTORY_LIMIT_CONFIG = 'task.quickOpen.history'; const PROBLEM_MATCHER_NEVER_CONFIG = 'task.problemMatchers.neverPrompt'; @@ -263,7 +264,8 @@ export abstract class AbstractTaskService extends Disposable implements ITaskSer @IThemeService private readonly _themeService: IThemeService, @ILifecycleService private readonly _lifecycleService: ILifecycleService, @IRemoteAgentService remoteAgentService: IRemoteAgentService, - @IInstantiationService private readonly _instantiationService: IInstantiationService + @IInstantiationService private readonly _instantiationService: IInstantiationService, + @IAudioCueService private readonly _audioCueService: IAudioCueService ) { super(); @@ -1927,7 +1929,7 @@ export abstract class AbstractTaskService extends Disposable implements ITaskSer this._modelService, this._configurationResolverService, this._contextService, this._environmentService, AbstractTaskService.OutputChannelId, this._fileService, this._terminalProfileResolverService, - this._pathService, this._viewDescriptorService, this._logService, this._configurationService, this._notificationService, + this._pathService, this._viewDescriptorService, this._logService, this._configurationService, this._notificationService, this._audioCueService, this, (workspaceFolder: IWorkspaceFolder | undefined) => { if (workspaceFolder) { diff --git a/src/vs/workbench/contrib/tasks/browser/taskTerminalStatus.ts b/src/vs/workbench/contrib/tasks/browser/taskTerminalStatus.ts index 8ce8f899c124b..2eeb316958743 100644 --- a/src/vs/workbench/contrib/tasks/browser/taskTerminalStatus.ts +++ b/src/vs/workbench/contrib/tasks/browser/taskTerminalStatus.ts @@ -15,6 +15,7 @@ import { ITerminalStatus } from 'vs/workbench/contrib/terminal/browser/terminalS import { MarkerSeverity } from 'vs/platform/markers/common/markers'; import { spinningLoading } from 'vs/platform/theme/common/iconRegistry'; import { IMarker } from 'vs/platform/terminal/common/capabilities/capabilities'; +import { AudioCue, IAudioCueService } from 'vs/workbench/contrib/audioCues/browser/audioCueService'; interface ITerminalData { terminal: ITerminalInstance; @@ -39,7 +40,7 @@ const INFO_INACTIVE_TASK_STATUS: ITerminalStatus = { id: TASK_TERMINAL_STATUS_ID export class TaskTerminalStatus extends Disposable { private terminalMap: Map = new Map(); private _marker: IMarker | undefined; - constructor(taskService: ITaskService) { + constructor(taskService: ITaskService, @IAudioCueService private readonly _audioCueService: IAudioCueService) { super(); this._register(taskService.onDidStateChange((event) => { switch (event.kind) { @@ -47,10 +48,17 @@ export class TaskTerminalStatus extends Disposable { case TaskEventKind.Active: this.eventActive(event); break; case TaskEventKind.Inactive: this.eventInactive(event); break; case TaskEventKind.ProcessEnded: this.eventEnd(event); break; + case TaskEventKind.End: this._playEndSound(event.exitCode); break; } })); } + private _playEndSound(exitCode?: number): void { + //TODO: determine sound based on exit code + this._audioCueService.playAudioCue(AudioCue.taskEnded); + } + + addTerminal(task: Task, terminal: ITerminalInstance, problemMatcher: AbstractProblemCollector) { const status: ITerminalStatus = { id: TASK_TERMINAL_STATUS_ID, severity: Severity.Info }; terminal.statusList.add(status); diff --git a/src/vs/workbench/contrib/tasks/browser/terminalTaskSystem.ts b/src/vs/workbench/contrib/tasks/browser/terminalTaskSystem.ts index 1dd014985833d..e577c4c33adb6 100644 --- a/src/vs/workbench/contrib/tasks/browser/terminalTaskSystem.ts +++ b/src/vs/workbench/contrib/tasks/browser/terminalTaskSystem.ts @@ -49,6 +49,7 @@ import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/ import { IOutputService } from 'vs/workbench/services/output/common/output'; import { IPaneCompositePartService } from 'vs/workbench/services/panecomposite/browser/panecomposite'; import { IPathService } from 'vs/workbench/services/path/common/pathService'; +import { IAudioCueService } from 'vs/workbench/contrib/audioCues/browser/audioCueService'; interface ITerminalData { terminal: ITerminalInstance; @@ -239,6 +240,7 @@ export class TerminalTaskSystem extends Disposable implements ITaskSystem { private _logService: ILogService, private _configurationService: IConfigurationService, private _notificationService: INotificationService, + audioCueService: IAudioCueService, taskService: ITaskService, taskSystemInfoResolver: ITaskSystemInfoResolver, ) { @@ -252,7 +254,7 @@ export class TerminalTaskSystem extends Disposable implements ITaskSystem { this._sameTaskTerminals = Object.create(null); this._onDidStateChange = new Emitter(); this._taskSystemInfoResolver = taskSystemInfoResolver; - this._register(this._terminalStatusManager = new TaskTerminalStatus(taskService)); + this._register(this._terminalStatusManager = new TaskTerminalStatus(taskService, audioCueService)); } public get onDidStateChange(): Event { diff --git a/src/vs/workbench/contrib/tasks/electron-sandbox/taskService.ts b/src/vs/workbench/contrib/tasks/electron-sandbox/taskService.ts index eb0befa657eaa..77a3a49d1e090 100644 --- a/src/vs/workbench/contrib/tasks/electron-sandbox/taskService.ts +++ b/src/vs/workbench/contrib/tasks/electron-sandbox/taskService.ts @@ -46,6 +46,7 @@ import { IPaneCompositePartService } from 'vs/workbench/services/panecomposite/b import { IThemeService } from 'vs/platform/theme/common/themeService'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { IRemoteAgentService } from 'vs/workbench/services/remote/common/remoteAgentService'; +import { IAudioCueService } from 'vs/workbench/contrib/audioCues/browser/audioCueService'; interface IWorkspaceFolderConfigurationResult { workspaceFolder: IWorkspaceFolder; @@ -89,7 +90,8 @@ export class TaskService extends AbstractTaskService { @ILogService logService: ILogService, @IThemeService themeService: IThemeService, @IInstantiationService instantiationService: IInstantiationService, - @IRemoteAgentService remoteAgentService: IRemoteAgentService + @IRemoteAgentService remoteAgentService: IRemoteAgentService, + @IAudioCueService audioCueService: IAudioCueService ) { super(configurationService, markerService, @@ -126,7 +128,8 @@ export class TaskService extends AbstractTaskService { themeService, lifecycleService, remoteAgentService, - instantiationService + instantiationService, + audioCueService ); this._register(lifecycleService.onBeforeShutdown(event => event.veto(this.beforeShutdown(), 'veto.tasks'))); } From 4ddfd3b7ffe2348c5dc126248fc1eedb58fc4daa Mon Sep 17 00:00:00 2001 From: meganrogge Date: Tue, 13 Sep 2022 11:06:22 -0700 Subject: [PATCH 2/7] use instant service --- .../contrib/tasks/browser/abstractTaskService.ts | 8 +++----- .../workbench/contrib/tasks/browser/taskTerminalStatus.ts | 2 +- .../workbench/contrib/tasks/browser/terminalTaskSystem.ts | 6 +++--- .../contrib/tasks/electron-sandbox/taskService.ts | 3 +-- 4 files changed, 8 insertions(+), 11 deletions(-) diff --git a/src/vs/workbench/contrib/tasks/browser/abstractTaskService.ts b/src/vs/workbench/contrib/tasks/browser/abstractTaskService.ts index 60b46e72728c5..15d5e685504ad 100644 --- a/src/vs/workbench/contrib/tasks/browser/abstractTaskService.ts +++ b/src/vs/workbench/contrib/tasks/browser/abstractTaskService.ts @@ -81,7 +81,6 @@ import { IPreferencesService } from 'vs/workbench/services/preferences/common/pr import { TerminalExitReason } from 'vs/platform/terminal/common/terminal'; import { IRemoteAgentService } from 'vs/workbench/services/remote/common/remoteAgentService'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; -import { IAudioCueService } from 'vs/workbench/contrib/audioCues/browser/audioCueService'; const QUICKOPEN_HISTORY_LIMIT_CONFIG = 'task.quickOpen.history'; const PROBLEM_MATCHER_NEVER_CONFIG = 'task.problemMatchers.neverPrompt'; @@ -264,8 +263,7 @@ export abstract class AbstractTaskService extends Disposable implements ITaskSer @IThemeService private readonly _themeService: IThemeService, @ILifecycleService private readonly _lifecycleService: ILifecycleService, @IRemoteAgentService remoteAgentService: IRemoteAgentService, - @IInstantiationService private readonly _instantiationService: IInstantiationService, - @IAudioCueService private readonly _audioCueService: IAudioCueService + @IInstantiationService private readonly _instantiationService: IInstantiationService ) { super(); @@ -1929,8 +1927,8 @@ export abstract class AbstractTaskService extends Disposable implements ITaskSer this._modelService, this._configurationResolverService, this._contextService, this._environmentService, AbstractTaskService.OutputChannelId, this._fileService, this._terminalProfileResolverService, - this._pathService, this._viewDescriptorService, this._logService, this._configurationService, this._notificationService, this._audioCueService, - this, + this._pathService, this._viewDescriptorService, this._logService, this._configurationService, this._notificationService, + this, this._instantiationService, (workspaceFolder: IWorkspaceFolder | undefined) => { if (workspaceFolder) { return this._getTaskSystemInfo(workspaceFolder.uri.scheme); diff --git a/src/vs/workbench/contrib/tasks/browser/taskTerminalStatus.ts b/src/vs/workbench/contrib/tasks/browser/taskTerminalStatus.ts index 2eeb316958743..793e69845e922 100644 --- a/src/vs/workbench/contrib/tasks/browser/taskTerminalStatus.ts +++ b/src/vs/workbench/contrib/tasks/browser/taskTerminalStatus.ts @@ -40,7 +40,7 @@ const INFO_INACTIVE_TASK_STATUS: ITerminalStatus = { id: TASK_TERMINAL_STATUS_ID export class TaskTerminalStatus extends Disposable { private terminalMap: Map = new Map(); private _marker: IMarker | undefined; - constructor(taskService: ITaskService, @IAudioCueService private readonly _audioCueService: IAudioCueService) { + constructor(@ITaskService taskService: ITaskService, @IAudioCueService private readonly _audioCueService: IAudioCueService) { super(); this._register(taskService.onDidStateChange((event) => { switch (event.kind) { diff --git a/src/vs/workbench/contrib/tasks/browser/terminalTaskSystem.ts b/src/vs/workbench/contrib/tasks/browser/terminalTaskSystem.ts index e577c4c33adb6..cdde68d139c99 100644 --- a/src/vs/workbench/contrib/tasks/browser/terminalTaskSystem.ts +++ b/src/vs/workbench/contrib/tasks/browser/terminalTaskSystem.ts @@ -49,7 +49,7 @@ import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/ import { IOutputService } from 'vs/workbench/services/output/common/output'; import { IPaneCompositePartService } from 'vs/workbench/services/panecomposite/browser/panecomposite'; import { IPathService } from 'vs/workbench/services/path/common/pathService'; -import { IAudioCueService } from 'vs/workbench/contrib/audioCues/browser/audioCueService'; +import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; interface ITerminalData { terminal: ITerminalInstance; @@ -240,8 +240,8 @@ export class TerminalTaskSystem extends Disposable implements ITaskSystem { private _logService: ILogService, private _configurationService: IConfigurationService, private _notificationService: INotificationService, - audioCueService: IAudioCueService, taskService: ITaskService, + instantiationService: IInstantiationService, taskSystemInfoResolver: ITaskSystemInfoResolver, ) { super(); @@ -254,7 +254,7 @@ export class TerminalTaskSystem extends Disposable implements ITaskSystem { this._sameTaskTerminals = Object.create(null); this._onDidStateChange = new Emitter(); this._taskSystemInfoResolver = taskSystemInfoResolver; - this._register(this._terminalStatusManager = new TaskTerminalStatus(taskService, audioCueService)); + this._register(this._terminalStatusManager = instantiationService.createInstance(TaskTerminalStatus)); } public get onDidStateChange(): Event { diff --git a/src/vs/workbench/contrib/tasks/electron-sandbox/taskService.ts b/src/vs/workbench/contrib/tasks/electron-sandbox/taskService.ts index 77a3a49d1e090..5ae81823bcf66 100644 --- a/src/vs/workbench/contrib/tasks/electron-sandbox/taskService.ts +++ b/src/vs/workbench/contrib/tasks/electron-sandbox/taskService.ts @@ -128,8 +128,7 @@ export class TaskService extends AbstractTaskService { themeService, lifecycleService, remoteAgentService, - instantiationService, - audioCueService + instantiationService ); this._register(lifecycleService.onBeforeShutdown(event => event.veto(this.beforeShutdown(), 'veto.tasks'))); } From d9b01d425f127d4b6ba8161ab966ade713ce08bf Mon Sep 17 00:00:00 2001 From: meganrogge Date: Tue, 13 Sep 2022 11:20:57 -0700 Subject: [PATCH 3/7] fix #47711 --- .../audioCues/browser/audioCueService.ts | 7 +++++++ .../audioCues/browser/media/terminalBell.mp3 | Bin 0 -> 54446 bytes .../terminal/browser/terminalInstance.ts | 5 ++++- 3 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 src/vs/workbench/contrib/audioCues/browser/media/terminalBell.mp3 diff --git a/src/vs/workbench/contrib/audioCues/browser/audioCueService.ts b/src/vs/workbench/contrib/audioCues/browser/audioCueService.ts index f5c1277fba498..1c26424410f14 100644 --- a/src/vs/workbench/contrib/audioCues/browser/audioCueService.ts +++ b/src/vs/workbench/contrib/audioCues/browser/audioCueService.ts @@ -153,6 +153,7 @@ export class Sound { public static readonly break = Sound.register({ fileName: 'break.mp3' }); public static readonly quickFixes = Sound.register({ fileName: 'quickFixes.mp3' }); public static readonly taskEnded = Sound.register({ fileName: 'taskEnded.mp3' }); + public static readonly terminalBell = Sound.register({ fileName: 'terminalBell.mp3' }); private constructor(public readonly fileName: string) { } } @@ -218,6 +219,12 @@ export class AudioCue { settingsKey: 'audioCues.taskEnded' }); + public static readonly terminalBell = AudioCue.register({ + name: localize('audioCues.terminalBell', 'Terminal Bell'), + sound: Sound.terminalBell, + settingsKey: 'audioCues.terminalBell' + }); + private constructor( public readonly sound: Sound, public readonly name: string, diff --git a/src/vs/workbench/contrib/audioCues/browser/media/terminalBell.mp3 b/src/vs/workbench/contrib/audioCues/browser/media/terminalBell.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..f00aa6de2bbad2497a51ddc193c5b6933cebb64f GIT binary patch literal 54446 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 literal 0 HcmV?d00001 diff --git a/src/vs/workbench/contrib/terminal/browser/terminalInstance.ts b/src/vs/workbench/contrib/terminal/browser/terminalInstance.ts index eae0e132b0596..c59a61ec633ac 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalInstance.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalInstance.ts @@ -55,6 +55,7 @@ import { IColorTheme, ICssStyleCollector, IThemeService, registerThemingParticip import { IWorkspaceContextService, IWorkspaceFolder } from 'vs/platform/workspace/common/workspace'; import { IWorkspaceTrustRequestService } from 'vs/platform/workspace/common/workspaceTrust'; import { IViewDescriptorService, IViewsService, ViewContainerLocation } from 'vs/workbench/common/views'; +import { AudioCue, IAudioCueService } from 'vs/workbench/contrib/audioCues/browser/audioCueService'; import { TaskSettingId } from 'vs/workbench/contrib/tasks/common/tasks'; import { IDetectedLinks, TerminalLinkManager } from 'vs/workbench/contrib/terminal/browser/links/terminalLinkManager'; import { TerminalLinkQuickpick } from 'vs/workbench/contrib/terminal/browser/links/terminalLinkQuickpick'; @@ -376,7 +377,8 @@ export class TerminalInstance extends Disposable implements ITerminalInstance { @IHistoryService private readonly _historyService: IHistoryService, @ITelemetryService private readonly _telemetryService: ITelemetryService, @IOpenerService private readonly _openerService: IOpenerService, - @ICommandService private readonly _commandService: ICommandService + @ICommandService private readonly _commandService: ICommandService, + @IAudioCueService private readonly _audioCueService: IAudioCueService ) { super(); @@ -730,6 +732,7 @@ export class TerminalInstance extends Disposable implements ITerminalInstance { icon: Codicon.bell, tooltip: nls.localize('bellStatus', "Bell") }, this._configHelper.config.bellDuration); + this._audioCueService.playSound(AudioCue.terminalBell.sound); } }); }, 1000); From 1b96770e815ebff296da0c936d26b2d0f1aa0849 Mon Sep 17 00:00:00 2001 From: meganrogge Date: Tue, 13 Sep 2022 11:30:26 -0700 Subject: [PATCH 4/7] Revert "use instant service" This reverts commit 4ddfd3b7ffe2348c5dc126248fc1eedb58fc4daa. --- .../contrib/tasks/browser/abstractTaskService.ts | 8 +++++--- .../workbench/contrib/tasks/browser/taskTerminalStatus.ts | 2 +- .../workbench/contrib/tasks/browser/terminalTaskSystem.ts | 6 +++--- .../contrib/tasks/electron-sandbox/taskService.ts | 3 ++- 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/vs/workbench/contrib/tasks/browser/abstractTaskService.ts b/src/vs/workbench/contrib/tasks/browser/abstractTaskService.ts index 15d5e685504ad..60b46e72728c5 100644 --- a/src/vs/workbench/contrib/tasks/browser/abstractTaskService.ts +++ b/src/vs/workbench/contrib/tasks/browser/abstractTaskService.ts @@ -81,6 +81,7 @@ import { IPreferencesService } from 'vs/workbench/services/preferences/common/pr import { TerminalExitReason } from 'vs/platform/terminal/common/terminal'; import { IRemoteAgentService } from 'vs/workbench/services/remote/common/remoteAgentService'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; +import { IAudioCueService } from 'vs/workbench/contrib/audioCues/browser/audioCueService'; const QUICKOPEN_HISTORY_LIMIT_CONFIG = 'task.quickOpen.history'; const PROBLEM_MATCHER_NEVER_CONFIG = 'task.problemMatchers.neverPrompt'; @@ -263,7 +264,8 @@ export abstract class AbstractTaskService extends Disposable implements ITaskSer @IThemeService private readonly _themeService: IThemeService, @ILifecycleService private readonly _lifecycleService: ILifecycleService, @IRemoteAgentService remoteAgentService: IRemoteAgentService, - @IInstantiationService private readonly _instantiationService: IInstantiationService + @IInstantiationService private readonly _instantiationService: IInstantiationService, + @IAudioCueService private readonly _audioCueService: IAudioCueService ) { super(); @@ -1927,8 +1929,8 @@ export abstract class AbstractTaskService extends Disposable implements ITaskSer this._modelService, this._configurationResolverService, this._contextService, this._environmentService, AbstractTaskService.OutputChannelId, this._fileService, this._terminalProfileResolverService, - this._pathService, this._viewDescriptorService, this._logService, this._configurationService, this._notificationService, - this, this._instantiationService, + this._pathService, this._viewDescriptorService, this._logService, this._configurationService, this._notificationService, this._audioCueService, + this, (workspaceFolder: IWorkspaceFolder | undefined) => { if (workspaceFolder) { return this._getTaskSystemInfo(workspaceFolder.uri.scheme); diff --git a/src/vs/workbench/contrib/tasks/browser/taskTerminalStatus.ts b/src/vs/workbench/contrib/tasks/browser/taskTerminalStatus.ts index 793e69845e922..2eeb316958743 100644 --- a/src/vs/workbench/contrib/tasks/browser/taskTerminalStatus.ts +++ b/src/vs/workbench/contrib/tasks/browser/taskTerminalStatus.ts @@ -40,7 +40,7 @@ const INFO_INACTIVE_TASK_STATUS: ITerminalStatus = { id: TASK_TERMINAL_STATUS_ID export class TaskTerminalStatus extends Disposable { private terminalMap: Map = new Map(); private _marker: IMarker | undefined; - constructor(@ITaskService taskService: ITaskService, @IAudioCueService private readonly _audioCueService: IAudioCueService) { + constructor(taskService: ITaskService, @IAudioCueService private readonly _audioCueService: IAudioCueService) { super(); this._register(taskService.onDidStateChange((event) => { switch (event.kind) { diff --git a/src/vs/workbench/contrib/tasks/browser/terminalTaskSystem.ts b/src/vs/workbench/contrib/tasks/browser/terminalTaskSystem.ts index cdde68d139c99..e577c4c33adb6 100644 --- a/src/vs/workbench/contrib/tasks/browser/terminalTaskSystem.ts +++ b/src/vs/workbench/contrib/tasks/browser/terminalTaskSystem.ts @@ -49,7 +49,7 @@ import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/ import { IOutputService } from 'vs/workbench/services/output/common/output'; import { IPaneCompositePartService } from 'vs/workbench/services/panecomposite/browser/panecomposite'; import { IPathService } from 'vs/workbench/services/path/common/pathService'; -import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; +import { IAudioCueService } from 'vs/workbench/contrib/audioCues/browser/audioCueService'; interface ITerminalData { terminal: ITerminalInstance; @@ -240,8 +240,8 @@ export class TerminalTaskSystem extends Disposable implements ITaskSystem { private _logService: ILogService, private _configurationService: IConfigurationService, private _notificationService: INotificationService, + audioCueService: IAudioCueService, taskService: ITaskService, - instantiationService: IInstantiationService, taskSystemInfoResolver: ITaskSystemInfoResolver, ) { super(); @@ -254,7 +254,7 @@ export class TerminalTaskSystem extends Disposable implements ITaskSystem { this._sameTaskTerminals = Object.create(null); this._onDidStateChange = new Emitter(); this._taskSystemInfoResolver = taskSystemInfoResolver; - this._register(this._terminalStatusManager = instantiationService.createInstance(TaskTerminalStatus)); + this._register(this._terminalStatusManager = new TaskTerminalStatus(taskService, audioCueService)); } public get onDidStateChange(): Event { diff --git a/src/vs/workbench/contrib/tasks/electron-sandbox/taskService.ts b/src/vs/workbench/contrib/tasks/electron-sandbox/taskService.ts index 5ae81823bcf66..77a3a49d1e090 100644 --- a/src/vs/workbench/contrib/tasks/electron-sandbox/taskService.ts +++ b/src/vs/workbench/contrib/tasks/electron-sandbox/taskService.ts @@ -128,7 +128,8 @@ export class TaskService extends AbstractTaskService { themeService, lifecycleService, remoteAgentService, - instantiationService + instantiationService, + audioCueService ); this._register(lifecycleService.onBeforeShutdown(event => event.veto(this.beforeShutdown(), 'veto.tasks'))); } From 3566358732467086362440a97b3a919e2be475e8 Mon Sep 17 00:00:00 2001 From: meganrogge Date: Tue, 13 Sep 2022 12:18:20 -0700 Subject: [PATCH 5/7] fix test --- .../tasks/test/browser/taskTerminalStatus.test.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/vs/workbench/contrib/tasks/test/browser/taskTerminalStatus.test.ts b/src/vs/workbench/contrib/tasks/test/browser/taskTerminalStatus.test.ts index 45b60a7848940..8d278bb8fdc19 100644 --- a/src/vs/workbench/contrib/tasks/test/browser/taskTerminalStatus.test.ts +++ b/src/vs/workbench/contrib/tasks/test/browser/taskTerminalStatus.test.ts @@ -7,6 +7,7 @@ import { ok } from 'assert'; import { Emitter, Event } from 'vs/base/common/event'; import { TestConfigurationService } from 'vs/platform/configuration/test/common/testConfigurationService'; import { TestInstantiationService } from 'vs/platform/instantiation/test/common/instantiationServiceMock'; +import { AudioCue, IAudioCueService } from 'vs/workbench/contrib/audioCues/browser/audioCueService'; import { ACTIVE_TASK_STATUS, FAILED_TASK_STATUS, SUCCEEDED_TASK_STATUS, TaskTerminalStatus } from 'vs/workbench/contrib/tasks/browser/taskTerminalStatus'; import { AbstractProblemCollector } from 'vs/workbench/contrib/tasks/common/problemCollectors'; import { CommonTask, ITaskEvent, TaskEventKind, TaskRunType } from 'vs/workbench/contrib/tasks/common/tasks'; @@ -24,6 +25,12 @@ class TestTaskService implements Partial { } } +class TestAudioCueService implements Partial { + async playAudioCue(cue: AudioCue): Promise { + return; + } +} + class TestTerminal implements Partial { statusList: TerminalStatusList = new TerminalStatusList(new TestConfigurationService()); } @@ -56,7 +63,7 @@ suite('Task Terminal Status', () => { setup(() => { instantiationService = new TestInstantiationService(); taskService = new TestTaskService(); - taskTerminalStatus = instantiationService.createInstance(TaskTerminalStatus, taskService); + taskTerminalStatus = instantiationService.createInstance(TaskTerminalStatus, taskService, new TestAudioCueService()); testTerminal = instantiationService.createInstance(TestTerminal); testTask = instantiationService.createInstance(TestTask); problemCollector = instantiationService.createInstance(TestProblemCollector); From 9206df8321389172c89d03f928a040dc7c5f06d7 Mon Sep 17 00:00:00 2001 From: meganrogge Date: Tue, 13 Sep 2022 11:06:22 -0700 Subject: [PATCH 6/7] use instant service --- .../contrib/tasks/browser/abstractTaskService.ts | 8 +++----- .../workbench/contrib/tasks/browser/taskTerminalStatus.ts | 2 +- .../workbench/contrib/tasks/browser/terminalTaskSystem.ts | 6 +++--- .../contrib/tasks/electron-sandbox/taskService.ts | 3 +-- 4 files changed, 8 insertions(+), 11 deletions(-) diff --git a/src/vs/workbench/contrib/tasks/browser/abstractTaskService.ts b/src/vs/workbench/contrib/tasks/browser/abstractTaskService.ts index 60b46e72728c5..15d5e685504ad 100644 --- a/src/vs/workbench/contrib/tasks/browser/abstractTaskService.ts +++ b/src/vs/workbench/contrib/tasks/browser/abstractTaskService.ts @@ -81,7 +81,6 @@ import { IPreferencesService } from 'vs/workbench/services/preferences/common/pr import { TerminalExitReason } from 'vs/platform/terminal/common/terminal'; import { IRemoteAgentService } from 'vs/workbench/services/remote/common/remoteAgentService'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; -import { IAudioCueService } from 'vs/workbench/contrib/audioCues/browser/audioCueService'; const QUICKOPEN_HISTORY_LIMIT_CONFIG = 'task.quickOpen.history'; const PROBLEM_MATCHER_NEVER_CONFIG = 'task.problemMatchers.neverPrompt'; @@ -264,8 +263,7 @@ export abstract class AbstractTaskService extends Disposable implements ITaskSer @IThemeService private readonly _themeService: IThemeService, @ILifecycleService private readonly _lifecycleService: ILifecycleService, @IRemoteAgentService remoteAgentService: IRemoteAgentService, - @IInstantiationService private readonly _instantiationService: IInstantiationService, - @IAudioCueService private readonly _audioCueService: IAudioCueService + @IInstantiationService private readonly _instantiationService: IInstantiationService ) { super(); @@ -1929,8 +1927,8 @@ export abstract class AbstractTaskService extends Disposable implements ITaskSer this._modelService, this._configurationResolverService, this._contextService, this._environmentService, AbstractTaskService.OutputChannelId, this._fileService, this._terminalProfileResolverService, - this._pathService, this._viewDescriptorService, this._logService, this._configurationService, this._notificationService, this._audioCueService, - this, + this._pathService, this._viewDescriptorService, this._logService, this._configurationService, this._notificationService, + this, this._instantiationService, (workspaceFolder: IWorkspaceFolder | undefined) => { if (workspaceFolder) { return this._getTaskSystemInfo(workspaceFolder.uri.scheme); diff --git a/src/vs/workbench/contrib/tasks/browser/taskTerminalStatus.ts b/src/vs/workbench/contrib/tasks/browser/taskTerminalStatus.ts index 2eeb316958743..793e69845e922 100644 --- a/src/vs/workbench/contrib/tasks/browser/taskTerminalStatus.ts +++ b/src/vs/workbench/contrib/tasks/browser/taskTerminalStatus.ts @@ -40,7 +40,7 @@ const INFO_INACTIVE_TASK_STATUS: ITerminalStatus = { id: TASK_TERMINAL_STATUS_ID export class TaskTerminalStatus extends Disposable { private terminalMap: Map = new Map(); private _marker: IMarker | undefined; - constructor(taskService: ITaskService, @IAudioCueService private readonly _audioCueService: IAudioCueService) { + constructor(@ITaskService taskService: ITaskService, @IAudioCueService private readonly _audioCueService: IAudioCueService) { super(); this._register(taskService.onDidStateChange((event) => { switch (event.kind) { diff --git a/src/vs/workbench/contrib/tasks/browser/terminalTaskSystem.ts b/src/vs/workbench/contrib/tasks/browser/terminalTaskSystem.ts index e577c4c33adb6..cdde68d139c99 100644 --- a/src/vs/workbench/contrib/tasks/browser/terminalTaskSystem.ts +++ b/src/vs/workbench/contrib/tasks/browser/terminalTaskSystem.ts @@ -49,7 +49,7 @@ import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/ import { IOutputService } from 'vs/workbench/services/output/common/output'; import { IPaneCompositePartService } from 'vs/workbench/services/panecomposite/browser/panecomposite'; import { IPathService } from 'vs/workbench/services/path/common/pathService'; -import { IAudioCueService } from 'vs/workbench/contrib/audioCues/browser/audioCueService'; +import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; interface ITerminalData { terminal: ITerminalInstance; @@ -240,8 +240,8 @@ export class TerminalTaskSystem extends Disposable implements ITaskSystem { private _logService: ILogService, private _configurationService: IConfigurationService, private _notificationService: INotificationService, - audioCueService: IAudioCueService, taskService: ITaskService, + instantiationService: IInstantiationService, taskSystemInfoResolver: ITaskSystemInfoResolver, ) { super(); @@ -254,7 +254,7 @@ export class TerminalTaskSystem extends Disposable implements ITaskSystem { this._sameTaskTerminals = Object.create(null); this._onDidStateChange = new Emitter(); this._taskSystemInfoResolver = taskSystemInfoResolver; - this._register(this._terminalStatusManager = new TaskTerminalStatus(taskService, audioCueService)); + this._register(this._terminalStatusManager = instantiationService.createInstance(TaskTerminalStatus)); } public get onDidStateChange(): Event { diff --git a/src/vs/workbench/contrib/tasks/electron-sandbox/taskService.ts b/src/vs/workbench/contrib/tasks/electron-sandbox/taskService.ts index 77a3a49d1e090..5ae81823bcf66 100644 --- a/src/vs/workbench/contrib/tasks/electron-sandbox/taskService.ts +++ b/src/vs/workbench/contrib/tasks/electron-sandbox/taskService.ts @@ -128,8 +128,7 @@ export class TaskService extends AbstractTaskService { themeService, lifecycleService, remoteAgentService, - instantiationService, - audioCueService + instantiationService ); this._register(lifecycleService.onBeforeShutdown(event => event.veto(this.beforeShutdown(), 'veto.tasks'))); } From d39a37e0fda4e513f4294947222ab13331917eab Mon Sep 17 00:00:00 2001 From: meganrogge Date: Tue, 13 Sep 2022 13:25:46 -0700 Subject: [PATCH 7/7] fix test --- .../contrib/tasks/test/browser/taskTerminalStatus.test.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/vs/workbench/contrib/tasks/test/browser/taskTerminalStatus.test.ts b/src/vs/workbench/contrib/tasks/test/browser/taskTerminalStatus.test.ts index 8d278bb8fdc19..223846073753a 100644 --- a/src/vs/workbench/contrib/tasks/test/browser/taskTerminalStatus.test.ts +++ b/src/vs/workbench/contrib/tasks/test/browser/taskTerminalStatus.test.ts @@ -60,10 +60,12 @@ suite('Task Terminal Status', () => { let testTerminal: ITerminalInstance; let testTask: Task; let problemCollector: AbstractProblemCollector; + let audioCueService: TestAudioCueService; setup(() => { instantiationService = new TestInstantiationService(); taskService = new TestTaskService(); - taskTerminalStatus = instantiationService.createInstance(TaskTerminalStatus, taskService, new TestAudioCueService()); + audioCueService = new TestAudioCueService(); + taskTerminalStatus = new TaskTerminalStatus(taskService as any, audioCueService as any); testTerminal = instantiationService.createInstance(TestTerminal); testTask = instantiationService.createInstance(TestTask); problemCollector = instantiationService.createInstance(TestProblemCollector);