Upstream version 10.38.222.0
[platform/framework/web/crosswalk.git] / src / components / cronet / android / sample / javatests / src / org / chromium / cronet_sample_apk / CronetSampleUrlTest.java
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.
4
5 package org.chromium.cronet_sample_apk;
6
7 import android.os.ConditionVariable;
8
9 import android.test.suitebuilder.annotation.SmallTest;
10
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;
15
16 import java.io.File;
17 import java.util.HashMap;
18
19 /**
20  * Example test that just starts the cronet sample.
21  */
22 public class CronetSampleUrlTest extends CronetSampleTestBase {
23     // URL used for base tests.
24     private static final String URL = "http://127.0.0.1:8000";
25
26     @SmallTest
27     @Feature({"Cronet"})
28     public void testLoadUrl() throws Exception {
29         CronetSampleActivity activity = launchCronetSampleWithUrl(URL);
30
31         // Make sure the activity was created as expected.
32         assertNotNull(activity);
33
34         waitForActiveShellToBeDoneLoading();
35
36         // Make sure that the URL is set as expected.
37         assertEquals(URL, activity.getUrl());
38         assertEquals(200, activity.getHttpStatusCode());
39     }
40
41     @SmallTest
42     @Feature({"Cronet"})
43     public void testInvalidUrl() throws Exception {
44         CronetSampleActivity activity = launchCronetSampleWithUrl(
45                 "127.0.0.1:8000");
46
47         // Make sure the activity was created as expected.
48         assertNotNull(activity);
49
50         waitForActiveShellToBeDoneLoading();
51
52         // The load should fail.
53         assertEquals(0, activity.getHttpStatusCode());
54     }
55
56     @SmallTest
57     @Feature({"Cronet"})
58     public void testPostData() throws Exception {
59         String[] commandLineArgs = {
60                 CronetSampleActivity.POST_DATA_KEY, "test" };
61         CronetSampleActivity activity =
62                 launchCronetSampleWithUrlAndCommandLineArgs(URL,
63                                                             commandLineArgs);
64
65         // Make sure the activity was created as expected.
66         assertNotNull(activity);
67
68         waitForActiveShellToBeDoneLoading();
69
70         // Make sure that the URL is set as expected.
71         assertEquals(URL, activity.getUrl());
72         assertEquals(200, activity.getHttpStatusCode());
73     }
74
75     @SmallTest
76     @Feature({"Cronet"})
77     public void testNetLog() throws Exception {
78         CronetSampleActivity activity = launchCronetSampleWithUrl(
79                 "127.0.0.1:8000");
80
81         // Make sure the activity was created as expected.
82         assertNotNull(activity);
83
84         waitForActiveShellToBeDoneLoading();
85         File file = File.createTempFile("cronet", "json");
86         activity.mChromiumRequestFactory.getRequestContext().startNetLogToFile(
87                 file.getPath());
88         activity.startWithURL(URL);
89         Thread.sleep(5000);
90         activity.mChromiumRequestFactory.getRequestContext().stopNetLog();
91         assertTrue(file.exists());
92         assertTrue(file.length() != 0);
93         assertTrue(file.delete());
94         assertTrue(!file.exists());
95     }
96
97     class BadHttpUrlRequestListener implements HttpUrlRequestListener {
98         static final String THROW_TAG = "BadListener";
99         ConditionVariable mComplete = new ConditionVariable();
100
101         public BadHttpUrlRequestListener() {
102         }
103
104         @Override
105         public void onResponseStarted(HttpUrlRequest request) {
106             throw new NullPointerException(THROW_TAG);
107         }
108
109         @Override
110         public void onRequestComplete(HttpUrlRequest request) {
111             mComplete.open();
112             throw new NullPointerException(THROW_TAG);
113         }
114
115         public void blockForComplete() {
116             mComplete.block();
117         }
118     }
119
120     @SmallTest
121     @Feature({"Cronet"})
122     public void testCalledByNativeException() throws Exception {
123         CronetSampleActivity activity = launchCronetSampleWithUrl(URL);
124
125         // Make sure the activity was created as expected.
126         assertNotNull(activity);
127
128         waitForActiveShellToBeDoneLoading();
129
130         HashMap<String, String> headers = new HashMap<String, String>();
131         BadHttpUrlRequestListener listener = new BadHttpUrlRequestListener();
132
133         // Create request with null listener to trigger an exception.
134         HttpUrlRequest request = activity.mChromiumRequestFactory.createRequest(
135                 URL, HttpUrlRequest.REQUEST_PRIORITY_MEDIUM, headers, listener);
136         request.start();
137         listener.blockForComplete();
138         assertTrue(request.isCanceled());
139         assertNotNull(request.getException());
140         assertEquals(listener.THROW_TAG, request.getException().getCause().getMessage());
141
142     }
143
144     @SmallTest
145     @Feature({"Cronet"})
146     public void testLegacyLoadUrl() throws Exception {
147         HttpUrlRequestFactoryConfig config = new HttpUrlRequestFactoryConfig();
148         config.enableLegacyMode(true);
149
150         String[] commandLineArgs = {
151                 CronetSampleActivity.CONFIG_KEY, config.toString() };
152         CronetSampleActivity activity =
153                 launchCronetSampleWithUrlAndCommandLineArgs(URL,
154                                                             commandLineArgs);
155
156         // Make sure the activity was created as expected.
157         assertNotNull(activity);
158
159         waitForActiveShellToBeDoneLoading();
160
161         // Make sure that the URL is set as expected.
162         assertEquals(URL, activity.getUrl());
163         assertEquals(200, activity.getHttpStatusCode());
164     }
165 }