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

Unified Diff: components/cronet/android/test/javatests/src/org/chromium/net/SdchTest.java

Issue 1085903002: Enable Sdch in Cronet (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: @params -> @param Created 5 years, 8 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/test/javatests/src/org/chromium/net/SdchTest.java
diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/SdchTest.java b/components/cronet/android/test/javatests/src/org/chromium/net/SdchTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..53f30f30920abdea3c33b622cef4c62cf05d05fe
--- /dev/null
+++ b/components/cronet/android/test/javatests/src/org/chromium/net/SdchTest.java
@@ -0,0 +1,143 @@
+// Copyright 2015 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.net;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import org.chromium.base.test.util.Feature;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Tests Sdch support.
+ */
+public class SdchTest extends CronetTestBase {
+ private CronetTestActivity mActivity;
+
+ private void setUp(boolean enableSdch) {
+ UrlRequestContextConfig config = new UrlRequestContextConfig();
+ config.enableSDCH(enableSdch);
+ config.setLibraryName("cronet_tests");
+ String[] commandLineArgs = {CronetTestActivity.CONFIG_KEY, config.toString()};
+ mActivity = launchCronetTestAppWithUrlAndCommandLineArgs(null, commandLineArgs);
+
+ // Registers custom DNS mapping for legacy ChromiumUrlRequestFactory.
+ ChromiumUrlRequestFactory factory = (ChromiumUrlRequestFactory) mActivity.mRequestFactory;
+ long legacyAdapter = factory.getRequestContext().getUrlRequestContextAdapter();
+ assertTrue(legacyAdapter != 0);
+ NativeTestServer.registerHostResolverProc(legacyAdapter, true);
+
+ // Registers custom DNS mapping for CronetUrlRequestContext.
+ CronetUrlRequestContext requestContext =
+ (CronetUrlRequestContext) mActivity.mUrlRequestContext;
+ long adapter = requestContext.getUrlRequestContextAdapter();
+ assertTrue(adapter != 0);
+ NativeTestServer.registerHostResolverProc(adapter, false);
+
+ // Starts NativeTestServer.
+ assertTrue(NativeTestServer.startNativeTestServer(getInstrumentation().getTargetContext()));
+ }
+
+ @Override
+ protected void tearDown() {
+ NativeTestServer.shutdownNativeTestServer();
+ }
+
+ @SmallTest
+ @Feature({"Cronet"})
+ public void testSdchEnabledLegacyAPI() throws Exception {
+ setUp(true);
+ // Make a request to /sdch which advertises the dictionary.
+ TestHttpUrlRequestListener listener1 =
+ startAndWaitForCompleteLegacyAPI(NativeTestServer.getSdchURL() + "/sdch");
+ assertEquals(200, listener1.mHttpStatusCode);
+ assertEquals("The quick brown fox jumps over the lazy dog.\n", listener1.mResponseAsString);
+ assertEquals(Arrays.asList("/sdch/dict/LeQxM80O"),
+ listener1.mResponseHeaders.get("Get-Dictionary"));
+
+ // TODO(xunjieli): Rather than setting an arbitrary delay here, consider
+ // implementing a SdchObserver to watch for dictionary add events once
+ // add event is implemented in SdchObserver.
+ Thread.sleep(5000);
Elly Fong-Jones 2015/04/16 18:43:00 it seems like this test is going to be inherently
xunjieli 2015/04/16 19:36:57 Unfortunately I can't come up with a better soluti
+
+ // Make a request to fetch encoded response at /sdch/test.
+ TestHttpUrlRequestListener listener2 =
+ startAndWaitForCompleteLegacyAPI(NativeTestServer.getSdchURL() + "/sdch/test");
+ assertEquals(200, listener2.mHttpStatusCode);
+ assertEquals("The quick brown fox jumps over the lazy dog.\n", listener2.mResponseAsString);
+ }
+
+ @SmallTest
+ @Feature({"Cronet"})
+ public void testSdchDisabledLegacyAPI() throws Exception {
+ setUp(false);
+ // Make a request to /sdch.
+ // Since Sdch is not enabled, no dictionary should be advertised.
+ TestHttpUrlRequestListener listener1 =
+ startAndWaitForCompleteLegacyAPI(NativeTestServer.getSdchURL() + "/sdch");
+ assertEquals(200, listener1.mHttpStatusCode);
+ assertEquals("The quick brown fox jumps over the lazy dog.\n", listener1.mResponseAsString);
+ assertEquals(null, listener1.mResponseHeaders.get("Get-Dictionary"));
+ }
+
+ @SmallTest
+ @Feature({"Cronet"})
+ public void testSdchEnabled() throws Exception {
+ setUp(true);
+ // Make a request to /sdch which advertises the dictionary.
+ TestUrlRequestListener listener1 =
+ startAndWaitForComplete(NativeTestServer.getSdchURL() + "/sdch");
+ assertEquals(200, listener1.mResponseInfo.getHttpStatusCode());
+ assertEquals("The quick brown fox jumps over the lazy dog.\n", listener1.mResponseAsString);
+ assertEquals(Arrays.asList("/sdch/dict/LeQxM80O"),
+ listener1.mResponseInfo.getAllHeaders().get("Get-Dictionary"));
+
+ // TODO(xunjieli): Rather than setting an arbitrary delay here, consider
+ // implementing a SdchObserver to watch for dictionary add events once
+ // add event is implemented in SdchObserver.
+ Thread.sleep(5000);
+
+ // Make a request to fetch encoded response at /sdch/test.
+ TestUrlRequestListener listener2 =
+ startAndWaitForComplete(NativeTestServer.getSdchURL() + "/sdch/test");
+ assertEquals(200, listener1.mResponseInfo.getHttpStatusCode());
+ assertEquals("The quick brown fox jumps over the lazy dog.\n", listener2.mResponseAsString);
+ }
+
+ @SmallTest
+ @Feature({"Cronet"})
+ public void testSdchDisabled() throws Exception {
+ setUp(false);
+ // Make a request to /sdch.
+ // Since Sdch is not enabled, no dictionary should be advertised.
+ TestUrlRequestListener listener1 =
+ startAndWaitForComplete(NativeTestServer.getSdchURL() + "/sdch");
+ assertEquals(200, listener1.mResponseInfo.getHttpStatusCode());
+ assertEquals("The quick brown fox jumps over the lazy dog.\n", listener1.mResponseAsString);
+ assertEquals(null, listener1.mResponseInfo.getAllHeaders().get("Get-Dictionary"));
+ }
+
+ private TestHttpUrlRequestListener startAndWaitForCompleteLegacyAPI(String url)
+ throws Exception {
+ Map<String, String> headers = new HashMap<String, String>();
+ TestHttpUrlRequestListener listener = new TestHttpUrlRequestListener();
+ HttpUrlRequest request = mActivity.mRequestFactory.createRequest(
+ url, HttpUrlRequest.REQUEST_PRIORITY_MEDIUM, headers, listener);
+ request.start();
+ listener.blockForComplete();
+ return listener;
+ }
+
+ private TestUrlRequestListener startAndWaitForComplete(String url) throws Exception {
+ TestUrlRequestListener listener = new TestUrlRequestListener();
+ UrlRequest request =
+ mActivity.mUrlRequestContext.createRequest(url, listener, listener.getExecutor());
+ request.start();
+ listener.blockForDone();
+ return listener;
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698