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

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

Issue 1307863006: [Cronet] Change interface APIs to abstract classes (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: update CronetPerfTestActivity too Created 5 years, 3 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
Index: components/cronet/android/java/src/org/chromium/net/urlconnection/CronetChunkedOutputStream.java
diff --git a/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetChunkedOutputStream.java b/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetChunkedOutputStream.java
index 1709f2f8f2b2aa7910d4950bc18aeb13e6c6ee29..fdcfc82e803d009fa93a548ca87214b21a5528d1 100644
--- a/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetChunkedOutputStream.java
+++ b/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetChunkedOutputStream.java
@@ -4,6 +4,7 @@
package org.chromium.net.urlconnection;
+import org.chromium.net.UploadDataProvider;
import org.chromium.net.UploadDataSink;
import java.io.IOException;
@@ -21,6 +22,7 @@ final class CronetChunkedOutputStream extends CronetOutputStream {
private final CronetHttpURLConnection mConnection;
private final MessageLoop mMessageLoop;
private final ByteBuffer mBuffer;
+ private final UploadDataProvider mUploadDataProvider = new UploadDataProviderImpl();
private long mBytesWritten;
private boolean mLastChunk = false;
private boolean mClosed = false;
@@ -107,36 +109,44 @@ final class CronetChunkedOutputStream extends CronetOutputStream {
}
@Override
- public long getLength() {
- return -1;
+ UploadDataProvider getUploadDataProvider() {
+ return mUploadDataProvider;
}
- @Override
- public void read(final UploadDataSink uploadDataSink, final ByteBuffer byteBuffer) {
- int availableSpace = byteBuffer.capacity() - byteBuffer.position();
- if (availableSpace < mBuffer.position()) {
- // byteBuffer does not have enough capacity, so only put a portion
- // of mBuffer in it.
- byteBuffer.put(mBuffer.array(), 0, availableSpace);
- mBuffer.position(availableSpace);
- // Move remaining buffer to the head of the buffer for use in the
- // next read call.
- mBuffer.compact();
- uploadDataSink.onReadSucceeded(false);
- } else {
- // byteBuffer has enough capacity to hold the content of mBuffer.
- mBuffer.flip();
- byteBuffer.put(mBuffer);
- // Reuse this buffer.
- mBuffer.clear();
- // Quit message loop so embedder can write more data.
- mMessageLoop.quit();
- uploadDataSink.onReadSucceeded(mLastChunk);
+ private class UploadDataProviderImpl extends UploadDataProvider {
+ @Override
+ public long getLength() {
+ return -1;
}
- }
- @Override
- public void rewind(UploadDataSink uploadDataSink) {
- uploadDataSink.onRewindError(new HttpRetryException("Cannot retry streamed Http body", -1));
+ @Override
+ public void read(final UploadDataSink uploadDataSink, final ByteBuffer byteBuffer) {
+ int availableSpace = byteBuffer.capacity() - byteBuffer.position();
+ if (availableSpace < mBuffer.position()) {
+ // byteBuffer does not have enough capacity, so only put a portion
+ // of mBuffer in it.
+ byteBuffer.put(mBuffer.array(), 0, availableSpace);
+ mBuffer.position(availableSpace);
+ // Move remaining buffer to the head of the buffer for use in the
+ // next read call.
+ mBuffer.compact();
+ uploadDataSink.onReadSucceeded(false);
+ } else {
+ // byteBuffer has enough capacity to hold the content of mBuffer.
+ mBuffer.flip();
+ byteBuffer.put(mBuffer);
+ // Reuse this buffer.
+ mBuffer.clear();
+ // Quit message loop so embedder can write more data.
+ mMessageLoop.quit();
+ uploadDataSink.onReadSucceeded(mLastChunk);
+ }
+ }
+
+ @Override
+ public void rewind(UploadDataSink uploadDataSink) {
+ uploadDataSink.onRewindError(
+ new HttpRetryException("Cannot retry streamed Http body", -1));
+ }
}
}

Powered by Google App Engine
This is Rietveld 408576698