Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1070)

Unified Diff: components/devtools_bridge/test/android/javatests/src/org/chromium/components/devtools_bridge/DevToolsBridgeServerSandbox.java

Issue 811623005: Refactoring DevToolsBridgeServer. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: components/devtools_bridge/test/android/javatests/src/org/chromium/components/devtools_bridge/DevToolsBridgeServerSandbox.java
diff --git a/components/devtools_bridge/test/android/javatests/src/org/chromium/components/devtools_bridge/DevToolsBridgeServerSandbox.java b/components/devtools_bridge/test/android/javatests/src/org/chromium/components/devtools_bridge/DevToolsBridgeServerSandbox.java
index 3c82610c07579d0497a4d537beb17e2093e526a4..bb1f3480c2375594c935b5b39fd7706eed55a14a 100644
--- a/components/devtools_bridge/test/android/javatests/src/org/chromium/components/devtools_bridge/DevToolsBridgeServerSandbox.java
+++ b/components/devtools_bridge/test/android/javatests/src/org/chromium/components/devtools_bridge/DevToolsBridgeServerSandbox.java
@@ -4,14 +4,11 @@
package org.chromium.components.devtools_bridge;
-import android.content.ComponentName;
import android.content.Context;
-import android.content.Intent;
-import android.content.ServiceConnection;
-import android.os.IBinder;
import android.os.Process;
import android.util.Log;
-import android.widget.Toast;
+
+import org.chromium.components.devtools_bridge.util.LooperExecutor;
import java.io.IOException;
@@ -20,83 +17,51 @@ import java.io.IOException;
*/
public class DevToolsBridgeServerSandbox {
private static final String TAG = "DevToolsBridgeServerSandbox";
- private Context mContext;
+ private static final String SERVER_SOCKET_NAME = "chrome_shell_devtools_remote";
- private final ServiceConnection mServiceConnection = new ServiceConnection() {
- @Override
- public void onServiceConnected(ComponentName name, IBinder service) {
- mBinder = ((LocalBindingTestService.LocalBinder) service);
- startInternal();
- }
-
- @Override
- public void onServiceDisconnected(ComponentName name) {
- stopInternal();
- mBinder = null;
- }
- };
-
- private LocalBindingTestService.LocalBinder mBinder;
-
- /**
- * Service for hosting DevToolsBridgeServer in manual tests which exposes
- * Chrome Shell DevTools socket.
- */
- public static class Service extends LocalBindingTestService {
- public Service() {
- super("chrome_shell_devtools_remote");
- }
- }
+ private Context mContext;
+ private LooperExecutor mExecutor;
+ private DevToolsBridgeServer mServer;
+ private SessionDependencyFactory mFactory;
+ private ClientSessionTestingHost mClientSession1;
+ private ClientSessionTestingHost mClientSession2;
public void start(Context context) {
assert mContext == null;
mContext = context;
- Intent intent = new Intent(mContext, Service.class);
- mContext.bindService(
- intent, mServiceConnection, Context.BIND_DEBUG_UNBIND | Context.BIND_AUTO_CREATE);
- }
-
- public void stop() throws SecurityException {
- mContext.unbindService(mServiceConnection);
- mContext = null;
- }
+ mExecutor = LooperExecutor.newInstanceForMainLooper(mContext);
+ mServer = new DevToolsBridgeServer(new ServerDelegate(context));
- private SessionDependencyFactory mFactory;
- private ClientSessionTestingHost mClientSession1;
- private ClientSessionTestingHost mClientSession2;
-
- private void startInternal() {
- Log.d(TAG, "Service connected. Starting client sessions");
- Toast.makeText(mContext, "Connected to the service", Toast.LENGTH_SHORT).show();
+ mFactory = SessionDependencyFactory.newInstance();
+ String pid = Integer.toString(Process.myPid());
+ mClientSession1 = createSession("Session 1", "webview_devtools_remote_" + Process.myPid());
+ mClientSession2 = createSession("Session 2", "chrome_devtools_remote_" + Process.myPid());
- createConnections();
mClientSession1.start();
mClientSession2.start();
}
- private void createConnections() {
- assert mClientSession1 == null;
- assert mClientSession2 == null;
- mFactory = SessionDependencyFactory.newInstance();
+ public void stop() {
+ mClientSession1.dispose();
+ mClientSession2.dispose();
+ mFactory.dispose();
+ mClientSession1 = null;
+ mClientSession2 = null;
+ mFactory = null;
+ mServer.dispose();
+ mServer = null;
+ mContext = null;
+ }
- String pid = Integer.toString(Process.myPid());
+ private ClientSessionTestingHost createSession(String sessionId, String socketName) {
try {
- mClientSession1 = createSessionHost(
- "Session 1", "webview_devtools_remote_" + pid);
- mClientSession2 = createSessionHost(
- "Session 2", "chrome_devtools_remote_" + pid);
+ return new ClientSessionTestingHost(
+ mFactory, mServer, mExecutor, sessionId, socketName);
} catch (IOException e) {
- e.printStackTrace();
- Log.d(TAG, "Failed to start client sessions");
+ throw new RuntimeException(e);
}
}
- private ClientSessionTestingHost createSessionHost(String sessionId, String socketName)
- throws IOException {
- return new ClientSessionTestingHost(
- mFactory, mBinder.getReceiver(), mBinder.createExecutor(), sessionId, socketName);
- }
-
private void stopInternal() {
Log.d(TAG, "Service disconnected. Stopping client sessions");
mClientSession1.dispose();
@@ -106,4 +71,27 @@ public class DevToolsBridgeServerSandbox {
mClientSession2 = null;
mFactory = null;
}
+
+ private static class ServerDelegate implements DevToolsBridgeServer.Delegate {
+ private Context mContext;
+
+ public ServerDelegate(Context context) {
+ mContext = context;
+ }
+
+ @Override
+ public Context getContext() {
+ return mContext;
+ }
+
+ @Override
+ public void onSessionCountChange(int sessionCount) {
+ Log.i(TAG, sessionCount + " active session");
+ }
+
+ @Override
+ public void querySocketName(DevToolsBridgeServer.QuerySocketCallback callback) {
+ callback.onSuccess(SERVER_SOCKET_NAME);
+ }
+ }
}

Powered by Google App Engine
This is Rietveld 408576698