Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(544)

Unified Diff: components/cronet/android/java/src/org/chromium/net/HttpUrlConnectionUrlRequest.java

Issue 382193002: Upstream missing changes from HttpUrlRequest.java (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Limit uploadContentLength to int. Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | components/cronet/android/java/src/org/chromium/net/HttpUrlRequest.java » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/cronet/android/java/src/org/chromium/net/HttpUrlConnectionUrlRequest.java
diff --git a/components/cronet/android/java/src/org/chromium/net/HttpUrlConnectionUrlRequest.java b/components/cronet/android/java/src/org/chromium/net/HttpUrlConnectionUrlRequest.java
index e815812d1eb277068ec492a47b1d65bafee46a7d..33c940cbd682e0ffdc81efd686edb98845f25a76 100644
--- a/components/cronet/android/java/src/org/chromium/net/HttpUrlConnectionUrlRequest.java
+++ b/components/cronet/android/java/src/org/chromium/net/HttpUrlConnectionUrlRequest.java
@@ -14,10 +14,12 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
+import java.net.ProtocolException;
import java.net.URL;
import java.nio.ByteBuffer;
import java.nio.channels.ReadableByteChannel;
import java.nio.channels.WritableByteChannel;
+import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.concurrent.ExecutorService;
@@ -55,6 +57,8 @@ class HttpUrlConnectionUrlRequest implements HttpUrlRequest {
private int mContentLength;
+ private int mUploadContentLength;
+
private long mContentLengthLimit;
private boolean mCancelIfContentLengthOverLimit;
@@ -79,6 +83,8 @@ class HttpUrlConnectionUrlRequest implements HttpUrlRequest {
private boolean mCanceled;
+ private String mMethod;
+
private InputStream mResponseStream;
private final Object mLock;
@@ -162,11 +168,27 @@ class HttpUrlConnectionUrlRequest implements HttpUrlRequest {
public void setUploadChannel(String contentType,
ReadableByteChannel channel, long contentLength) {
validateNotStarted();
+ if (contentLength > Integer.MAX_VALUE) {
+ throw new IllegalArgumentException(
+ "Upload contentLength is too big.");
+ }
+ mUploadContentLength = (int)contentLength;
mPostContentType = contentType;
mPostDataChannel = channel;
mPostData = null;
}
+
+ @Override
+ public void setHttpMethod(String method) {
+ validateNotStarted();
+ if (!("PUT".equals(method) || "POST".equals(method))) {
+ throw new IllegalArgumentException(
+ "Only PUT and POST are allowed.");
+ }
+ mMethod = method;
+ }
+
@Override
public void start() {
getExecutor().execute(new Runnable() {
@@ -188,6 +210,16 @@ class HttpUrlConnectionUrlRequest implements HttpUrlRequest {
URL url = new URL(mUrl);
mConnection = (HttpURLConnection)url.openConnection();
+ // If configured, use the provided http verb.
+ if (mMethod != null) {
+ try {
+ mConnection.setRequestMethod(mMethod);
+ } catch (ProtocolException e) {
+ // Since request hasn't started earlier, it
+ // must be an illegal HTTP verb.
+ throw new IllegalArgumentException(e);
+ }
+ }
mConnection.setConnectTimeout(CONNECT_TIMEOUT);
mConnection.setReadTimeout(READ_TIMEOUT);
mConnection.setInstanceFollowRedirects(true);
@@ -290,7 +322,7 @@ class HttpUrlConnectionUrlRequest implements HttpUrlRequest {
uploadStream = mConnection.getOutputStream();
uploadStream.write(mPostData);
} else {
- mConnection.setChunkedStreamingMode(MAX_CHUNK_SIZE);
+ mConnection.setFixedLengthStreamingMode(mUploadContentLength);
uploadStream = mConnection.getOutputStream();
byte[] bytes = new byte[MAX_CHUNK_SIZE];
ByteBuffer byteBuffer = ByteBuffer.wrap(bytes);
@@ -450,7 +482,14 @@ class HttpUrlConnectionUrlRequest implements HttpUrlRequest {
if (mConnection == null) {
throw new IllegalStateException("Response headers not available");
}
- return mConnection.getHeaderField(name);
+ Map<String, List<String>> headerFields = mConnection.getHeaderFields();
+ if (headerFields != null) {
+ List<String> headerValues = headerFields.get(name);
+ if (headerValues != null) {
+ return TextUtils.join(", ", headerValues);
+ }
+ }
+ return null;
}
private void validateNotStarted() {
« no previous file with comments | « no previous file | components/cronet/android/java/src/org/chromium/net/HttpUrlRequest.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698