Skip to content

Commit eb8516f

Browse files
committed
working communication across Chrome and v8 inspector
1 parent dcced93 commit eb8516f

10 files changed

Lines changed: 642 additions & 302 deletions

File tree

test-app/app/src/debug/java/com/tns/AndroidJsV8Inspector.java renamed to runtime/src/main/java/com/tns/AndroidJsV8Inspector.java

Lines changed: 39 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,9 @@
11
package com.tns;
22

3-
import android.content.BroadcastReceiver;
43
import 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+
186
import 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

268
import fi.iki.elonen.NanoHTTPD;
279
import 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

Comments
 (0)