Index: net/cronet/android/java/src/org/chromium/net/ChromiumUrlRequest.java |
diff --git a/net/cronet/android/java/src/org/chromium/net/ChromiumUrlRequest.java b/net/cronet/android/java/src/org/chromium/net/ChromiumUrlRequest.java |
deleted file mode 100644 |
index 1679dc2a1518f5a0a87fa411597be6cba6225ef4..0000000000000000000000000000000000000000 |
--- a/net/cronet/android/java/src/org/chromium/net/ChromiumUrlRequest.java |
+++ /dev/null |
@@ -1,188 +0,0 @@ |
-// Copyright 2014 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-package org.chromium.net; |
- |
-import java.io.IOException; |
-import java.nio.ByteBuffer; |
-import java.nio.channels.WritableByteChannel; |
-import java.util.Map; |
- |
-/** |
- * Network request using the native http stack implementation. |
- */ |
-class ChromiumUrlRequest extends UrlRequest implements HttpUrlRequest { |
- |
- private final HttpUrlRequestListener mListener; |
- |
- private boolean mBufferFullResponse; |
- |
- private long mOffset; |
- |
- private long mContentLength; |
- |
- private long mContentLengthLimit; |
- |
- private boolean mCancelIfContentLengthOverLimit; |
- |
- private boolean mContentLengthOverLimit; |
- |
- private boolean mSkippingToOffset; |
- |
- private long mSize; |
- |
- public ChromiumUrlRequest(ChromiumUrlRequestContext requestContext, |
- String url, int priority, Map<String, String> headers, |
- HttpUrlRequestListener listener) { |
- this(requestContext, url, priority, headers, |
- new ChunkedWritableByteChannel(), listener); |
- mBufferFullResponse = true; |
- } |
- |
- public ChromiumUrlRequest(ChromiumUrlRequestContext requestContext, |
- String url, int priority, Map<String, String> headers, |
- WritableByteChannel sink, HttpUrlRequestListener listener) { |
- super(requestContext, url, convertRequestPriority(priority), headers, |
- sink); |
- mListener = listener; |
- } |
- |
- private static int convertRequestPriority(int priority) { |
- switch (priority) { |
- case HttpUrlRequest.REQUEST_PRIORITY_IDLE: |
- return UrlRequestPriority.IDLE; |
- case HttpUrlRequest.REQUEST_PRIORITY_LOWEST: |
- return UrlRequestPriority.LOWEST; |
- case HttpUrlRequest.REQUEST_PRIORITY_LOW: |
- return UrlRequestPriority.LOW; |
- case HttpUrlRequest.REQUEST_PRIORITY_MEDIUM: |
- return UrlRequestPriority.MEDIUM; |
- case HttpUrlRequest.REQUEST_PRIORITY_HIGHEST: |
- return UrlRequestPriority.HIGHEST; |
- default: |
- return UrlRequestPriority.MEDIUM; |
- } |
- } |
- |
- @Override |
- public void setOffset(long offset) { |
- mOffset = offset; |
- if (offset != 0) { |
- addHeader("Range", "bytes=" + offset + "-"); |
- } |
- } |
- |
- @Override |
- public long getContentLength() { |
- return mContentLength; |
- } |
- |
- @Override |
- public void setContentLengthLimit(long limit, boolean cancelEarly) { |
- mContentLengthLimit = limit; |
- mCancelIfContentLengthOverLimit = cancelEarly; |
- } |
- |
- @Override |
- protected void onResponseStarted() { |
- super.onResponseStarted(); |
- |
- mContentLength = super.getContentLength(); |
- if (mContentLengthLimit > 0 && mContentLength > mContentLengthLimit |
- && mCancelIfContentLengthOverLimit) { |
- onContentLengthOverLimit(); |
- return; |
- } |
- |
- if (mBufferFullResponse && mContentLength != -1 |
- && !mContentLengthOverLimit) { |
- ((ChunkedWritableByteChannel)getSink()).setCapacity( |
- (int)mContentLength); |
- } |
- |
- if (mOffset != 0) { |
- // The server may ignore the request for a byte range. |
- if (super.getHttpStatusCode() == 200) { |
- if (mContentLength != -1) { |
- mContentLength -= mOffset; |
- } |
- mSkippingToOffset = true; |
- } else { |
- mSize = mOffset; |
- } |
- } |
- } |
- |
- @Override |
- protected void onBytesRead(ByteBuffer buffer) { |
- if (mContentLengthOverLimit) { |
- return; |
- } |
- |
- int size = buffer.remaining(); |
- mSize += size; |
- if (mSkippingToOffset) { |
- if (mSize <= mOffset) { |
- return; |
- } else { |
- mSkippingToOffset = false; |
- buffer.position((int)(mOffset - (mSize - size))); |
- } |
- } |
- |
- if (mContentLengthLimit != 0 && mSize > mContentLengthLimit) { |
- buffer.limit(size - (int)(mSize - mContentLengthLimit)); |
- super.onBytesRead(buffer); |
- onContentLengthOverLimit(); |
- return; |
- } |
- |
- super.onBytesRead(buffer); |
- } |
- |
- private void onContentLengthOverLimit() { |
- mContentLengthOverLimit = true; |
- cancel(); |
- } |
- |
- @Override |
- protected void onRequestComplete() { |
- mListener.onRequestComplete(this); |
- } |
- |
- @Override |
- public int getHttpStatusCode() { |
- int httpStatusCode = super.getHttpStatusCode(); |
- |
- // TODO(mef): Investigate the following: |
- // If we have been able to successfully resume a previously interrupted |
- // download, |
- // the status code will be 206, not 200. Since the rest of the |
- // application is |
- // expecting 200 to indicate success, we need to fake it. |
- if (httpStatusCode == 206) { |
- httpStatusCode = 200; |
- } |
- return httpStatusCode; |
- } |
- |
- @Override |
- public IOException getException() { |
- IOException ex = super.getException(); |
- if (ex == null && mContentLengthOverLimit) { |
- ex = new ResponseTooLargeException(); |
- } |
- return ex; |
- } |
- |
- @Override |
- public ByteBuffer getByteBuffer() { |
- return ((ChunkedWritableByteChannel)getSink()).getByteBuffer(); |
- } |
- |
- @Override |
- public byte[] getResponseAsBytes() { |
- return ((ChunkedWritableByteChannel)getSink()).getBytes(); |
- } |
-} |