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

Unified Diff: components/cronet/android/java/src/org/chromium/net/urlconnection/CronetFixedModeOutputStream.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/CronetFixedModeOutputStream.java
diff --git a/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetFixedModeOutputStream.java b/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetFixedModeOutputStream.java
index 8b9519eb5700085a5c168dba297a9337a2a37e18..34c4d8648501c10270b095f7f603bd496bd0034b 100644
--- a/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetFixedModeOutputStream.java
+++ b/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetFixedModeOutputStream.java
@@ -5,6 +5,7 @@
package org.chromium.net.urlconnection;
import org.chromium.base.VisibleForTesting;
+import org.chromium.net.UploadDataProvider;
import org.chromium.net.UploadDataSink;
import java.io.IOException;
@@ -32,6 +33,7 @@ final class CronetFixedModeOutputStream extends CronetOutputStream {
private final MessageLoop mMessageLoop;
private final long mContentLength;
private final ByteBuffer mBuffer;
+ private final UploadDataProvider mUploadDataProvider = new UploadDataProviderImpl();
private long mBytesWritten;
/**
@@ -129,37 +131,44 @@ final class CronetFixedModeOutputStream extends CronetOutputStream {
}
@Override
- public long getLength() {
- return mContentLength;
+ 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();
- } 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();
+ private class UploadDataProviderImpl extends UploadDataProvider {
+ @Override
+ public long getLength() {
+ return mContentLength;
}
- uploadDataSink.onReadSucceeded(false);
- }
- @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();
+ } 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(false);
+ }
+
+ @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