Index: components/cronet/android/java/src/org/chromium/net/urlconnection/CronetInputStream.java |
diff --git a/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetInputStream.java b/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetInputStream.java |
index fc72ab11b6c23360b846cca35160d633fce4667f..dc6e4b9928da0d850422c3ae00bb476f786b5e98 100644 |
--- a/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetInputStream.java |
+++ b/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetInputStream.java |
@@ -40,6 +40,21 @@ class CronetInputStream extends InputStream { |
return -1; |
} |
+ @Override |
+ public int read(byte[] buffer, int byteOffset, int byteCount) throws IOException { |
mmenke
2015/03/05 19:24:46
Should our argument names match the official spec?
mmenke
2015/03/05 19:24:46
Maybe:
if (byteCount == 0)
return 0;
xunjieli
2015/03/05 20:55:13
Done.
xunjieli
2015/03/05 20:55:13
I am following the Android specs at http://develop
|
+ if (!mResponseDataCompleted && (mBuffer == null || !mBuffer.hasRemaining())) { |
+ // Requests more data from CronetHttpURLConnection. |
+ mBuffer = mHttpURLConnection.getMoreData(); |
+ } |
mmenke
2015/03/05 19:24:46
Suggest turning this block into a private method,
xunjieli
2015/03/05 20:55:13
Done.
|
+ if (mBuffer != null && mBuffer.hasRemaining()) { |
+ int oldPosition = mBuffer.position(); |
+ mBuffer.get( |
+ buffer, byteOffset, Math.min(mBuffer.limit() - mBuffer.position(), byteCount)); |
+ return mBuffer.position() - oldPosition; |
mmenke
2015/03/05 19:24:46
Is there any case where this is different from the
xunjieli
2015/03/05 20:55:13
Done. Thanks!
|
+ } |
+ return -1; |
+ } |
+ |
void setResponseDataCompleted() { |
mResponseDataCompleted = true; |
} |