| Index: components/devtools_bridge/test/android/javatests/src/org/chromium/components/devtools_bridge/LocalTunnelBridge.java
|
| diff --git a/components/devtools_bridge/test/android/javatests/src/org/chromium/components/devtools_bridge/LocalTunnelBridge.java b/components/devtools_bridge/test/android/javatests/src/org/chromium/components/devtools_bridge/LocalTunnelBridge.java
|
| deleted file mode 100644
|
| index c42909f0ae8ea9dd3bb3ff0cc0a0dfeb7bf2f21c..0000000000000000000000000000000000000000
|
| --- a/components/devtools_bridge/test/android/javatests/src/org/chromium/components/devtools_bridge/LocalTunnelBridge.java
|
| +++ /dev/null
|
| @@ -1,190 +0,0 @@
|
| -// Copyright 2014 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -package org.chromium.components.devtools_bridge;
|
| -
|
| -import android.util.Log;
|
| -
|
| -import java.io.IOException;
|
| -import java.nio.ByteBuffer;
|
| -import java.util.concurrent.CountDownLatch;
|
| -
|
| -/**
|
| - * It allows testing DevTools socket tunneling on a single device.
|
| - *
|
| - * SocketTunnelClient opens LocalServerSocket named |socketToExpose| and
|
| - * tunnels all incoming connections to |socketToReplicate| using
|
| - * SocketTunnelServer and DataPipe between them. All data passes through
|
| - * WebRTC data channel but doens't leave the device.
|
| - */
|
| -public class LocalTunnelBridge {
|
| - private static final String TAG = "LocalTunnelBridge";
|
| -
|
| - private final DataPipe mPipe;
|
| - private final SocketTunnelServer mServer;
|
| - private final SocketTunnelClient mClient;
|
| - private boolean mLogPackets = false;
|
| -
|
| - private final CountDownLatch mServerDataChannelOpenedFlag = new CountDownLatch(1);
|
| - private final CountDownLatch mServerDataChannelClosedFlag = new CountDownLatch(1);
|
| -
|
| - public LocalTunnelBridge(String socketToReplicate, String socketToExpose) throws IOException {
|
| - mPipe = new DataPipe();
|
| -
|
| - mServer = new SocketTunnelServer(socketToReplicate) {
|
| - @Override
|
| - protected void onProtocolError(ProtocolError e) {
|
| - throw new RuntimeException("Protocol error on server", e);
|
| - }
|
| -
|
| - @Override
|
| - protected void sendToDataChannel(ByteBuffer packet) {
|
| - if (mLogPackets)
|
| - Log.d(TAG, "Sending " + stringifyServerPacket(packet));
|
| - super.sendToDataChannel(packet);
|
| - }
|
| -
|
| - @Override
|
| - protected void onReceivedDataPacket(int connectionId, byte[] data)
|
| - throws ProtocolError {
|
| - if (mLogPackets) {
|
| - Log.d(TAG, "Received client data packet with " +
|
| - Integer.toString(data.length) + " bytes");
|
| - }
|
| - super.onReceivedDataPacket(connectionId, data);
|
| - }
|
| -
|
| - @Override
|
| - protected void onReceivedControlPacket(int connectionId, byte opCode)
|
| - throws ProtocolError {
|
| - if (mLogPackets) {
|
| - Log.d(TAG, "Received client control packet");
|
| - }
|
| - super.onReceivedControlPacket(connectionId, opCode);
|
| - }
|
| -
|
| - @Override
|
| - protected void onSocketException(IOException e, int connectionId) {
|
| - Log.d(TAG, "Server socket exception on " + e +
|
| - " (connection " + Integer.toString(connectionId) + ")");
|
| - super.onSocketException(e, connectionId);
|
| - }
|
| -
|
| - protected void onDataChannelOpened() {
|
| - Log.d(TAG, "Server data channel opened");
|
| - super.onDataChannelOpened();
|
| - mServerDataChannelOpenedFlag.countDown();
|
| - }
|
| -
|
| - protected void onDataChannelClosed() {
|
| - Log.d(TAG, "Client data channel opened");
|
| - super.onDataChannelClosed();
|
| - mServerDataChannelClosedFlag.countDown();
|
| - }
|
| - };
|
| -
|
| - mServer.bind(mPipe.dataChannel(0));
|
| -
|
| - mClient = new SocketTunnelClient(socketToExpose) {
|
| - @Override
|
| - protected void onProtocolError(ProtocolError e) {
|
| - throw new RuntimeException("Protocol error on client" + e);
|
| - }
|
| -
|
| - @Override
|
| - protected void onReceivedDataPacket(int connectionId, byte[] data)
|
| - throws ProtocolError {
|
| - if (mLogPackets) {
|
| - Log.d(TAG, "Received server data packet with "
|
| - + Integer.toString(data.length) + " bytes");
|
| - }
|
| - super.onReceivedDataPacket(connectionId, data);
|
| - }
|
| -
|
| - @Override
|
| - protected void onReceivedControlPacket(int connectionId, byte opCode)
|
| - throws ProtocolError {
|
| - if (mLogPackets) {
|
| - Log.d(TAG, "Received server control packet");
|
| - }
|
| - super.onReceivedControlPacket(connectionId, opCode);
|
| - }
|
| -
|
| - @Override
|
| - protected void sendToDataChannel(ByteBuffer packet) {
|
| - if (mLogPackets) {
|
| - Log.d(TAG, "Sending " + stringifyClientPacket(packet));
|
| - }
|
| - super.sendToDataChannel(packet);
|
| - }
|
| - };
|
| - mClient.bind(mPipe.dataChannel(1));
|
| - }
|
| -
|
| - public void start() {
|
| - mPipe.connect();
|
| - }
|
| -
|
| - public void stop() {
|
| - mPipe.disconnect();
|
| - }
|
| -
|
| - public void dispose() {
|
| - mClient.unbind();
|
| - mServer.unbind();
|
| - mPipe.dispose();
|
| - }
|
| -
|
| - public void waitAllConnectionsClosed() throws InterruptedException {
|
| - while (mServer.hasConnections() || mClient.hasConnections()) {
|
| - Thread.sleep(50);
|
| - }
|
| - }
|
| -
|
| - private String stringifyDataPacket(String type, PacketDecoder decoder) {
|
| - if (!decoder.isDataPacket()) {
|
| - throw new RuntimeException("Invalid packet");
|
| - }
|
| - return type + "_DATA:" + Integer.toString(decoder.data().length);
|
| - }
|
| -
|
| - private String stringifyClientPacket(ByteBuffer packet) {
|
| - PacketDecoder decoder = decode(packet);
|
| - if (!decoder.isControlPacket())
|
| - return stringifyDataPacket("CLIENT", decoder);
|
| - switch (decoder.opCode()) {
|
| - case SocketTunnelBase.CLIENT_OPEN:
|
| - return "CLIENT_OPEN " + Integer.valueOf(decoder.connectionId());
|
| - case SocketTunnelBase.CLIENT_CLOSE:
|
| - return "CLIENT_CLOSE " + Integer.valueOf(decoder.connectionId());
|
| - default:
|
| - throw new RuntimeException("Invalid packet");
|
| - }
|
| - }
|
| -
|
| - private String stringifyServerPacket(ByteBuffer packet) {
|
| - PacketDecoder decoder = decode(packet);
|
| - if (!decoder.isControlPacket())
|
| - return stringifyDataPacket("SERVER", decoder);
|
| - switch (decoder.opCode()) {
|
| - case SocketTunnelBase.SERVER_OPEN_ACK:
|
| - return "SERVER_OPEN_ACK " + Integer.valueOf(decoder.connectionId());
|
| - case SocketTunnelBase.SERVER_CLOSE:
|
| - return "SERVER_CLOSE " + Integer.valueOf(decoder.connectionId());
|
| - default:
|
| - throw new RuntimeException("Invalid packet");
|
| - }
|
| - }
|
| -
|
| - private PacketDecoder decode(ByteBuffer packet) {
|
| - int position = packet.position();
|
| - packet.position(0);
|
| - if (position == 0) {
|
| - throw new RuntimeException("Empty packet");
|
| - }
|
| - PacketDecoder decoder = PacketDecoder.decode(packet);
|
| - packet.position(position);
|
| - return decoder;
|
| - }
|
| -}
|
|
|