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

Unified Diff: components/cronet/android/sample/javatests/src/org/chromium/cronet_sample_apk/CronetSampleUrlTest.java

Issue 544223003: Add SetSupportsQuic method to explicitly specify server that supports QUIC. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address review comments. Created 6 years, 3 months 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 side-by-side diff with in-line comments
Download patch
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);

Powered by Google App Engine
This is Rietveld 408576698