Skip to content

Commit

Permalink
Resolve first round of issues from peer review
Browse files Browse the repository at this point in the history
  • Loading branch information
captainsafia committed May 11, 2020
1 parent 88e4fad commit 528dba9
Show file tree
Hide file tree
Showing 3 changed files with 65 additions and 41 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -57,12 +57,12 @@
],
"debuggers": [
{
"type": "blazor",
"type": "blazorwasm",
"label": "Blazor WebAssembly Debug",
"initialConfigurations": [
{
"type": "blazor",
"name": "Launch and Debug Blazor Application",
"type": "blazorwasm",
"name": "Launch and Debug Blazor WebAssembly Application",
"request": "launch"
}
],
Expand All @@ -81,7 +81,24 @@
"browser": {
"type": "string",
"description": "The debugging browser to launch (Edge or Chrome)",
"default": "chrome"
"default": "chrome",
"enum": ["chrome", "edge"]
},
"trace": {
"type": ["boolean", "string"],
"default": "true",
"enum": ["verbose", true],
"description": "If true, verbose logs sent to log file. If 'verbose', send logs to console."
},
"webRoot": {
"type": "string",
"default": "${workspaceFolder}",
"description": "Specifies the absolute path to the webserver root."
},
"timeout": {
"type": "number",
"default": 30000,
"description": "Retry for this number of milliseconds to connect to browser."
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,10 @@ import * as vscode from 'vscode';
import { RazorLogger } from './RazorLogger';

export class BlazorDebugConfigurationProvider implements vscode.DebugConfigurationProvider {
private logger: RazorLogger;
private vscodeType: typeof vscode;

constructor(logger: RazorLogger, vscodeType: typeof vscode) {
this.logger = logger;
this.vscodeType = vscodeType;
}
constructor(private readonly logger: RazorLogger, private readonly vscodeType: typeof vscode) {}

public resolveDebugConfiguration(folder: vscode.WorkspaceFolder | undefined, configuration: vscode.DebugConfiguration): vscode.ProviderResult<vscode.DebugConfiguration> {
public async resolveDebugConfiguration(folder: vscode.WorkspaceFolder | undefined, configuration: vscode.DebugConfiguration): Promise<vscode.DebugConfiguration | undefined> {
const app = {
name: '.NET Core Launch (Blazor Standalone)',
type: 'coreclr',
Expand All @@ -31,33 +26,32 @@ export class BlazorDebugConfigurationProvider implements vscode.DebugConfigurati
};
const browser = {
name: '.NET Core Debug Blazor Web Assembly in Browser',
type: configuration.browser === 'edge' ? 'edge' : 'pwa-chrome',
type: configuration.browser === 'edge' ? 'pwa-msedge' : 'pwa-chrome',
request: 'launch',
timeout: 30000,
url: configuration.url || 'https://localhost:5001',
webRoot: '${workspaceFolder}',
timeout: configuration.timeout,
url: configuration.url,
webRoot: configuration.webRoot,
inspectUri: '{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}',
trace: configuration.trace || false,
};

this.vscodeType.debug.startDebugging(folder, app).then(
appStartFulfilled => {
if (appStartFulfilled) {
this.vscodeType.debug.startDebugging(folder, browser).then(
debugStartFulfilled => {
if (debugStartFulfilled) {
this.logger.logVerbose('Launching JavaScript debugger...');
}
},
error => {
this.logger.logError('Error when launching Chrome debugger: ', error);
},
);
}
},
error => {
this.logger.logError('Error when launching application: ', error);
},
);
try {
await this.vscodeType.debug.startDebugging(folder, app);
try {
await this.vscodeType.debug.startDebugging(folder, browser);
this.logger.logVerbose('[DEBUGGER] Launching JavaScript debugger...');
} catch (error) {
this.logger.logError(
'[DEBUGGER] Error when launching browser debugger: ',
error
);
}
} catch (error) {
this.logger.logError(
'[DEBUGGER] Error when launching application: ',
error
);
}

return undefined;
}
Expand Down
27 changes: 20 additions & 7 deletions src/Razor/src/Microsoft.AspNetCore.Razor.VSCode/src/extension.ts
Original file line number Diff line number Diff line change
Expand Up @@ -192,23 +192,36 @@ export async function activate(vscodeType: typeof vscodeapi, context: ExtensionC
* On non-Windows platforms, we need to terminate the Blazor
* dev server and its child processes.
*/
vscodeType.debug.onDidTerminateDebugSession(event => {
vscodeType.debug.onDidTerminateDebugSession(async (event) => {
logger.logVerbose('Terminating debugging session...');
if (process.platform !== 'win32') {
psList().then(processes => {
try {
const processes = await psList();
const devserver = processes.find(
(process: psList.ProcessDescriptor) => !!(process && process.cmd && process.cmd.includes('blazor-devserver')),
(process: psList.ProcessDescriptor) =>
!!(
process &&
process.cmd &&
process.cmd.includes('blazor-devserver')
),
);
if (devserver) {
const command = `kill ${devserver.pid}`;
exec(command, (error, stdout, stderr) => {
exec(command, (error) => {
if (error) {
logger.logError('Error during debug process clean-up: ', error);
logger.logError(
'[DEBUGGER] Error during debug process clean-up: ',
error,
);
}
return logger.logMessage('Debug process clean-up complete.');
return logger.logVerbose(
'[DEBUGGER] Debug process clean-up complete.',
);
});
}
}).catch(error => logger.logError('Error retrieving processes to clean-up: ', error));
} catch (error) {
logger.logError('Error retrieving processes to clean-up: ', error);
}
}
});

Expand Down

0 comments on commit 528dba9

Please sign in to comment.