From efbc898dc68f0278fca064cb2e36167d475ae0ca Mon Sep 17 00:00:00 2001 From: isidor Date: Thu, 3 Aug 2017 16:57:34 +0200 Subject: [PATCH] Debug events: sessionId should live one level up from the body fixes #31391 --- .../mainThreadDebugService.ts | 6 ++--- src/vs/workbench/parts/debug/common/debug.ts | 6 ++++- .../debug/electron-browser/debugService.ts | 10 ++++----- .../debug/electron-browser/rawDebugSession.ts | 22 ++++++++----------- .../parts/debug/test/common/mockDebug.ts | 4 ++-- 5 files changed, 24 insertions(+), 24 deletions(-) diff --git a/src/vs/workbench/api/electron-browser/mainThreadDebugService.ts b/src/vs/workbench/api/electron-browser/mainThreadDebugService.ts index edab286ff8b..f3e147e1461 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadDebugService.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadDebugService.ts @@ -34,9 +34,9 @@ export class MainThreadDebugService extends MainThreadDebugServiceShape { } })); this._toDispose.push(debugService.onDidCustomEvent(event => { - if (event.body && event.body.sessionId) { - const process = this.debugService.findProcessByUUID(event.body.sessionId); // TODO - this._proxy.$acceptDebugSessionCustomEvent(event.body.sessionId, process.configuration.type, process.configuration.name, event); + if (event && event.sessionId) { + const process = this.debugService.findProcessByUUID(event.sessionId); + this._proxy.$acceptDebugSessionCustomEvent(event.sessionId, process.configuration.type, process.configuration.name, event); } })); } diff --git a/src/vs/workbench/parts/debug/common/debug.ts b/src/vs/workbench/parts/debug/common/debug.ts index ea0623d8847..1c4b7c7428a 100644 --- a/src/vs/workbench/parts/debug/common/debug.ts +++ b/src/vs/workbench/parts/debug/common/debug.ts @@ -451,6 +451,10 @@ export interface ILaunch { export const IDebugService = createDecorator(DEBUG_SERVICE_ID); +export interface DebugEvent extends DebugProtocol.Event { + sessionId?: string; +} + export interface IDebugService { _serviceBrand: any; @@ -477,7 +481,7 @@ export interface IDebugService { /** * Allows to register on custom DAP events. */ - onDidCustomEvent: Event; + onDidCustomEvent: Event; /** * Gets the current configuration manager. diff --git a/src/vs/workbench/parts/debug/electron-browser/debugService.ts b/src/vs/workbench/parts/debug/electron-browser/debugService.ts index 04cca9dc772..6d15e020ccf 100644 --- a/src/vs/workbench/parts/debug/electron-browser/debugService.ts +++ b/src/vs/workbench/parts/debug/electron-browser/debugService.ts @@ -69,7 +69,7 @@ export class DebugService implements debug.IDebugService { private _onDidChangeState: Emitter; private _onDidNewProcess: Emitter; private _onDidEndProcess: Emitter; - private _onDidCustomEvent: Emitter; + private _onDidCustomEvent: Emitter; private model: Model; private viewModel: ViewModel; private allSessionIds: Set; @@ -114,7 +114,7 @@ export class DebugService implements debug.IDebugService { this._onDidChangeState = new Emitter(); this._onDidNewProcess = new Emitter(); this._onDidEndProcess = new Emitter(); - this._onDidCustomEvent = new Emitter(); + this._onDidCustomEvent = new Emitter(); this.sessionStates = new Map(); this.allSessionIds = new Set(); @@ -346,7 +346,7 @@ export class DebugService implements debug.IDebugService { this.toDisposeOnSessionEnd.get(session.getId()).push(session.onDidTerminateDebugee(event => { aria.status(nls.localize('debuggingStopped', "Debugging stopped.")); - if (session && session.getId() === event.body.sessionId) { + if (session && session.getId() === event.sessionId) { if (event.body && event.body.restart && process) { this.restartProcess(process, event.body.restart).done(null, err => this.messageService.show(severity.Error, err.message)); } else { @@ -416,7 +416,7 @@ export class DebugService implements debug.IDebugService { payload: [process.session.root.fsPath] }); } - if (session && session.getId() === event.body.sessionId) { + if (session && session.getId() === event.sessionId) { this.onSessionEnd(session); } })); @@ -511,7 +511,7 @@ export class DebugService implements debug.IDebugService { return this._onDidEndProcess.event; } - public get onDidCustomEvent(): Event { + public get onDidCustomEvent(): Event { return this._onDidCustomEvent.event; } diff --git a/src/vs/workbench/parts/debug/electron-browser/rawDebugSession.ts b/src/vs/workbench/parts/debug/electron-browser/rawDebugSession.ts index dfbecd5a17b..e74a2cd53ac 100644 --- a/src/vs/workbench/parts/debug/electron-browser/rawDebugSession.ts +++ b/src/vs/workbench/parts/debug/electron-browser/rawDebugSession.ts @@ -21,27 +21,27 @@ import { ITerminalService } from 'vs/workbench/parts/terminal/common/terminal'; import { ITerminalService as IExternalTerminalService } from 'vs/workbench/parts/execution/common/execution'; import debug = require('vs/workbench/parts/debug/common/debug'); import { Adapter } from 'vs/workbench/parts/debug/node/debugAdapter'; -import v8 = require('vs/workbench/parts/debug/node/v8Protocol'); +import { V8Protocol } from 'vs/workbench/parts/debug/node/v8Protocol'; import { IOutputService } from 'vs/workbench/parts/output/common/output'; import { ExtensionsChannelId } from 'vs/platform/extensionManagement/common/extensionManagement'; import { TerminalSupport } from 'vs/workbench/parts/debug/electron-browser/terminalSupport'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; -export interface SessionExitedEvent extends DebugProtocol.ExitedEvent { +export interface SessionExitedEvent extends debug.DebugEvent { body: { exitCode: number, sessionId: string }; } -export interface SessionTerminatedEvent extends DebugProtocol.TerminatedEvent { +export interface SessionTerminatedEvent extends debug.DebugEvent { body: { restart?: boolean, sessionId: string }; } -export class RawDebugSession extends v8.V8Protocol implements debug.ISession { +export class RawDebugSession extends V8Protocol implements debug.ISession { public emittedStopped: boolean; public readyForBreakpoints: boolean; @@ -63,7 +63,7 @@ export class RawDebugSession extends v8.V8Protocol implements debug.ISession { private _onDidThread: Emitter; private _onDidOutput: Emitter; private _onDidBreakpoint: Emitter; - private _onDidCustomEvent: Emitter; + private _onDidCustomEvent: Emitter; private _onDidEvent: Emitter; constructor( @@ -93,7 +93,7 @@ export class RawDebugSession extends v8.V8Protocol implements debug.ISession { this._onDidThread = new Emitter(); this._onDidOutput = new Emitter(); this._onDidBreakpoint = new Emitter(); - this._onDidCustomEvent = new Emitter(); + this._onDidCustomEvent = new Emitter(); this._onDidEvent = new Emitter(); } @@ -129,7 +129,7 @@ export class RawDebugSession extends v8.V8Protocol implements debug.ISession { return this._onDidBreakpoint.event; } - public get onDidCustomEvent(): Event { + public get onDidCustomEvent(): Event { return this._onDidCustomEvent.event; } @@ -191,12 +191,8 @@ export class RawDebugSession extends v8.V8Protocol implements debug.ISession { }); } - protected onEvent(event: DebugProtocol.Event): void { - if (event.body) { - event.body.sessionId = this.getId(); - } else { - event.body = { sessionId: this.getId() }; - } + protected onEvent(event: debug.DebugEvent): void { + event.sessionId = this.getId(); if (event.event === 'initialized') { this.readyForBreakpoints = true; diff --git a/src/vs/workbench/parts/debug/test/common/mockDebug.ts b/src/vs/workbench/parts/debug/test/common/mockDebug.ts index d2b761947a0..7473a361428 100644 --- a/src/vs/workbench/parts/debug/test/common/mockDebug.ts +++ b/src/vs/workbench/parts/debug/test/common/mockDebug.ts @@ -15,7 +15,7 @@ export class MockDebugService implements debug.IDebugService { return null; } - public get onDidCustomEvent(): Event { + public get onDidCustomEvent(): Event { return null; } @@ -172,7 +172,7 @@ export class MockSession implements debug.ISession { return {}; } - public get onDidEvent(): Event { + public get onDidEvent(): Event { return null; }