1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 package org.chromium.cronet_sample_apk;
7 import android.os.ConditionVariable;
9 import android.test.suitebuilder.annotation.SmallTest;
11 import org.chromium.base.test.util.Feature;
12 import org.chromium.net.HttpUrlRequest;
13 import org.chromium.net.HttpUrlRequestFactoryConfig;
14 import org.chromium.net.HttpUrlRequestListener;
17 import java.util.HashMap;
20 * Example test that just starts the cronet sample.
22 public class CronetSampleUrlTest extends CronetSampleTestBase {
23 // URL used for base tests.
24 private static final String URL = "http://127.0.0.1:8000";
28 public void testLoadUrl() throws Exception {
29 CronetSampleActivity activity = launchCronetSampleWithUrl(URL);
31 // Make sure the activity was created as expected.
32 assertNotNull(activity);
34 waitForActiveShellToBeDoneLoading();
36 // Make sure that the URL is set as expected.
37 assertEquals(URL, activity.getUrl());
38 assertEquals(200, activity.getHttpStatusCode());
43 public void testInvalidUrl() throws Exception {
44 CronetSampleActivity activity = launchCronetSampleWithUrl(
47 // Make sure the activity was created as expected.
48 assertNotNull(activity);
50 waitForActiveShellToBeDoneLoading();
52 // The load should fail.
53 assertEquals(0, activity.getHttpStatusCode());
58 public void testPostData() throws Exception {
59 String[] commandLineArgs = {
60 CronetSampleActivity.POST_DATA_KEY, "test" };
61 CronetSampleActivity activity =
62 launchCronetSampleWithUrlAndCommandLineArgs(URL,
65 // Make sure the activity was created as expected.
66 assertNotNull(activity);
68 waitForActiveShellToBeDoneLoading();
70 // Make sure that the URL is set as expected.
71 assertEquals(URL, activity.getUrl());
72 assertEquals(200, activity.getHttpStatusCode());
77 public void testNetLog() throws Exception {
78 CronetSampleActivity activity = launchCronetSampleWithUrl(
81 // Make sure the activity was created as expected.
82 assertNotNull(activity);
84 waitForActiveShellToBeDoneLoading();
85 File file = File.createTempFile("cronet", "json");
86 activity.mChromiumRequestFactory.getRequestContext().startNetLogToFile(
88 activity.startWithURL(URL);
90 activity.mChromiumRequestFactory.getRequestContext().stopNetLog();
91 assertTrue(file.exists());
92 assertTrue(file.length() != 0);
93 assertTrue(file.delete());
94 assertTrue(!file.exists());
97 class BadHttpUrlRequestListener implements HttpUrlRequestListener {
98 static final String THROW_TAG = "BadListener";
99 ConditionVariable mComplete = new ConditionVariable();
101 public BadHttpUrlRequestListener() {
105 public void onResponseStarted(HttpUrlRequest request) {
106 throw new NullPointerException(THROW_TAG);
110 public void onRequestComplete(HttpUrlRequest request) {
112 throw new NullPointerException(THROW_TAG);
115 public void blockForComplete() {
122 public void testCalledByNativeException() throws Exception {
123 CronetSampleActivity activity = launchCronetSampleWithUrl(URL);
125 // Make sure the activity was created as expected.
126 assertNotNull(activity);
128 waitForActiveShellToBeDoneLoading();
130 HashMap<String, String> headers = new HashMap<String, String>();
131 BadHttpUrlRequestListener listener = new BadHttpUrlRequestListener();
133 // Create request with null listener to trigger an exception.
134 HttpUrlRequest request = activity.mChromiumRequestFactory.createRequest(
135 URL, HttpUrlRequest.REQUEST_PRIORITY_MEDIUM, headers, listener);
137 listener.blockForComplete();
138 assertTrue(request.isCanceled());
139 assertNotNull(request.getException());
140 assertEquals(listener.THROW_TAG, request.getException().getCause().getMessage());
146 public void testLegacyLoadUrl() throws Exception {
147 HttpUrlRequestFactoryConfig config = new HttpUrlRequestFactoryConfig();
148 config.enableLegacyMode(true);
150 String[] commandLineArgs = {
151 CronetSampleActivity.CONFIG_KEY, config.toString() };
152 CronetSampleActivity activity =
153 launchCronetSampleWithUrlAndCommandLineArgs(URL,
156 // Make sure the activity was created as expected.
157 assertNotNull(activity);
159 waitForActiveShellToBeDoneLoading();
161 // Make sure that the URL is set as expected.
162 assertEquals(URL, activity.getUrl());
163 assertEquals(200, activity.getHttpStatusCode());