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..e4b64f6736c42aabc1472b955b16160a8a7b4ce9 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 |
@@ -9,6 +9,7 @@ import android.os.ConditionVariable; |
import android.test.suitebuilder.annotation.SmallTest; |
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 +95,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 +185,52 @@ 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(); |
+ |
+ // Try several times as first request may not use QUIC. |
+ // TODO(mef): Remove loop after adding http server properties manager. |
+ 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(); |
+ } |
+ |
+ assertEquals(quicNegotiatedProtocol, listener.negotiatedProtocol); |
+ } |
+ |
+ @SmallTest |
+ @Feature({"Cronet"}) |
public void testLegacyLoadUrl() throws Exception { |
HttpUrlRequestFactoryConfig config = new HttpUrlRequestFactoryConfig(); |
config.enableLegacyMode(true); |