Skip to content

Commit 620ac0a

Browse files
committed
debug: respect progress update event
microsoft#92253
1 parent f68ab12 commit 620ac0a

5 files changed

Lines changed: 34 additions & 1 deletion

File tree

src/vs/workbench/contrib/debug/browser/debugProgress.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,19 @@ export class DebugProgressContribution implements IWorkbenchContribution {
3939
title: progressStartEvent.body.title,
4040
cancellable: progressStartEvent.body.cancellable,
4141
silent: true
42-
}, () => promise, () => session.cancel(progressStartEvent.body.progressId));
42+
}, progressStep => {
43+
const progressUpdateListener = session.onDidProgressUpdate(e => {
44+
if (e.body.progressId === progressStartEvent.body.progressId) {
45+
progressStep.report({
46+
message: e.body.message,
47+
increment: e.body.percentage,
48+
total: e.body.percentage ? 100 : undefined
49+
});
50+
}
51+
});
52+
53+
return promise.then(() => progressUpdateListener.dispose());
54+
}, () => session.cancel(progressStartEvent.body.progressId));
4355
});
4456
}
4557
};

src/vs/workbench/contrib/debug/browser/debugSession.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ export class DebugSession implements IDebugSession {
5555
private readonly _onDidLoadedSource = new Emitter<LoadedSourceEvent>();
5656
private readonly _onDidCustomEvent = new Emitter<DebugProtocol.Event>();
5757
private readonly _onDidProgressStart = new Emitter<DebugProtocol.ProgressStartEvent>();
58+
private readonly _onDidProgressUpdate = new Emitter<DebugProtocol.ProgressUpdateEvent>();
5859
private readonly _onDidProgressEnd = new Emitter<DebugProtocol.ProgressEndEvent>();
5960

6061
private readonly _onDidChangeREPLElements = new Emitter<void>();
@@ -190,6 +191,10 @@ export class DebugSession implements IDebugSession {
190191
return this._onDidProgressStart.event;
191192
}
192193

194+
get onDidProgressUpdate(): Event<DebugProtocol.ProgressUpdateEvent> {
195+
return this._onDidProgressUpdate.event;
196+
}
197+
193198
get onDidProgressEnd(): Event<DebugProtocol.ProgressEndEvent> {
194199
return this._onDidProgressEnd.event;
195200
}
@@ -935,6 +940,9 @@ export class DebugSession implements IDebugSession {
935940
this.rawListeners.push(this.raw.onDidProgressStart(event => {
936941
this._onDidProgressStart.fire(event);
937942
}));
943+
this.rawListeners.push(this.raw.onDidProgressUpdate(event => {
944+
this._onDidProgressUpdate.fire(event);
945+
}));
938946
this.rawListeners.push(this.raw.onDidProgressEnd(event => {
939947
this._onDidProgressEnd.fire(event);
940948
}));

src/vs/workbench/contrib/debug/browser/rawDebugSession.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ export class RawDebugSession implements IDisposable {
6666
private readonly _onDidBreakpoint = new Emitter<DebugProtocol.BreakpointEvent>();
6767
private readonly _onDidLoadedSource = new Emitter<DebugProtocol.LoadedSourceEvent>();
6868
private readonly _onDidProgressStart = new Emitter<DebugProtocol.ProgressStartEvent>();
69+
private readonly _onDidProgressUpdate = new Emitter<DebugProtocol.ProgressUpdateEvent>();
6970
private readonly _onDidProgressEnd = new Emitter<DebugProtocol.ProgressEndEvent>();
7071
private readonly _onDidCustomEvent = new Emitter<DebugProtocol.Event>();
7172
private readonly _onDidEvent = new Emitter<DebugProtocol.Event>();
@@ -142,6 +143,9 @@ export class RawDebugSession implements IDisposable {
142143
case 'progressStart':
143144
this._onDidProgressStart.fire(event as DebugProtocol.ProgressStartEvent);
144145
break;
146+
case 'progressUpdate':
147+
this._onDidProgressUpdate.fire(event as DebugProtocol.ProgressUpdateEvent);
148+
break;
145149
case 'progressEnd':
146150
this._onDidProgressEnd.fire(event as DebugProtocol.ProgressEndEvent);
147151
break;
@@ -217,6 +221,10 @@ export class RawDebugSession implements IDisposable {
217221
return this._onDidProgressStart.event;
218222
}
219223

224+
get onDidProgressUpdate(): Event<DebugProtocol.ProgressUpdateEvent> {
225+
return this._onDidProgressUpdate.event;
226+
}
227+
220228
get onDidProgressEnd(): Event<DebugProtocol.ProgressEndEvent> {
221229
return this._onDidProgressEnd.event;
222230
}

src/vs/workbench/contrib/debug/common/debug.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,7 @@ export interface IDebugSession extends ITreeElement {
200200
readonly onDidLoadedSource: Event<LoadedSourceEvent>;
201201
readonly onDidCustomEvent: Event<DebugProtocol.Event>;
202202
readonly onDidProgressStart: Event<DebugProtocol.ProgressStartEvent>;
203+
readonly onDidProgressUpdate: Event<DebugProtocol.ProgressUpdateEvent>;
203204
readonly onDidProgressEnd: Event<DebugProtocol.ProgressEndEvent>;
204205

205206
// DAP request

src/vs/workbench/contrib/debug/test/common/mockDebug.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -230,6 +230,10 @@ export class MockSession implements IDebugSession {
230230
throw new Error('not implemented');
231231
}
232232

233+
get onDidProgressUpdate(): Event<DebugProtocol.ProgressUpdateEvent> {
234+
throw new Error('not implemented');
235+
}
236+
233237
get onDidProgressEnd(): Event<DebugProtocol.ProgressEndEvent> {
234238
throw new Error('not implemented');
235239
}

0 commit comments

Comments
 (0)