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; |
} |