1212import java .util .Scanner ;
1313import java .util .concurrent .LinkedBlockingQueue ;
1414
15+ import org .json .JSONException ;
16+ import org .json .JSONObject ;
17+
1518import android .content .BroadcastReceiver ;
1619import android .content .Context ;
1720import android .content .Intent ;
@@ -39,6 +42,8 @@ public class JsDebugger
3942 private static native void debugBreak ();
4043
4144 private static native void sendCommand (byte [] command , int length );
45+
46+ private static native boolean isDebugerActive ();
4247
4348 private ThreadScheduler threadScheduler ;
4449
@@ -75,6 +80,7 @@ private class DebugLocalServerSocketThread extends Thread
7580 private LocalServerSocket serverSocket ;
7681 private ResponseHandler responseHandler ;
7782
83+
7884 public DebugLocalServerSocketThread (String name )
7985 {
8086 this .name = name ;
@@ -118,6 +124,7 @@ public void close() throws IOException
118124 try
119125 {
120126 LocalSocket socket = serverSocket .accept ();
127+
121128 logger .write ("NativeScript Debugger new connection on: " + socket .getFileDescriptor ().toString ());
122129
123130 //out (send messages to node inspector)
@@ -129,6 +136,7 @@ public void close() throws IOException
129136 requestHandler = new RequestHandler (socket , responseHandlerCloseable );
130137 Thread requestThread = new Thread (requestHandler );
131138 requestThread .start ();
139+
132140 requestThread .join ();
133141
134142 this .responseHandler .stop ();
@@ -416,6 +424,68 @@ private void enqueueMessage(String message)
416424 compileMessages .add (message );
417425 }
418426 }
427+
428+ @ RuntimeCallable
429+ private void enqueueConsoleMessage (String text , String level , int lineNumber , int columnNumber , String srcFileName )
430+ {
431+ // var consoleEvent = {
432+ // "seq":0,
433+ // "type":"event",
434+ // "event":"messageAdded",
435+ // "success":true,
436+ // "body":
437+ // {
438+ // "message":
439+ // {
440+ // "source":"console-api",
441+ // "type": "log",
442+ // "level": 'error',
443+ // "line": 0,
444+ // "column": 0,
445+ // "url": "",
446+ // "groupLevel": 7,
447+ // "repeatCount": 1,
448+ // "text": "My message"
449+ // }
450+ // }
451+ // };
452+
453+ try
454+ {
455+ JSONObject consoleMessage = new JSONObject ();
456+ consoleMessage .put ("seq" , 0 );
457+ consoleMessage .put ("type" , "event" );
458+ consoleMessage .put ("event" , "messageAdded" );
459+ consoleMessage .put ("success" , true );
460+
461+
462+ JSONObject message = new JSONObject ();
463+ message .put ("source" , "console-api" );
464+ message .put ("type" , "log" );
465+ message .put ("level" , level );
466+ message .put ("line" , lineNumber );
467+ message .put ("column" , columnNumber );
468+ message .put ("url" , srcFileName );
469+ message .put ("groupLevel" , 7 );
470+ message .put ("repeatCount" , 1 );
471+ message .put ("text" , text );
472+
473+ JSONObject body = new JSONObject ();
474+ body .put ("message" , message );
475+
476+ consoleMessage .put ("body" , body );
477+
478+ String sendingText = consoleMessage .toString ();
479+
480+ Log .d ("TNS.JAVA.JsDebugger" , "Sending console message to inspector:" + sendingText );
481+
482+ dbgMessages .add (sendingText );
483+ }
484+ catch (JSONException e )
485+ {
486+ e .printStackTrace ();
487+ }
488+ }
419489
420490 @ RuntimeCallable
421491 private void enableAgent ()
@@ -541,4 +611,9 @@ public static boolean isDebuggableApp(Context context)
541611 boolean isDebuggableApp = ((flags & ApplicationInfo .FLAG_DEBUGGABLE ) != 0 );
542612 return isDebuggableApp ;
543613 }
614+
615+ public static boolean isJsDebugerActive ()
616+ {
617+ return isDebugerActive ();
618+ }
544619}
0 commit comments