Index: components/devtools_bridge/test/android/javatests/src/org/chromium/components/devtools_bridge/SignalingReceiverProxy.java |
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 8abd132cf3dd16c4f7f3b3b4e470cecfa5ea0f7f..f57637b05ed092d5fce84a564dd9f47204055e1b 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.Command; |
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 @@ final class SignalingReceiverProxy extends CommandSender { |
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 @@ final class SignalingReceiverProxy extends CommandSender { |
} |
}); |
} |
+ |
+ 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<String> 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<String> clientCandidates, |
+ SessionBase.IceExchangeCallback callback) { |
+ if (mSessionId.equals(sessionId)) { |
+ mAdaptee.iceExchange(clientCandidates, callback); |
+ } |
+ } |
+ } |
} |