| Index: components/devtools_bridge/android/javatests/src/org/chromium/components/devtools_bridge/tests/DebugService.java
|
| diff --git a/components/devtools_bridge/android/javatests/src/org/chromium/components/devtools_bridge/tests/DebugService.java b/components/devtools_bridge/android/javatests/src/org/chromium/components/devtools_bridge/tests/DebugService.java
|
| index 8d230160c106151ed75e09718f256bce0339f210..57f93f840ec13372a1a2fcd63c46a57cf76a5255 100644
|
| --- a/components/devtools_bridge/android/javatests/src/org/chromium/components/devtools_bridge/tests/DebugService.java
|
| +++ b/components/devtools_bridge/android/javatests/src/org/chromium/components/devtools_bridge/tests/DebugService.java
|
| @@ -13,6 +13,7 @@ import android.os.IBinder;
|
| import android.os.Process;
|
| import android.widget.Toast;
|
|
|
| +import org.chromium.components.devtools_bridge.LocalSessionBridge;
|
| import org.chromium.components.devtools_bridge.LocalTunnelBridge;
|
|
|
| import java.io.IOException;
|
| @@ -22,15 +23,86 @@ import java.io.IOException;
|
| */
|
| public class DebugService extends Service {
|
| private static final String PACKAGE = "org.chromium.components.devtools_bridge.tests";
|
| - public static final String START_ACTION = PACKAGE + ".START_ACTION";
|
| + public static final String START_TUNNEL_BRIDGE_ACTION =
|
| + PACKAGE + ".START_TUNNEL_BRIDGE_ACTION";
|
| + public static final String START_SESSION_BRIDGE_ACTION =
|
| + PACKAGE + ".START_SESSION_BRIDGE_ACTION";
|
| public static final String STOP_ACTION = PACKAGE + ".STOP_ACTION";
|
| private static final int NOTIFICATION_ID = 1;
|
|
|
| - private LocalTunnelBridge mBridge;
|
| + private Controller mRunningController;
|
|
|
| - private LocalTunnelBridge createBridge() throws IOException {
|
| - String exposingSocketName = "webview_devtools_remote_" + Integer.valueOf(Process.myPid());
|
| - return new LocalTunnelBridge("chrome_shell_devtools_remote", exposingSocketName);
|
| + private interface Controller {
|
| + void create() throws IOException;
|
| + void start() throws Exception;
|
| + void stop();
|
| + void dispose();
|
| + }
|
| +
|
| + private String replicatingSocketName() {
|
| + return "chrome_shell_devtools_remote";
|
| + }
|
| +
|
| + private String exposingSocketName() {
|
| + return "webview_devtools_remote_" + Integer.valueOf(Process.myPid());
|
| + }
|
| +
|
| + private class LocalTunnelBridgeController implements Controller {
|
| + private LocalTunnelBridge mBridge;
|
| +
|
| + @Override
|
| + public void create() throws IOException {
|
| + mBridge = new LocalTunnelBridge(replicatingSocketName(), exposingSocketName());
|
| + }
|
| +
|
| + @Override
|
| + public void start() throws Exception {
|
| + mBridge.start();
|
| + }
|
| +
|
| + @Override
|
| + public void stop() {
|
| + mBridge.stop();
|
| + }
|
| +
|
| + @Override
|
| + public void dispose() {
|
| + mBridge.dispose();
|
| + }
|
| +
|
| + @Override
|
| + public String toString() {
|
| + return "LocalTunnelBridge";
|
| + }
|
| + }
|
| +
|
| + private class LocalSessionBridgeController implements Controller {
|
| + private LocalSessionBridge mBridge;
|
| +
|
| + @Override
|
| + public void create() throws IOException {
|
| + mBridge = new LocalSessionBridge(replicatingSocketName(), exposingSocketName());
|
| + }
|
| +
|
| + @Override
|
| + public void start() {
|
| + mBridge.start();
|
| + }
|
| +
|
| + @Override
|
| + public void stop() {
|
| + mBridge.stop();
|
| + }
|
| +
|
| + @Override
|
| + public void dispose() {
|
| + mBridge.dispose();
|
| + }
|
| +
|
| + @Override
|
| + public String toString() {
|
| + return "LocalSessionBridge";
|
| + }
|
| }
|
|
|
| @Override
|
| @@ -38,42 +110,48 @@ public class DebugService extends Service {
|
| if (intent == null) return START_NOT_STICKY;
|
|
|
| String action = intent.getAction();
|
| - if (START_ACTION.equals(action)) {
|
| - return start();
|
| + if (START_TUNNEL_BRIDGE_ACTION.equals(action)) {
|
| + return start(new LocalTunnelBridgeController());
|
| + } else if (START_SESSION_BRIDGE_ACTION.equals(action)) {
|
| + return start(new LocalSessionBridgeController());
|
| } else if (STOP_ACTION.equals(action)) {
|
| return stop();
|
| }
|
| return START_NOT_STICKY;
|
| }
|
|
|
| - private int start() {
|
| - if (mBridge != null)
|
| + private int start(Controller controller) {
|
| + if (mRunningController != null) {
|
| + Toast.makeText(this, "Already started", Toast.LENGTH_SHORT).show();
|
| return START_NOT_STICKY;
|
| + }
|
|
|
| try {
|
| - mBridge = createBridge();
|
| - mBridge.start();
|
| + controller.create();
|
| + controller.start();
|
| } catch (Exception e) {
|
| + e.printStackTrace();
|
| Toast.makeText(this, "Failed to start", Toast.LENGTH_SHORT).show();
|
| - mBridge.dispose();
|
| - mBridge = null;
|
| + controller.dispose();
|
| return START_NOT_STICKY;
|
| }
|
| + mRunningController = controller;
|
|
|
| startForeground(NOTIFICATION_ID, makeForegroundServiceNotification());
|
| - Toast.makeText(this, "Service started", Toast.LENGTH_SHORT).show();
|
| + Toast.makeText(this, controller.toString() + " started", Toast.LENGTH_SHORT).show();
|
| return START_STICKY;
|
| }
|
|
|
| private int stop() {
|
| - if (mBridge == null)
|
| + if (mRunningController == null)
|
| return START_NOT_STICKY;
|
|
|
| - mBridge.stop();
|
| - mBridge.dispose();
|
| - mBridge = null;
|
| + String name = mRunningController.toString();
|
| + mRunningController.stop();
|
| + mRunningController.dispose();
|
| + mRunningController = null;
|
| stopSelf();
|
| - Toast.makeText(this, "Service stopped", Toast.LENGTH_SHORT).show();
|
| + Toast.makeText(this, name + " stopped", Toast.LENGTH_SHORT).show();
|
| return START_NOT_STICKY;
|
| }
|
|
|
|
|