Skip to content

Commit 3bed927

Browse files
authored
Merge pull request #97 from NativeScript/buhov/hit-count-support
[iOS] Support for breakpoints with ignoreCount in iOS only
2 parents 914b947 + c9c62c0 commit 3bed927

File tree

5 files changed

+21
-13
lines changed

5 files changed

+21
-13
lines changed

package.json

+3-3
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
"publisher": "Telerik",
1717
"bugs": "https://github.com/NativeScript/nativescript-vscode-extension/issues",
1818
"engines": {
19-
"vscode": "^1.5.0"
19+
"vscode": "^1.7.0"
2020
},
2121
"homepage": "https://www.nativescript.org/",
2222
"categories": [
@@ -29,8 +29,8 @@
2929
"source-map": "^0.5.3",
3030
"xmlhttprequest": "https://github.com/telerik/node-XMLHttpRequest/tarball/master",
3131
"universal-analytics": "^0.4.6",
32-
"vscode-debugadapter": "^1.7.0",
33-
"vscode-debugprotocol": "^1.7.0"
32+
"vscode-debugadapter": "^1.14.0",
33+
"vscode-debugprotocol": "^1.14.0"
3434
},
3535
"devDependencies": {
3636
"@types/es6-collections": "^0.5.29",

src/debug-adapter/connection/INSDebugConnection.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ export interface INSDebugConnection {
33

44
close(): void;
55

6-
debugger_setBreakpointByUrl(url: string, lineNumber: number, columnNumber: number, condition?: string): Promise<WebKitProtocol.Debugger.SetBreakpointByUrlResponse>
6+
debugger_setBreakpointByUrl(url: string, lineNumber: number, columnNumber: number, condition: string, ignoreCount: number): Promise<WebKitProtocol.Debugger.SetBreakpointByUrlResponse>
77

88
debugger_removeBreakpoint(breakpointId: string): Promise<WebKitProtocol.Response>
99

src/debug-adapter/connection/androidConnection.ts

+3-5
Original file line numberDiff line numberDiff line change
@@ -450,17 +450,15 @@ export class AndroidConnection implements INSDebugConnection {
450450
this._socket.close();
451451
}
452452

453-
public debugger_setBreakpointByUrl(url: string, lineNumber: number, columnNumber: number, condition?: string): Promise<WebKitProtocol.Debugger.SetBreakpointByUrlResponse> {
454-
//throw new Error("Not implemented");
455-
//return this.sendMessage('Debugger.setBreakpointByUrl', <WebKitProtocol.Debugger.SetBreakpointByUrlParams>{ url, lineNumber, columnNumber });
456-
453+
public debugger_setBreakpointByUrl(url: string, lineNumber: number, columnNumber: number, condition: string, ignoreCount: number): Promise<WebKitProtocol.Debugger.SetBreakpointByUrlResponse> {
457454
let that = this;
458455
var requestParams = {
459456
type: 'script',
460457
target: that.inspectorUrlToV8Name(url),
461458
line: lineNumber,
462459
column: columnNumber,
463-
condition: condition
460+
condition: condition,
461+
ignoreCount: ignoreCount
464462
};
465463

466464
return this.request("setbreakpoint", requestParams)

src/debug-adapter/connection/iosConnection.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -178,8 +178,8 @@ export class IosConnection implements INSDebugConnection {
178178
return this.sendMessage('Debugger.setBreakpoint', <WebKitProtocol.Debugger.SetBreakpointParams>{ location, options: { condition: condition }});
179179
}
180180

181-
public debugger_setBreakpointByUrl(url: string, lineNumber: number, columnNumber: number, condition?: string): Promise<WebKitProtocol.Debugger.SetBreakpointByUrlResponse> {
182-
return this.sendMessage('Debugger.setBreakpointByUrl', <WebKitProtocol.Debugger.SetBreakpointByUrlParams>{ url: url, lineNumber: lineNumber, columnNumber: 0 /* a columnNumber different from 0 confuses the debugger */, options: { condition: condition }});
181+
public debugger_setBreakpointByUrl(url: string, lineNumber: number, columnNumber: number, condition: string, ignoreCount: number): Promise<WebKitProtocol.Debugger.SetBreakpointByUrlResponse> {
182+
return this.sendMessage('Debugger.setBreakpointByUrl', <WebKitProtocol.Debugger.SetBreakpointByUrlParams>{ url: url, lineNumber: lineNumber, columnNumber: 0 /* a columnNumber different from 0 confuses the debugger */, options: { condition: condition, ignoreCount: ignoreCount }});
183183
}
184184

185185
public debugger_removeBreakpoint(breakpointId: string): Promise<WebKitProtocol.Response> {

src/debug-adapter/webKitDebugAdapter.ts

+12-2
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ export class WebKitDebugAdapter implements DebugProtocol.IDebugAdapter {
8383
supportsFunctionBreakpoints: false,
8484
supportsConditionalBreakpoints: true,
8585
supportsEvaluateForHovers: false,
86+
supportsHitConditionalBreakpoints: true, // TODO: Not working on Android
8687
exceptionBreakpointFilters: [{
8788
label: 'All Exceptions',
8889
filter: 'all',
@@ -92,7 +93,16 @@ export class WebKitDebugAdapter implements DebugProtocol.IDebugAdapter {
9293
label: 'Uncaught Exceptions',
9394
filter: 'uncaught',
9495
default: true
95-
}]
96+
}],
97+
supportsStepBack: false,
98+
supportsSetVariable: false, // TODO: Check if can be enabled
99+
supportsRestartFrame: false, // TODO: Check if can be enabled
100+
supportsGotoTargetsRequest: false, // TODO: Check if can be enabled
101+
supportsStepInTargetsRequest: false, // TODO: Check if can be enabled
102+
supportsCompletionsRequest: false, // TODO: Check if can be enabled
103+
supportsModulesRequest: false, // TODO: Check if can be enabled
104+
additionalModuleColumns: undefined, // TODO: Check if can be enabled
105+
supportedChecksumAlgorithms: undefined // TODO: Check if can be enabled
96106
}
97107
}
98108

@@ -377,7 +387,7 @@ export class WebKitDebugAdapter implements DebugProtocol.IDebugAdapter {
377387
private _addBreakpoints(url: string, breakpoints: DebugProtocol.ISetBreakpointsArgs): Promise<WebKitProtocol.Debugger.SetBreakpointByUrlResponse[]> {
378388
// Call setBreakpoint for all breakpoints in the script simultaneously
379389
const responsePs = breakpoints.breakpoints
380-
.map((b, i) => this._webKitConnection.debugger_setBreakpointByUrl(url, breakpoints.lines[i], breakpoints.cols ? breakpoints.cols[i] : 0, b.condition));
390+
.map((b, i) => this._webKitConnection.debugger_setBreakpointByUrl(url, breakpoints.lines[i], breakpoints.cols ? breakpoints.cols[i] : 0, b.condition, parseInt(b.hitCondition) || 0));
381391

382392
// Join all setBreakpoint requests to a single promise
383393
return Promise.all(responsePs);

0 commit comments

Comments
 (0)