| Index: net/test/android/javatests/src/org/chromium/net/test/BaseTestServer.java
|
| diff --git a/net/test/android/javatests/src/org/chromium/net/test/BaseTestServer.java b/net/test/android/javatests/src/org/chromium/net/test/BaseTestServer.java
|
| index a9ca6bd6173c71caa9109e36a93fed265bc5ef00..411265ba29503fc18d0bf7aba093f8e95ce4c4a3 100644
|
| --- a/net/test/android/javatests/src/org/chromium/net/test/BaseTestServer.java
|
| +++ b/net/test/android/javatests/src/org/chromium/net/test/BaseTestServer.java
|
| @@ -4,23 +4,61 @@
|
|
|
| package org.chromium.net.test;
|
|
|
| +import android.util.Log;
|
| +
|
| import java.util.concurrent.atomic.AtomicBoolean;
|
|
|
| /** A base class for simple test servers. */
|
| public abstract class BaseTestServer implements Runnable {
|
| + private static final String TAG = "BaseTestServer";
|
| +
|
| private AtomicBoolean mKeepRunning;
|
| + private final Object mLock;
|
| + private boolean mRunning;
|
|
|
| /** Creates a test server. */
|
| public BaseTestServer() {
|
| mKeepRunning = new AtomicBoolean(true);
|
| + mLock = new Object();
|
| }
|
|
|
| /** Accepts incoming connections until stopped via stop(). */
|
| public void run() {
|
| - mKeepRunning.set(true);
|
| + serverHasStarted();
|
| +
|
| + try {
|
| + while (mKeepRunning.get()) {
|
| + accept();
|
| + }
|
| + } finally {
|
| + serverHasStopped();
|
| + }
|
| + }
|
| +
|
| + private void serverHasStopped() {
|
| + synchronized (mLock) {
|
| + mRunning = false;
|
| + mLock.notify();
|
| + }
|
| + }
|
| +
|
| + /** Waits for the server to start. */
|
| + public void waitForServerToStart() {
|
| + synchronized (mLock) {
|
| + while (!mRunning) {
|
| + try {
|
| + mLock.wait();
|
| + } catch (InterruptedException e) {
|
| + Log.e(TAG, "Interrupted while waiting for server to stop: " + e.toString());
|
| + }
|
| + }
|
| + }
|
| + }
|
|
|
| - while (mKeepRunning.get()) {
|
| - accept();
|
| + private void serverHasStarted() {
|
| + synchronized (mLock) {
|
| + mRunning = true;
|
| + mLock.notify();
|
| }
|
| }
|
|
|
|
|