Chromium Code Reviews| Index: components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/CronetUrlTest.java |
| diff --git a/components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/CronetUrlTest.java b/components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/CronetUrlTest.java |
| index ddf3df18dea26263919fe27dca4ffa2ca70558ec..d244660599da0a86948f1e85f6034a58ed850c90 100644 |
| --- a/components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/CronetUrlTest.java |
| +++ b/components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/CronetUrlTest.java |
| @@ -6,9 +6,12 @@ package org.chromium.cronet_test_apk; |
| import android.os.ConditionVariable; |
| +import android.os.Environment; |
| import android.test.suitebuilder.annotation.SmallTest; |
| +import android.util.Log; |
| import org.chromium.base.test.util.Feature; |
| +import org.chromium.net.ChromiumUrlRequest; |
| import org.chromium.net.HttpUrlRequest; |
| import org.chromium.net.HttpUrlRequestFactoryConfig; |
| import org.chromium.net.HttpUrlRequestListener; |
| @@ -94,27 +97,44 @@ public class CronetUrlTest extends CronetTestBase { |
| assertTrue(!file.exists()); |
| } |
| - class BadHttpUrlRequestListener implements HttpUrlRequestListener { |
| - static final String THROW_TAG = "BadListener"; |
| + class SimpleHttpUrlRequestListener implements HttpUrlRequestListener { |
| ConditionVariable mComplete = new ConditionVariable(); |
| + public String negotiatedProtocol; |
| + public int httpStatusCode = 0; |
| - public BadHttpUrlRequestListener() { |
| + public SimpleHttpUrlRequestListener() { |
| } |
| @Override |
| public void onResponseStarted(HttpUrlRequest request) { |
| - throw new NullPointerException(THROW_TAG); |
| + negotiatedProtocol = request.getNegotiatedProtocol(); |
| + httpStatusCode = request.getHttpStatusCode(); |
| } |
| @Override |
| public void onRequestComplete(HttpUrlRequest request) { |
| mComplete.open(); |
| - throw new NullPointerException(THROW_TAG); |
| } |
| public void blockForComplete() { |
| mComplete.block(); |
| } |
| + |
| + public void resetComplete() { |
| + mComplete.close(); |
| + } |
| + } |
| + |
| + class BadHttpUrlRequestListener extends SimpleHttpUrlRequestListener { |
| + static final String THROW_TAG = "BadListener"; |
| + |
| + public BadHttpUrlRequestListener() { |
| + } |
| + |
| + @Override |
| + public void onResponseStarted(HttpUrlRequest request) { |
| + throw new NullPointerException(THROW_TAG); |
| + } |
| } |
| @SmallTest |
| @@ -167,6 +187,60 @@ public class CronetUrlTest extends CronetTestBase { |
| @SmallTest |
| @Feature({"Cronet"}) |
| + public void disabled_testQuicLoadUrl() throws Exception { |
| + HttpUrlRequestFactoryConfig config = new HttpUrlRequestFactoryConfig(); |
| + // TODO(mef): Test Quic end-to-end using local QUIC server. |
| + String quicURL = "https://www.google.com:443"; |
| + String quicNegotiatedProtocol = "quic/1+spdy/3"; |
| + config.enableQUIC(true); |
| + config.addQuicHint("www.google.com", 443, 443); |
| + |
| + String[] commandLineArgs = { |
| + CronetTestActivity.CONFIG_KEY, config.toString() }; |
| + CronetTestActivity activity = |
| + launchCronetTestAppWithUrlAndCommandLineArgs(quicURL, |
| + commandLineArgs); |
| + |
| + // Make sure the activity was created as expected. |
| + assertNotNull(activity); |
| + waitForActiveShellToBeDoneLoading(); |
| + |
| + HashMap<String, String> headers = new HashMap<String, String>(); |
| + SimpleHttpUrlRequestListener listener = |
| + new SimpleHttpUrlRequestListener(); |
| + |
| + String netLogFile = |
| + Environment.getExternalStorageDirectory().getPath() + |
| + "/quic_netlog.json"; |
| + activity.mChromiumRequestFactory.getRequestContext().startNetLogToFile( |
| + netLogFile); |
|
mmenke
2014/09/16 01:51:38
Do we really need to much with NetLog?
mef
2014/09/16 08:44:14
Done.
|
| + |
| + Log.i("Cronet", "**** Starting Net Log to file " + netLogFile); |
| + |
| + // Try several times as first request may not use QUIC. |
|
mmenke
2014/09/16 01:51:38
Add a TODO about getting rid of this as well.
mef
2014/09/16 08:44:14
Done.
|
| + for (int i = 0; i < 10; ++i) { |
| + ChromiumUrlRequest request = |
| + activity.mChromiumRequestFactory.createRequest( |
| + quicURL, |
| + HttpUrlRequest.REQUEST_PRIORITY_MEDIUM, |
| + headers, |
| + listener); |
| + request.start(); |
| + listener.blockForComplete(); |
| + assertEquals(200, listener.httpStatusCode); |
| + if (listener.negotiatedProtocol.equals(quicNegotiatedProtocol)) |
| + break; |
| + |
| + Thread.sleep(1000); |
| + listener.resetComplete(); |
| + } |
| + |
| + activity.mChromiumRequestFactory.getRequestContext().stopNetLog(); |
| + assertEquals(quicNegotiatedProtocol, listener.negotiatedProtocol); |
| + } |
| + |
| + @SmallTest |
| + @Feature({"Cronet"}) |
| public void testLegacyLoadUrl() throws Exception { |
| HttpUrlRequestFactoryConfig config = new HttpUrlRequestFactoryConfig(); |
| config.enableLegacyMode(true); |