23
23
import fi .iki .elonen .NanoWSD ;
24
24
25
25
class AndroidJsV8Inspector {
26
- private static boolean DEBUG_LOG_ENABLED = false ;
27
-
28
26
private JsV8InspectorServer server ;
29
27
private static String ApplicationDir ;
30
28
private String packageName ;
@@ -43,6 +41,8 @@ class AndroidJsV8Inspector {
43
41
44
42
private final Object debugBrkLock ;
45
43
44
+ private Logger currentRuntimeLogger ;
45
+
46
46
private static AtomicBoolean ReadyToProcessMessages = new AtomicBoolean (false );
47
47
48
48
private LinkedBlockingQueue <String > inspectorMessages = new LinkedBlockingQueue <String >();
@@ -60,10 +60,12 @@ public void start() throws IOException {
60
60
61
61
mainHandler = currentRuntime .getHandler ();
62
62
63
- this .server = new JsV8InspectorServer (this .packageName + "-inspectorServer" );
63
+ currentRuntimeLogger = currentRuntime .getLogger ();
64
+
65
+ this .server = new JsV8InspectorServer (this .packageName + "-inspectorServer" , currentRuntimeLogger );
64
66
this .server .start (-1 );
65
67
66
- if (DEBUG_LOG_ENABLED ) {
68
+ if (currentRuntimeLogger . isEnabled () ) {
67
69
Log .d ("V8Inspector" , "start debugger ThreadId:" + Thread .currentThread ().getId ());
68
70
}
69
71
@@ -158,22 +160,22 @@ private static String getMimeType(String url) {
158
160
// getMimeType may sometime return incorrect results in the context of NativeScript
159
161
// e.g. `.ts` returns video/MP2TS
160
162
switch (extension ) {
161
- case "js" :
162
- type = "text/javascript" ;
163
- break ;
164
- case "json" :
165
- type = "application/json" ;
166
- break ;
167
- case "css" :
168
- type = "text/css" ;
169
- break ;
170
- case "ts" :
171
- type = "text/typescript" ;
172
- break ;
173
- // handle shared libraries so they are marked properly and don't appear in the sources tab
174
- case "so" :
175
- type = "application/binary" ;
176
- break ;
163
+ case "js" :
164
+ type = "text/javascript" ;
165
+ break ;
166
+ case "json" :
167
+ type = "application/json" ;
168
+ break ;
169
+ case "css" :
170
+ type = "text/css" ;
171
+ break ;
172
+ case "ts" :
173
+ type = "text/typescript" ;
174
+ break ;
175
+ // handle shared libraries so they are marked properly and don't appear in the sources tab
176
+ case "so" :
177
+ type = "application/binary" ;
178
+ break ;
177
179
}
178
180
}
179
181
@@ -214,45 +216,38 @@ private void processDebugBreakMessages() {
214
216
}
215
217
216
218
private class JsV8InspectorServer extends NanoWSD {
217
- JsV8InspectorServer (String name ) {
219
+ private Logger currentRuntimeLogger ;
220
+
221
+ JsV8InspectorServer (String name , Logger runtimeLogger ) {
218
222
super (name );
223
+ currentRuntimeLogger = runtimeLogger ;
219
224
}
220
225
221
- private JsV8InspectorWebSocket webSocket ;
222
-
223
226
@ Override
224
227
protected Response serveHttp (IHTTPSession session ) {
225
- if (DEBUG_LOG_ENABLED ) {
228
+ if (currentRuntimeLogger . isEnabled () ) {
226
229
Log .d ("{N}.v8-inspector" , "http request for " + session .getUri ());
227
230
}
228
231
return super .serveHttp (session );
229
232
}
230
233
231
234
@ Override
232
235
protected WebSocket openWebSocket (IHTTPSession handshake ) {
233
- // close the previous webSocket
234
- if (this .webSocket != null ) {
235
- try {
236
- this .webSocket .close (WebSocketFrame .CloseCode .NormalClosure , "New browser connection is open" , false );
237
- } catch (IOException ioException ) {
238
- if (this .webSocket .getState () != State .CLOSED ) {
239
- Log .e ("{N}.v8-inspector" , "Error closing previous connection" , ioException );
240
- }
241
- }
242
- }
243
- this .webSocket = new JsV8InspectorWebSocket (handshake );
244
- return this .webSocket ;
236
+ return new JsV8InspectorWebSocket (handshake , currentRuntimeLogger );
245
237
}
246
238
}
247
239
248
240
private class JsV8InspectorWebSocket extends NanoWSD .WebSocket {
249
- JsV8InspectorWebSocket (NanoHTTPD .IHTTPSession handshakeRequest ) {
241
+ private Logger currentRuntimeLogger ;
242
+
243
+ JsV8InspectorWebSocket (NanoHTTPD .IHTTPSession handshakeRequest , Logger runtimeLogger ) {
250
244
super (handshakeRequest );
245
+ currentRuntimeLogger = runtimeLogger ;
251
246
}
252
247
253
248
@ Override
254
249
protected void onOpen () {
255
- if (DEBUG_LOG_ENABLED ) {
250
+ if (currentRuntimeLogger . isEnabled () ) {
256
251
Log .d ("V8Inspector" , "onOpen: ThreadID: " + Thread .currentThread ().getId ());
257
252
}
258
253
@@ -261,14 +256,14 @@ protected void onOpen() {
261
256
262
257
@ Override
263
258
protected void onClose (NanoWSD .WebSocketFrame .CloseCode code , String reason , boolean initiatedByRemote ) {
264
- if (DEBUG_LOG_ENABLED ) {
259
+ if (currentRuntimeLogger . isEnabled () ) {
265
260
Log .d ("V8Inspector" , "onClose" );
266
261
}
267
262
268
263
mainHandler .post (new Runnable () {
269
264
@ Override
270
265
public void run () {
271
- if (DEBUG_LOG_ENABLED ) {
266
+ if (currentRuntimeLogger . isEnabled () ) {
272
267
Log .d ("V8Inspector" , "Disconnecting" );
273
268
}
274
269
disconnect ();
@@ -278,7 +273,7 @@ public void run() {
278
273
279
274
@ Override
280
275
protected void onMessage (final NanoWSD .WebSocketFrame message ) {
281
- if (DEBUG_LOG_ENABLED ) {
276
+ if (currentRuntimeLogger . isEnabled () ) {
282
277
Log .d ("V8Inspector" , "To dbg backend: " + message .getTextPayload () + " ThreadId:" + Thread .currentThread ().getId ());
283
278
}
284
279
@@ -312,7 +307,7 @@ public void run() {
312
307
313
308
@ Override
314
309
public void send (String payload ) throws IOException {
315
- if (DEBUG_LOG_ENABLED ) {
310
+ if (currentRuntimeLogger . isEnabled () ) {
316
311
Log .d ("V8Inspector" , "To dbg client: " + payload );
317
312
}
318
313
@@ -335,7 +330,10 @@ protected void onPong(NanoWSD.WebSocketFrame pong) {
335
330
336
331
@ Override
337
332
protected void onException (IOException exception ) {
338
- exception .printStackTrace ();
333
+ // when the chrome inspector is disconnected by closing the tab a "Broken pipe" exception is thrown which we don't need to log, only in verbose logging mode
334
+ if (!exception .getMessage ().equals ("Broken pipe" ) || currentRuntimeLogger .isEnabled ()) {
335
+ exception .printStackTrace ();
336
+ }
339
337
disconnect ();
340
338
}
341
339
}
0 commit comments