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(); |
+ } |
+ }); |
} |
/** |