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

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

Issue 2283243002: Allow direct executors in cronet. (Closed)
Patch Set: Addressed comments, unified request failure logic in CronetUrlRequest Created 4 years, 4 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/impl/CronetUploadDataStream.java
diff --git a/components/cronet/android/java/src/org/chromium/net/impl/CronetUploadDataStream.java b/components/cronet/android/java/src/org/chromium/net/impl/CronetUploadDataStream.java
index 3b2601e61fc1aabdd14c754bdd8d77b72b7b6b3d..a8a8d454be1d33048a11f3cf75cef7e39886c673 100644
--- a/components/cronet/android/java/src/org/chromium/net/impl/CronetUploadDataStream.java
+++ b/components/cronet/android/java/src/org/chromium/net/impl/CronetUploadDataStream.java
@@ -300,26 +300,34 @@ public final class CronetUploadDataStream implements UploadDataSink {
}
/**
- * Initializes upload length by getting it from data provider. Always called
- * on executor thread to allow getLength() to block and/or report errors.
+ * Initializes upload length by getting it from data provider. Submits to
+ * the user's executor thread to allow getLength() to block and/or report errors.
* If data provider throws an exception, then it is reported to the request.
* No native calls to urlRequest are allowed as this is done before request
* start, so native object may not exist.
*/
- void initializeWithRequest(final CronetUrlRequest urlRequest) {
+ void initializeWithRequest(final CronetUrlRequest urlRequest, final Runnable callback) {
synchronized (mLock) {
mRequest = urlRequest;
- mInWhichUserCallback = UserCallback.GET_LENGTH;
- }
- try {
- mLength = mDataProvider.getLength();
- mRemainingLength = mLength;
- } catch (Throwable t) {
- onError(t);
- }
- synchronized (mLock) {
- mInWhichUserCallback = UserCallback.NOT_IN_CALLBACK;
}
+ postTaskToExecutor(new Runnable() {
+ @Override
+ public void run() {
+ synchronized (mLock) {
+ mInWhichUserCallback = UserCallback.GET_LENGTH;
+ }
+ try {
+ mLength = mDataProvider.getLength();
+ mRemainingLength = mLength;
+ } catch (Throwable t) {
+ onError(t);
+ }
+ synchronized (mLock) {
+ mInWhichUserCallback = UserCallback.NOT_IN_CALLBACK;
+ }
+ callback.run();
+ }
+ });
}
/**

Powered by Google App Engine
This is Rietveld 408576698