Upstream version 11.40.271.0
[platform/framework/web/crosswalk.git] / src / components / cronet / android / test / javatests / src / org / chromium / cronet_test_apk / TestHttpUrlRequestListener.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_test_apk;
6
7 import android.os.ConditionVariable;
8 import android.util.Log;
9
10 import org.chromium.net.HttpUrlRequest;
11 import org.chromium.net.HttpUrlRequestListener;
12
13 import java.util.List;
14 import java.util.Map;
15
16 /**
17  * A HttpUrlRequestListener that saves the response from a HttpUrlRequest.
18  * This class is used in testing.
19  */
20
21 public class TestHttpUrlRequestListener implements HttpUrlRequestListener {
22     public static final String TAG = "TestHttpUrlRequestListener";
23
24     public int mHttpStatusCode = 0;
25     public String mHttpStatusText;
26     public String mNegotiatedProtocol;
27     public String mUrl;
28     public byte[] mResponseAsBytes;
29     public String mResponseAsString;
30     public Exception mException;
31     public Map<String, List<String>> mResponseHeaders;
32
33     private ConditionVariable mComplete = new ConditionVariable();
34
35     public TestHttpUrlRequestListener() {
36     }
37
38     @Override
39     public void onResponseStarted(HttpUrlRequest request) {
40         Log.i(TAG, "****** Response Started, content length is "
41                 + request.getContentLength());
42         Log.i(TAG, "*** Headers Are *** " + request.getAllHeaders());
43         mHttpStatusCode = request.getHttpStatusCode();
44         mNegotiatedProtocol = request.getNegotiatedProtocol();
45         mHttpStatusText = request.getHttpStatusText();
46     }
47
48     @Override
49     public void onRequestComplete(HttpUrlRequest request) {
50         mUrl = request.getUrl();
51         // mHttpStatusCode and mResponseHeaders are available in
52         // onResponseStarted. However when redirects are disabled,
53         // onResponseStarted is not invoked.
54         Exception exception = request.getException();
55         if (exception != null && exception.getMessage().equals("Request failed "
56                 + "because there were too many redirects or redirects have "
57                 + "been disabled")) {
58             mHttpStatusCode = request.getHttpStatusCode();
59             mResponseHeaders = request.getAllHeaders();
60         }
61         mResponseAsBytes = request.getResponseAsBytes();
62         mResponseAsString = new String(mResponseAsBytes);
63         mException = request.getException();
64         mComplete.open();
65         Log.i(TAG, "****** Request Complete, status code is "
66                 + request.getHttpStatusCode());
67     }
68
69     /**
70      * Blocks until the request completes.
71      */
72     public void blockForComplete() {
73         mComplete.block();
74     }
75
76     public void resetComplete() {
77         mComplete.close();
78     }
79 }