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

Side by Side Diff: net/test/android/javatests/src/org/chromium/net/test/EmbeddedTestServerImpl.java

Issue 1465383003: [Android] Add ChromiumNetTestSupport.apk for the java EmbeddedTestServer. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: +landmine for GN Created 5 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 package org.chromium.net.test;
6
7 import android.os.Handler;
8 import android.os.HandlerThread;
9
10 import org.chromium.base.Log;
11 import org.chromium.base.annotations.CalledByNative;
12 import org.chromium.base.annotations.JNINamespace;
13 import org.chromium.base.test.library_loader.TestLibraryLoader;
14
15 import java.util.concurrent.Callable;
16 import java.util.concurrent.ExecutionException;
17 import java.util.concurrent.FutureTask;
18 import java.util.concurrent.atomic.AtomicInteger;
19
20 /**
21 * Java bindings for running a net::test_server::EmbeddedTestServer.
22 *
23 * This should not be used directly. Use {@link EmbeddedTestServer} instead.
24 */
25 @JNINamespace("net::test_server")
26 public class EmbeddedTestServerImpl extends IEmbeddedTestServerImpl.Stub {
27 private static final String TAG = "cr_TestServer";
28
29 private static AtomicInteger sCount = new AtomicInteger();
30
31 private Handler mHandler;
32 private HandlerThread mHandlerThread;
33 private long mNativeEmbeddedTestServer;
34
35 /** Create an uninitialized EmbeddedTestServer. */
36 public EmbeddedTestServerImpl() {}
37
38 private <V> V runOnHandlerThread(Callable<V> c) {
39 FutureTask<V> t = new FutureTask<V>(c);
40 mHandler.post(t);
41 try {
42 return t.get();
43 } catch (ExecutionException e) {
44 Log.e(TAG, "Exception raised from native EmbeddedTestServer", e);
45 } catch (InterruptedException e) {
46 Log.e(TAG, "Interrupted while waiting for native EmbeddedTestServer" , e);
47 }
48 return null;
49 }
50
51 /** Initialize the native EmbeddedTestServer object. */
52 @Override
53 public void initializeNative() {
54 TestLibraryLoader.loadLibraries();
55
56 mHandlerThread = new HandlerThread("EmbeddedTestServer" + sCount.getAndI ncrement());
57 mHandlerThread.start();
58 mHandler = new Handler(mHandlerThread.getLooper());
59
60 runOnHandlerThread(new Callable<Void>() {
61 @Override
62 public Void call() {
63 if (mNativeEmbeddedTestServer == 0) nativeInit();
64 assert mNativeEmbeddedTestServer != 0;
65 return null;
66 }
67 });
68 }
69
70 /** Starts the server.
71 *
72 * Note that this should be called after handlers are set up, including any relevant calls
73 * serveFilesFromDirectory.
74 *
75 * @return Whether the server was successfully started.
76 */
77 @Override
78 public boolean start() {
79 return runOnHandlerThread(new Callable<Boolean>() {
80 @Override
81 public Boolean call() {
82 return nativeStart(mNativeEmbeddedTestServer);
83 }
84 });
85 }
86
87 /** Serve files from the provided directory.
88 *
89 * @param directoryPath The path of the directory from which files should b e served.
90 */
91 @Override
92 public void serveFilesFromDirectory(final String directoryPath) {
93 runOnHandlerThread(new Callable<Void>() {
94 @Override
95 public Void call() {
96 nativeServeFilesFromDirectory(mNativeEmbeddedTestServer, directo ryPath);
97 return null;
98 }
99 });
100 }
101
102 /** Get the full URL for the given relative URL.
103 *
104 * @param relativeUrl The relative URL for which a full URL should be retur ned.
105 * @return The URL as a String.
106 */
107 @Override
108 public String getURL(final String relativeUrl) {
109 return runOnHandlerThread(new Callable<String>() {
110 @Override
111 public String call() {
112 return nativeGetURL(mNativeEmbeddedTestServer, relativeUrl);
113 }
114 });
115 }
116
117 /** Shut down the server.
118 *
119 * @return Whether the server was successfully shut down.
120 */
121 @Override
122 public boolean shutdownAndWaitUntilComplete() {
123 return runOnHandlerThread(new Callable<Boolean>() {
124 @Override
125 public Boolean call() {
126 return nativeShutdownAndWaitUntilComplete(mNativeEmbeddedTestSer ver);
127 }
128 });
129 }
130
131 /** Destroy the native EmbeddedTestServer object. */
132 @Override
133 public void destroy() {
134 runOnHandlerThread(new Callable<Void>() {
135 @Override
136 public Void call() {
137 assert mNativeEmbeddedTestServer != 0;
138 nativeDestroy(mNativeEmbeddedTestServer);
139 assert mNativeEmbeddedTestServer == 0;
140 return null;
141 }
142 });
143
144 mHandlerThread.quitSafely();
145 try {
146 mHandlerThread.join();
147 } catch (InterruptedException e) {
148 }
149 }
150
151 @CalledByNative
152 private void setNativePtr(long nativePtr) {
153 assert mNativeEmbeddedTestServer == 0;
154 mNativeEmbeddedTestServer = nativePtr;
155 }
156
157 @CalledByNative
158 private void clearNativePtr() {
159 assert mNativeEmbeddedTestServer != 0;
160 mNativeEmbeddedTestServer = 0;
161 }
162
163 private native void nativeInit();
164 private native void nativeDestroy(long nativeEmbeddedTestServerAndroid);
165 private native boolean nativeStart(long nativeEmbeddedTestServerAndroid);
166 private native boolean nativeShutdownAndWaitUntilComplete(long nativeEmbedde dTestServerAndroid);
167 private native String nativeGetURL(long nativeEmbeddedTestServerAndroid, Str ing relativeUrl);
168 private native void nativeServeFilesFromDirectory(
169 long nativeEmbeddedTestServerAndroid, String directoryPath);
170 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698