11package com .tns ;
22
3- import android .content .BroadcastReceiver ;
43import android .content .Context ;
5- import android .content .Intent ;
6- import android .content .IntentFilter ;
7- import android .content .pm .ApplicationInfo ;
8- import android .content .pm .PackageManager .NameNotFoundException ;
9- import android .net .LocalServerSocket ;
10- import android .net .LocalSocket ;
11- import android .os .Bundle ;
12- import android .os .Handler ;
13- import android .os .HandlerThread ;
14-
15- import java .io .BufferedReader ;
16- import java .io .Closeable ;
17- import java .io .File ;
4+ import android .util .Log ;
5+
186import java .io .IOException ;
19- import java .io .InputStreamReader ;
20- import java .io .OutputStream ;
21- import java .io .UnsupportedEncodingException ;
22- import java .util .ArrayList ;
23- import java .util .NoSuchElementException ;
24- import java .util .Scanner ;
257
268import fi .iki .elonen .NanoHTTPD ;
279import fi .iki .elonen .NanoWSD ;
@@ -32,6 +14,11 @@ public class AndroidJsV8Inspector
3214 private Logger logger ;
3315 private Context context ;
3416
17+ protected native final void init ();
18+ protected native final void connect (Object connection );
19+ protected native final void disconnect ();
20+ protected native final void dispatchMessage (String message );
21+
3522
3623 public AndroidJsV8Inspector (Context context , Logger logger )
3724 {
@@ -44,21 +31,35 @@ public void start() throws IOException
4431 if (this .server == null )
4532 {
4633 this .server = new JsV8InspectorServer (context .getPackageName () + "-inspectorServer" );
47- this .server .start ();
34+ this .server .start (-1 );
35+
36+ init ();
4837 }
4938 }
5039
40+ private static void send (Object connection , String payload ) throws IOException
41+ {
42+ ((JsV8InspectorWebSocket )connection ).send (payload );
43+ }
44+
5145 class JsV8InspectorServer extends NanoWSD
5246 {
5347 public JsV8InspectorServer (String name )
5448 {
5549 super (name );
5650 }
5751
52+ @ Override
53+ protected Response serveHttp (IHTTPSession session )
54+ {
55+ Log .d ("{N}.v8-inspector" , "http request for " + session .getUri ());
56+ return super .serveHttp (session );
57+ }
58+
5859 @ Override
5960 protected WebSocket openWebSocket (IHTTPSession handshake )
6061 {
61- return null ;
62+ return new JsV8InspectorWebSocket ( handshake ) ;
6263 }
6364 }
6465
@@ -73,33 +74,43 @@ public JsV8InspectorWebSocket(NanoHTTPD.IHTTPSession handshakeRequest)
7374 @ Override
7475 protected void onOpen ()
7576 {
76-
77+ Log .d ("V8Inspector" , "onOpen" );
78+ connect (this );
7779 }
7880
7981 @ Override
8082 protected void onClose (NanoWSD .WebSocketFrame .CloseCode code , String reason , boolean initiatedByRemote )
8183 {
82-
84+ Log .d ("V8Inspector" , "onClose" );
85+ disconnect ();
8386 }
8487
8588 @ Override
8689 protected void onMessage (NanoWSD .WebSocketFrame message )
8790 {
91+ Log .d ("V8Inspector" , "onMessage" );
92+ Log .d ("V8Inspector" , "onMessage TextPayload" + message .getTextPayload ());
93+ dispatchMessage (message .getTextPayload ());
94+ }
8895
96+ @ Override
97+ public void send (String payload ) throws IOException
98+ {
99+ Log .d ("V8Inspector" , "send " + payload );
100+ super .send (payload );
89101 }
90102
91103 @ Override
92104 protected void onPong (NanoWSD .WebSocketFrame pong )
93105 {
94-
106+ Log . d ( "V8Inspector" , "onPong" );
95107 }
96108
97109 @ Override
98110 protected void onException (IOException exception )
99111 {
100-
112+ exception .printStackTrace ();
113+ disconnect ();
101114 }
102115 }
103-
104-
105116}
0 commit comments