diff --git a/components/devtools_bridge/test/android/javatests/src/org/chromium/components/devtools_bridge/ClientSessionTestingHost.java b/components/devtools_bridge/test/android/javatests/src/org/chromium/components/devtools_bridge/ClientSessionTestingHost.java index 202b477b4b28..34d71f176e87 100644 --- a/components/devtools_bridge/test/android/javatests/src/org/chromium/components/devtools_bridge/ClientSessionTestingHost.java +++ b/components/devtools_bridge/test/android/javatests/src/org/chromium/components/devtools_bridge/ClientSessionTestingHost.java @@ -5,7 +5,6 @@ package org.chromium.components.devtools_bridge; import java.io.IOException; -import java.util.List; /** * Helper class which handles a client session in tests. Having direct reference to @@ -13,11 +12,12 @@ * between them to satisfy theading requirements. */ public class ClientSessionTestingHost { + private static final String SESSION_ID = "ID"; + private final SignalingReceiver mTarget; private final SessionBase.Executor mTargetExecutor; private final LocalSessionBridge.ThreadedExecutor mClientExecutor; private final String mSessionId; - private int mDelayMs = 10; private final ClientSession mClientSession; public ClientSessionTestingHost( @@ -30,10 +30,14 @@ public ClientSessionTestingHost( mClientExecutor = new LocalSessionBridge.ThreadedExecutor(); mSessionId = sessionId; + + SignalingReceiverProxy proxy = new SignalingReceiverProxy( + mTargetExecutor, mClientExecutor, target, 0); + mClientSession = new ClientSession( factory, mClientExecutor, - new TargetAdaptor().createProxy(), + proxy.asServerSession(SESSION_ID), clientSocketName); } @@ -54,39 +58,4 @@ public void run() { } }); } - - /** - * Adapts ServerSessionInterface to DevToolsBridgeServer. Lives on mServerExecutor. - */ - private class TargetAdaptor implements SessionBase.ServerSessionInterface { - /** - * Creates proxy that to safely use on mClientExecutor. - */ - public LocalSessionBridge.ServerSessionProxy createProxy() { - LocalSessionBridge.ServerSessionProxy proxy = - new LocalSessionBridge.ServerSessionProxy( - mTargetExecutor, mClientExecutor, this, mDelayMs); - assert proxy.clientExecutor() == mClientExecutor; - assert proxy.serverExecutor() == mTargetExecutor; - return proxy; - } - - @Override - public void startSession(RTCConfiguration config, - String offer, - SessionBase.NegotiationCallback callback) { - mTarget.startSession(mSessionId, config, offer, callback); - } - - @Override - public void renegotiate(String offer, SessionBase.NegotiationCallback callback) { - mTarget.renegotiate(mSessionId, offer, callback); - } - - @Override - public void iceExchange(List clientCandidates, - SessionBase.IceExchangeCallback callback) { - mTarget.iceExchange(mSessionId, clientCandidates, callback); - } - } } diff --git a/components/devtools_bridge/test/android/javatests/src/org/chromium/components/devtools_bridge/LocalSessionBridge.java b/components/devtools_bridge/test/android/javatests/src/org/chromium/components/devtools_bridge/LocalSessionBridge.java index 8ea5c25635ad..ac91ffc4d2e9 100644 --- a/components/devtools_bridge/test/android/javatests/src/org/chromium/components/devtools_bridge/LocalSessionBridge.java +++ b/components/devtools_bridge/test/android/javatests/src/org/chromium/components/devtools_bridge/LocalSessionBridge.java @@ -7,7 +7,6 @@ import android.util.Log; import java.io.IOException; -import java.util.List; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutionException; import java.util.concurrent.Executors; @@ -277,76 +276,12 @@ public void cancel() { } } - private ServerSessionProxy createServerSessionProxy(SessionBase.ServerSessionInterface proxee) { - return new ServerSessionProxy(mServerExecutor, mClientExecutor, proxee, mDelayMs); - } - - /** - * Helper proxy that binds client and server sessions living on different executors. - * Exchange java objects instead of serialized messages. - */ - public static final class ServerSessionProxy implements SessionBase.ServerSessionInterface { - private static final String SESSION_ID = ""; - private final SignalingReceiverProxy mProxy; - - public ServerSessionProxy( - SessionBase.Executor serverExecutor, SessionBase.Executor clientExecutor, - SessionBase.ServerSessionInterface proxee, int delayMs) { - mProxy = new SignalingReceiverProxy( - serverExecutor, clientExecutor, new ServerSessionAdaptor(proxee), delayMs); - } - - public SessionBase.Executor serverExecutor() { - return mProxy.serverExecutor(); - } - - public SessionBase.Executor clientExecutor() { - return mProxy.clientExecutor(); - } - - @Override - public void startSession( - RTCConfiguration config, String offer, SessionBase.NegotiationCallback callback) { - mProxy.startSession(SESSION_ID, config, offer, callback); - } - - @Override - public void renegotiate(String offer, SessionBase.NegotiationCallback callback) { - mProxy.renegotiate(SESSION_ID, offer, callback); - } + private SessionBase.ServerSessionInterface createServerSessionProxy( + SessionBase.ServerSessionInterface serverSession) { + String sessionId = ""; - @Override - public void iceExchange( - List clientCandidates, SessionBase.IceExchangeCallback callback) { - mProxy.iceExchange(SESSION_ID, clientCandidates, callback); - } - } - - private static final class ServerSessionAdaptor implements SignalingReceiver { - private final SessionBase.ServerSessionInterface mAdaptee; - - public ServerSessionAdaptor(SessionBase.ServerSessionInterface adaptee) { - mAdaptee = adaptee; - } - - @Override - public void startSession( - String sessionId, RTCConfiguration config, String offer, - SessionBase.NegotiationCallback callback) { - mAdaptee.startSession(config, offer, callback); - } - - @Override - public void renegotiate( - String sessionId, String offer, SessionBase.NegotiationCallback callback) { - mAdaptee.renegotiate(offer, callback); - } - - @Override - public void iceExchange( - String sessionId, List clientCandidates, - SessionBase.IceExchangeCallback callback) { - mAdaptee.iceExchange(clientCandidates, callback); - } + return new SignalingReceiverProxy( + mServerExecutor, mClientExecutor, serverSession, sessionId, mDelayMs) + .asServerSession(sessionId); } } diff --git a/components/devtools_bridge/test/android/javatests/src/org/chromium/components/devtools_bridge/SignalingReceiverProxy.java b/components/devtools_bridge/test/android/javatests/src/org/chromium/components/devtools_bridge/SignalingReceiverProxy.java index 8abd132cf3dd..f57637b05ed0 100644 --- a/components/devtools_bridge/test/android/javatests/src/org/chromium/components/devtools_bridge/SignalingReceiverProxy.java +++ b/components/devtools_bridge/test/android/javatests/src/org/chromium/components/devtools_bridge/SignalingReceiverProxy.java @@ -8,6 +8,8 @@ import org.chromium.components.devtools_bridge.commands.CommandReceiver; import org.chromium.components.devtools_bridge.commands.CommandSender; +import java.util.List; + /** * Helper proxy that binds client and server sessions living on different executors. */ @@ -28,6 +30,17 @@ public SignalingReceiverProxy( mDelayMs = delayMs; } + public SignalingReceiverProxy( + SessionBase.Executor serverExecutor, + SessionBase.Executor clientExecutor, + SessionBase.ServerSessionInterface serverSession, + String sessionId, + int delayMs) { + this(serverExecutor, clientExecutor, + new SignalingReceiverAdaptor(serverSession, sessionId), + delayMs); + } + public SessionBase.Executor serverExecutor() { return mServerExecutor; } @@ -53,4 +66,72 @@ public void run() { } }); } + + public SessionBase.ServerSessionInterface asServerSession(String sessionId) { + return new ServerSessionAdapter(this, sessionId); + } + + private static final class ServerSessionAdapter implements SessionBase.ServerSessionInterface { + private final SignalingReceiver mAdaptee; + private final String mSessionId; + + public ServerSessionAdapter(SignalingReceiver adaptee, String sessionId) { + mAdaptee = adaptee; + mSessionId = sessionId; + } + + @Override + public void startSession( + RTCConfiguration config, String offer, SessionBase.NegotiationCallback callback) { + mAdaptee.startSession(mSessionId, config, offer, callback); + } + + @Override + public void renegotiate(String offer, SessionBase.NegotiationCallback callback) { + mAdaptee.renegotiate(mSessionId, offer, callback); + } + + @Override + public void iceExchange( + List clientCandidates, SessionBase.IceExchangeCallback callback) { + mAdaptee.iceExchange(mSessionId, clientCandidates, callback); + } + } + + private static final class SignalingReceiverAdaptor implements SignalingReceiver { + private final SessionBase.ServerSessionInterface mAdaptee; + private final String mSessionId; + + public SignalingReceiverAdaptor( + SessionBase.ServerSessionInterface adaptee, String sessionId) { + mAdaptee = adaptee; + mSessionId = sessionId; + } + + @Override + public void startSession( + String sessionId, RTCConfiguration config, String offer, + SessionBase.NegotiationCallback callback) { + if (mSessionId.equals(sessionId)) { + mAdaptee.startSession(config, offer, callback); + } + } + + @Override + public void renegotiate( + String sessionId, String offer, SessionBase.NegotiationCallback callback) { + if (mSessionId.equals(sessionId)) { + mAdaptee.renegotiate(offer, callback); + } + } + + @Override + public void iceExchange( + String sessionId, List clientCandidates, + SessionBase.IceExchangeCallback callback) { + if (mSessionId.equals(sessionId)) { + mAdaptee.iceExchange(clientCandidates, callback); + } + } + } }