Skip to content

Commit 9311f6b

Browse files
committed
prevent getting stuck in debugger paused state
1 parent 80bfa24 commit 9311f6b

File tree

1 file changed

+18
-11
lines changed

1 file changed

+18
-11
lines changed

j2v8-debugger/src/main/java/com/alexii/j2v8debugger/V8Messenger.kt

+18-11
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,14 @@ class V8Messenger(v8: V8): V8InspectorDelegate {
6161
// Check for messages to send to Chrome DevTools
6262
if (chromeMessageQueue.any()) {
6363
val networkPeerManager = NetworkPeerManager.getInstanceOrNull()
64-
for ((k, v) in chromeMessageQueue) {
65-
logger.d(TAG, "Sending chrome $k with $v")
66-
networkPeerManager?.sendNotificationToPeers(k, v)
64+
if (networkPeerManager?.hasRegisteredPeers() != true){
65+
// We can't send messages to chrome if it's not attached (networkPeerManager null) so resume debugger
66+
dispatchMessage(Protocol.Debugger.Resume)
67+
} else {
68+
for ((k, v) in chromeMessageQueue) {
69+
logger.d(TAG, "Sending chrome $k with $v")
70+
networkPeerManager.sendNotificationToPeers(k, v)
71+
}
6772
}
6873
chromeMessageQueue.clear()
6974
}
@@ -119,17 +124,19 @@ class V8Messenger(v8: V8): V8InspectorDelegate {
119124
* to the Chrome DevTools scriptId before passing it through
120125
*/
121126
private fun handleBreakpointResolvedEvent(responseParams: JSONObject?, responseMethod: String?) {
122-
val breakpointResolvedEvent = dtoMapper.convertValue(responseParams, BreakpointResolvedEvent::class.java)
127+
val breakpointResolvedEvent =
128+
dtoMapper.convertValue(responseParams, BreakpointResolvedEvent::class.java)
123129
val location = breakpointResolvedEvent.location
124-
val response = BreakpointResolvedEvent().also {
125-
it.breakpointId = breakpointResolvedEvent.breakpointId
126-
it.location = LocationResponse().also {
127-
it.scriptId = v8ScriptMap[location?.scriptId]
128-
it.lineNumber = location?.lineNumber
129-
it.columnNumber = location?.columnNumber
130+
val response = BreakpointResolvedEvent().also { resolvedEvent ->
131+
resolvedEvent.breakpointId = breakpointResolvedEvent.breakpointId
132+
resolvedEvent.location = LocationResponse().also { locationResponse ->
133+
locationResponse.scriptId = v8ScriptMap[location?.scriptId]
134+
locationResponse.lineNumber = location?.lineNumber
135+
locationResponse.columnNumber = location?.columnNumber
130136
}
131137
}
132-
chromeMessageQueue[responseMethod] = dtoMapper.convertValue(response, JSONObject::class.java)
138+
chromeMessageQueue[responseMethod] =
139+
dtoMapper.convertValue(response, JSONObject::class.java)
133140
}
134141

135142
/**

0 commit comments

Comments
 (0)