| Index: components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/MockURLRequestJobTest.java
|
| diff --git a/components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/MockURLRequestJobTest.java b/components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/MockURLRequestJobTest.java
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..161a02eca6785030419377d8245970991ade1ac9
|
| --- /dev/null
|
| +++ b/components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/MockURLRequestJobTest.java
|
| @@ -0,0 +1,102 @@
|
| +// Copyright 2014 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.cronet_test_apk;
|
| +
|
| +import android.os.ConditionVariable;
|
| +import android.test.suitebuilder.annotation.SmallTest;
|
| +import android.util.Log;
|
| +
|
| +import org.chromium.base.test.util.Feature;
|
| +import org.chromium.net.HttpUrlRequest;
|
| +import org.chromium.net.HttpUrlRequestListener;
|
| +
|
| +import java.util.HashMap;
|
| +
|
| +// Tests that use mock URLRequestJobs to simulate URL requests.
|
| +public class MockURLRequestJobTest extends CronetTestBase {
|
| + private static final String TAG = "MockURLRequestJobTest";
|
| + private static final String MOCK_CRONET_TEST_REDIRECT_URL =
|
| + "http://mock.cronet.redirect/";
|
| + private static final String MOCK_CRONET_TEST_SUCCESS_URL =
|
| + "http://mock.cronet.success/";
|
| + private static final String MOCK_CRONET_TEST_FAILED_URL =
|
| + "http://mock.cronet.failed/";
|
| +
|
| + class MockHttpUrlRequestListener implements HttpUrlRequestListener {
|
| + ConditionVariable mComplete = new ConditionVariable();
|
| + public int mHttpStatusCode = 0;
|
| + public String mUrl;
|
| +
|
| + public MockHttpUrlRequestListener() {
|
| + }
|
| +
|
| + @Override
|
| + public void onResponseStarted(HttpUrlRequest request) {
|
| + Log.i(TAG, "****** Response Started, content length is " +
|
| + request.getContentLength());
|
| + Log.i(TAG, "*** Headers Are *** " + request.getAllHeaders());
|
| + mHttpStatusCode = request.getHttpStatusCode();
|
| + }
|
| +
|
| + public void blockForComplete() {
|
| + mComplete.block();
|
| + }
|
| +
|
| + @Override
|
| + public void onRequestComplete(HttpUrlRequest request) {
|
| + mUrl = request.getUrl();
|
| + mComplete.open();
|
| + Log.i(TAG, "****** Request Complete, status code is " +
|
| + request.getHttpStatusCode());
|
| + }
|
| + }
|
| +
|
| + @SmallTest
|
| + @Feature({"Cronet"})
|
| + public void testRedirectedURLRequest() throws Exception {
|
| + CronetTestActivity activity = launchCronetTestApp();
|
| + // Make sure the activity was created as expected.
|
| + assertNotNull(activity);
|
| +
|
| + HashMap<String, String> headers = new HashMap<String, String>();
|
| + MockHttpUrlRequestListener listener = new MockHttpUrlRequestListener();
|
| +
|
| + HttpUrlRequest request = activity.mChromiumRequestFactory.createRequest(
|
| + MOCK_CRONET_TEST_REDIRECT_URL,
|
| + HttpUrlRequest.REQUEST_PRIORITY_MEDIUM,
|
| + headers,
|
| + listener);
|
| + request.start();
|
| + listener.blockForComplete();
|
| +
|
| + // Currently Cronet does not expose the url after redirect.
|
| + assertEquals(MOCK_CRONET_TEST_REDIRECT_URL, listener.mUrl);
|
| + // Expect the status code is the one after redirect.
|
| + assertEquals(404, listener.mHttpStatusCode);
|
| + }
|
| +
|
| + @SmallTest
|
| + @Feature({"Cronet"})
|
| + public void testFailedURLRequest() throws Exception {
|
| + CronetTestActivity activity = launchCronetTestApp();
|
| + // Make sure the activity was created as expected.
|
| + assertNotNull(activity);
|
| +
|
| + HashMap<String, String> headers = new HashMap<String, String>();
|
| + MockHttpUrlRequestListener listener = new MockHttpUrlRequestListener();
|
| +
|
| + HttpUrlRequest request = activity.mChromiumRequestFactory.createRequest(
|
| + MOCK_CRONET_TEST_FAILED_URL,
|
| + HttpUrlRequest.REQUEST_PRIORITY_MEDIUM,
|
| + headers,
|
| + listener);
|
| + request.start();
|
| + listener.blockForComplete();
|
| +
|
| + // Make sure that the URL is set as expected.
|
| + assertEquals(MOCK_CRONET_TEST_FAILED_URL, listener.mUrl);
|
| + assertEquals(0, listener.mHttpStatusCode);
|
| + }
|
| +}
|
|
|