Index: components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/CronetUrlRequestTest.java |
diff --git a/components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/CronetUrlRequestTest.java b/components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/CronetUrlRequestTest.java |
new file mode 100644 |
index 0000000000000000000000000000000000000000..b499b22be7e35b549fb186230b3ade8101c70b3a |
--- /dev/null |
+++ b/components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/CronetUrlRequestTest.java |
@@ -0,0 +1,96 @@ |
+// 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.cronet_test_apk; |
+ |
+import android.os.ConditionVariable; |
+ |
+import android.test.suitebuilder.annotation.SmallTest; |
+ |
+import org.chromium.base.test.util.Feature; |
+import org.chromium.net.ResponseInfo; |
+import org.chromium.net.UrlRequest; |
+import org.chromium.net.UrlRequestException; |
+import org.chromium.net.UrlRequestListener; |
+ |
+import java.net.URL; |
+import java.nio.ByteBuffer; |
+import java.util.concurrent.ExecutorService; |
+import java.util.concurrent.Executors; |
+ |
+ |
+/** |
+ * Example test that just starts the cronet sample. |
+ */ |
+public class CronetUrlRequestTest extends CronetTestBase { |
+ // URL used for base tests. |
+ private static final String URL = "http://127.0.0.1:8000"; |
+ |
+ class SimpleUrlRequestListener implements UrlRequestListener { |
+ ConditionVariable mComplete = new ConditionVariable(); |
+ public String negotiatedProtocol; |
+ public int httpStatusCode = 0; |
+ public int httpResponseDataLength = 0; |
+ |
+ public SimpleUrlRequestListener() { |
+ } |
+ |
+ @Override |
+ public void onRedirect(UrlRequest request, ResponseInfo info, |
+ URL newLocation) { |
+ } |
+ |
+ @Override |
+ public void onResponseStarted(UrlRequest request, ResponseInfo info) { |
+ negotiatedProtocol = info.getNegotiatedProtocol(); |
+ httpStatusCode = info.getHttpStatusCode(); |
+ } |
+ |
+ @Override |
+ public void onDataReceived(UrlRequest request, |
+ ResponseInfo info, |
+ ByteBuffer byteBuffer) { |
+ httpResponseDataLength += byteBuffer.capacity(); |
+ } |
+ |
+ @Override |
+ public void onComplete(UrlRequest request, ResponseInfo info) { |
+ mComplete.open(); |
+ } |
+ |
+ @Override |
+ public void onError(UrlRequest request, |
+ ResponseInfo info, |
+ UrlRequestException error) { |
+ } |
+ |
+ public void blockForComplete() { |
+ mComplete.block(); |
+ } |
+ |
+ public void resetComplete() { |
+ mComplete.close(); |
+ } |
+ } |
+ |
+ @SmallTest |
+ @Feature({"Cronet"}) |
+ public void testAsync() throws Exception { |
+ CronetTestActivity activity = launchCronetTestAppWithUrl(URL); |
+ |
+ // Make sure the activity was created as expected. |
+ waitForActiveShellToBeDoneLoading(); |
+ |
+ ExecutorService executor = Executors.newFixedThreadPool(4); |
+ SimpleUrlRequestListener listener = new SimpleUrlRequestListener(); |
+ |
+ // Create request. |
+ UrlRequest request = activity.mUrlRequestFactory.createRequest( |
+ URL, listener, executor); |
+ request.start(); |
+ listener.blockForComplete(); |
+ assertEquals(200, listener.httpStatusCode); |
+ assertTrue(listener.httpResponseDataLength != 0); |
+ } |
+} |