Chromium Code Reviews| Index: components/cronet/android/sample/javatests/src/org/chromium/cronet_sample_apk/CronetSampleUrlTest.java |
| diff --git a/components/cronet/android/sample/javatests/src/org/chromium/cronet_sample_apk/CronetSampleUrlTest.java b/components/cronet/android/sample/javatests/src/org/chromium/cronet_sample_apk/CronetSampleUrlTest.java |
| index d1aaafac4994ee4cf1765c043f2bed93aab33d7b..f8c73a977129bcc7a654f32fbc2f64d2cee70b21 100644 |
| --- a/components/cronet/android/sample/javatests/src/org/chromium/cronet_sample_apk/CronetSampleUrlTest.java |
| +++ b/components/cronet/android/sample/javatests/src/org/chromium/cronet_sample_apk/CronetSampleUrlTest.java |
| @@ -6,9 +6,12 @@ package org.chromium.cronet_sample_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 CronetSampleUrlTest extends CronetSampleTestBase { |
| 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,59 @@ public class CronetSampleUrlTest extends CronetSampleTestBase { |
| @SmallTest |
| @Feature({"Cronet"}) |
| + public void testQuicLoadUrl() throws Exception { |
| + HttpUrlRequestFactoryConfig config = new HttpUrlRequestFactoryConfig(); |
| + String quicURL = "https://www.google.com:443"; |
|
mmenke
2014/09/10 18:21:27
Per discussion, we shouldn't be testing with a rem
mef
2014/09/10 20:18:48
Acknowledged. This will require Helen's refactorin
|
| + config.enableQUIC(true); |
| + config.addQuicHint(quicURL, 443); |
| + config.addQuicHint("https://youtube.com:443", 443); |
| + |
| + String[] commandLineArgs = { |
| + CronetSampleActivity.CONFIG_KEY, config.toString() }; |
| + CronetSampleActivity activity = |
| + launchCronetSampleWithUrlAndCommandLineArgs(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); |
| + |
| + Log.i("Cronet", "**** Starting Net Log to file " + netLogFile); |
| + |
| + // Try several times as first request may not use QUIC. |
| + 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("quic/1+spdy/3")) |
| + break; |
| + |
| + Thread.sleep(1000); |
| + listener.resetComplete(); |
| + } |
| + |
| + activity.mChromiumRequestFactory.getRequestContext().stopNetLog(); |
| + assertEquals("quic/1+spdy/3", listener.negotiatedProtocol); |
| + } |
| + |
| + @SmallTest |
| + @Feature({"Cronet"}) |
| public void testLegacyLoadUrl() throws Exception { |
| HttpUrlRequestFactoryConfig config = new HttpUrlRequestFactoryConfig(); |
| config.enableLegacyMode(true); |