1d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi// Copyright 2014 The Chromium Authors. All rights reserved. 2d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi// Use of this source code is governed by a BSD-style license that can be 3d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi// found in the LICENSE file. 4d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 5d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshipackage org.chromium.android_webview; 6d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 7d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshiimport org.chromium.base.CalledByNative; 8d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshiimport org.chromium.base.JNINamespace; 9d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshiimport org.chromium.base.VisibleForTesting; 10d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 11d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshiimport java.io.InputStream; 12d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshiimport java.util.Map; 13d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 14d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi/** 15d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * The response information that is to be returned for a particular resource fetch. 16d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 17dc549d60f98d809f626c99de614960409a847054Takeshi Aimi@JNINamespace("android_webview") 18c7b3ccc564448cb4b918728421f9402bc18278c5Takeshi Aimipublic class AwWebResourceResponse { 19d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi private String mMimeType; 20d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi private String mCharset; 21d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi private InputStream mData; 22d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi private int mStatusCode; 23d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi private String mReasonPhrase; 24d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi private String[] mResponseHeaderNames; 25d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi private String[] mResponseHeaderValues; 26d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 27d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public AwWebResourceResponse(String mimeType, String encoding, InputStream data) { 28d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi mMimeType = mimeType; 29d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi mCharset = encoding; 30d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi mData = data; 31d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi } 32d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 33d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public AwWebResourceResponse(String mimeType, String encoding, InputStream data, 34d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi int statusCode, String reasonPhrase, Map<String, String> responseHeaders) { 35d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi this(mimeType, encoding, data); 36d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 37d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi mStatusCode = statusCode; 38d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi mReasonPhrase = reasonPhrase; 39d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 40d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi if (responseHeaders != null) { 41d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi mResponseHeaderNames = new String[responseHeaders.size()]; 42d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi mResponseHeaderValues = new String[responseHeaders.size()]; 43d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi int i = 0; 44d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi for (Map.Entry<String, String> entry : responseHeaders.entrySet()) { 45d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi mResponseHeaderNames[i] = entry.getKey(); 46d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi mResponseHeaderValues[i] = entry.getValue(); 47d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi i++; 48d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi } 49d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi } 50d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi } 51d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 52d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi @VisibleForTesting 53d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi @CalledByNative 54d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public String getMimeType() { 55d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi return mMimeType; 56d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi } 57d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 58d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi @CalledByNative 59d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi private String getCharset() { 60d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi return mCharset; 61d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi } 62d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 63d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi @VisibleForTesting 64d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi @CalledByNative 65d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public InputStream getData() { 66d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi return mData; 67d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi } 68d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 69d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi @CalledByNative 70d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi private int getStatusCode() { 71d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi return mStatusCode; 72d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi } 73d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 74d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi @CalledByNative 75d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi private String getReasonPhrase() { 76d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi return mReasonPhrase; 77d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi } 78d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 79dc549d60f98d809f626c99de614960409a847054Takeshi Aimi @CalledByNative 80d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi private String[] getResponseHeaderNames() { 81d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi return mResponseHeaderNames; 82d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi } 83d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 84d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi @CalledByNative 85d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi private String[] getResponseHeaderValues() { 86d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi return mResponseHeaderValues; 87d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi } 88d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi} 89d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi