| Index: components/devtools_bridge/test/android/javatests/src/org/chromium/components/devtools_bridge/ClientSessionTestingHost.java
|
| 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
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..202b477b4b28af50d9a736a51758a061893f1ea8
|
| --- /dev/null
|
| +++ b/components/devtools_bridge/test/android/javatests/src/org/chromium/components/devtools_bridge/ClientSessionTestingHost.java
|
| @@ -0,0 +1,92 @@
|
| +// Copyright 2014 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +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
|
| + * the server it runs its client session on a dedicated thread and proxies all call
|
| + * between them to satisfy theading requirements.
|
| + */
|
| +public class ClientSessionTestingHost {
|
| + 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(
|
| + SessionDependencyFactory factory,
|
| + SignalingReceiver target, SessionBase.Executor targetExecutor,
|
| + String sessionId, String clientSocketName)
|
| + throws IOException {
|
| + mTarget = target;
|
| + mTargetExecutor = targetExecutor;
|
| + mClientExecutor = new LocalSessionBridge.ThreadedExecutor();
|
| +
|
| + mSessionId = sessionId;
|
| + mClientSession = new ClientSession(
|
| + factory,
|
| + mClientExecutor,
|
| + new TargetAdaptor().createProxy(),
|
| + clientSocketName);
|
| + }
|
| +
|
| + public void dispose() {
|
| + mClientExecutor.runSynchronously(new Runnable() {
|
| + @Override
|
| + public void run() {
|
| + mClientSession.dispose();
|
| + }
|
| + });
|
| + }
|
| +
|
| + public void start() {
|
| + mClientExecutor.runSynchronously(new Runnable() {
|
| + @Override
|
| + public void run() {
|
| + mClientSession.start(new RTCConfiguration());
|
| + }
|
| + });
|
| + }
|
| +
|
| + /**
|
| + * 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<String> clientCandidates,
|
| + SessionBase.IceExchangeCallback callback) {
|
| + mTarget.iceExchange(mSessionId, clientCandidates, callback);
|
| + }
|
| + }
|
| +}
|
|
|