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

Issue 966743003: [Cronet] Implement getOutputStream in CronetHttpURLConnection (Closed)

Created:
5 years, 9 months ago by xunjieli
Modified:
5 years, 8 months ago
Reviewers:
pauljensen, mef, mmenke
CC:
chromium-reviews, cbentzel+watch_chromium.org
Base URL:
https://chromium.googlesource.com/chromium/src.git@chunked_support
Target Ref:
refs/pending/heads/master
Project:
chromium
Visibility:
Public.

Description

[Cronet] Implement getOutputStream in CronetHttpURLConnection Implement post data with and without setFixedLengthStreamingMode. If setFixedLengthStreamMode is not set, we buffer whole request body in memory. This is achieved by using CronetBufferedOutputStream. Otherwise, we do not buffer everything, and use CronetOutputStream. Chunked mode is not yet supported, and will be added in a follow-up CL, since this CL is already quite big for reviewing. BUG=398997 Committed: https://crrev.com/950576043d18caee3fc8bb28dfc432c3d6adcbda Cr-Commit-Position: refs/heads/master@{#325593}

Patch Set 1 : #

Total comments: 22

Patch Set 2 : Address comments #

Patch Set 3 : Added batch write #

Patch Set 4 : Added tests #

Patch Set 5 : Use member variable instead #

Patch Set 6 : Use large data in buffered case too #

Total comments: 26

Patch Set 7 : Address Paul's and Misha's comments #

Total comments: 18

Patch Set 8 : Handle write out of content length #

Patch Set 9 : Addressed Matt's comments #

Total comments: 39

Patch Set 10 : Changed connect() to not read response headers #

Patch Set 11 : Use ByteBuffer instead of ByteArrayOutputStream in CronetBufferedOutputStream #

Total comments: 28

Patch Set 12 : Address Matt's comments #

Total comments: 4

Patch Set 13 : Test write after connect for fixed length streaming mode #

Total comments: 48

Patch Set 14 : Misha's comments #

Patch Set 15 : Use an abstract class #

Patch Set 16 : Rebased #

Patch Set 17 : Remove unused #

Unified diffs Side-by-side diffs Delta from patch set Stats (+1415 lines, -42 lines) Patch
M components/cronet.gypi View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 chunk +3 lines, -0 lines 0 comments Download
A components/cronet/android/java/src/org/chromium/net/urlconnection/CronetBufferedOutputStream.java View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 chunk +163 lines, -0 lines 0 comments Download
A components/cronet/android/java/src/org/chromium/net/urlconnection/CronetFixedModeOutputStream.java View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +172 lines, -0 lines 0 comments Download
M components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 chunks +137 lines, -26 lines 0 comments Download
A components/cronet/android/java/src/org/chromium/net/urlconnection/CronetOutputStream.java View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +28 lines, -0 lines 0 comments Download
M components/cronet/android/test/javatests/src/org/chromium/net/CronetTestBase.java View 1 2 3 4 5 6 7 8 9 2 chunks +2 lines, -4 lines 0 comments Download
A components/cronet/android/test/javatests/src/org/chromium/net/urlconnection/CronetBufferedOutputStreamTest.java View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 chunk +471 lines, -0 lines 0 comments Download
A components/cronet/android/test/javatests/src/org/chromium/net/urlconnection/CronetFixedModeOutputStreamTest.java View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 chunk +360 lines, -0 lines 0 comments Download
M components/cronet/android/test/javatests/src/org/chromium/net/urlconnection/CronetHttpURLConnectionTest.java View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 9 chunks +79 lines, -12 lines 0 comments Download

Messages

Total messages: 56 (15 generated)
xunjieli
I used ByteArrayOutputStream for the case where we have to buffer everything in memory. I ...
5 years, 9 months ago (2015-02-27 16:56:38 UTC) #3
xunjieli
+ mmenke, mef. PTAL.
5 years, 9 months ago (2015-03-02 16:21:38 UTC) #5
xunjieli
On 2015/03/02 16:21:38, xunjieli wrote: > + mmenke, mef. PTAL. Batch read/write might not be ...
5 years, 9 months ago (2015-03-03 17:33:42 UTC) #6
pauljensen
https://codereview.chromium.org/966743003/diff/20001/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetBufferedOutputStream.java File components/cronet/android/java/src/org/chromium/net/urlconnection/CronetBufferedOutputStream.java (right): https://codereview.chromium.org/966743003/diff/20001/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetBufferedOutputStream.java#newcode24 components/cronet/android/java/src/org/chromium/net/urlconnection/CronetBufferedOutputStream.java:24: private final CronetHttpURLConnection mConnection; I think this is dead ...
5 years, 9 months ago (2015-03-04 16:44:11 UTC) #7
xunjieli
Thanks for the review! I have addressed the comments, but I haven't added the batch ...
5 years, 9 months ago (2015-03-05 17:43:11 UTC) #8
xunjieli
https://codereview.chromium.org/966743003/diff/20001/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java File components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java (right): https://codereview.chromium.org/966743003/diff/20001/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java#newcode53 components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java:53: private long mFixedContentLength = -1; On 2015/03/05 17:43:11, xunjieli ...
5 years, 9 months ago (2015-03-05 18:28:23 UTC) #9
pauljensen
https://codereview.chromium.org/966743003/diff/20001/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java File components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java (right): https://codereview.chromium.org/966743003/diff/20001/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java#newcode53 components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java:53: private long mFixedContentLength = -1; On 2015/03/05 18:28:22, xunjieli ...
5 years, 9 months ago (2015-03-06 13:07:43 UTC) #10
xunjieli
On 2015/03/06 13:07:43, pauljensen wrote: > https://codereview.chromium.org/966743003/diff/20001/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java > File > components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java > (right): > > ...
5 years, 9 months ago (2015-03-06 16:45:35 UTC) #11
mef
https://codereview.chromium.org/966743003/diff/120001/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetBufferedOutputStream.java File components/cronet/android/java/src/org/chromium/net/urlconnection/CronetBufferedOutputStream.java (right): https://codereview.chromium.org/966743003/diff/120001/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetBufferedOutputStream.java#newcode31 components/cronet/android/java/src/org/chromium/net/urlconnection/CronetBufferedOutputStream.java:31: * Packaged protected constructor. nit: Package protected constructor. https://codereview.chromium.org/966743003/diff/120001/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetBufferedOutputStream.java#newcode42 ...
5 years, 9 months ago (2015-03-10 16:48:22 UTC) #12
pauljensen
https://codereview.chromium.org/966743003/diff/120001/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java File components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java (right): https://codereview.chromium.org/966743003/diff/120001/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java#newcode247 components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java:247: // Start the request. Note that connect() is not ...
5 years, 9 months ago (2015-03-10 17:31:06 UTC) #13
xunjieli
Thank you for the valuable reviews! I need to work on the issues that have ...
5 years, 9 months ago (2015-03-11 15:22:07 UTC) #14
xunjieli
Thanks for the valuable reviews, which have caught many bugs! I have addressed all comments ...
5 years, 9 months ago (2015-03-12 21:55:10 UTC) #16
xunjieli
Realized that I didn't handle to case where we write more bytes than content length ...
5 years, 9 months ago (2015-03-13 14:38:56 UTC) #17
mmenke
Not a full review. https://codereview.chromium.org/966743003/diff/160001/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetBufferedOutputStream.java File components/cronet/android/java/src/org/chromium/net/urlconnection/CronetBufferedOutputStream.java (right): https://codereview.chromium.org/966743003/diff/160001/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetBufferedOutputStream.java#newcode114 components/cronet/android/java/src/org/chromium/net/urlconnection/CronetBufferedOutputStream.java:114: return mBuffer.size(); Wait...we're requiring the ...
5 years, 9 months ago (2015-03-13 14:51:12 UTC) #18
xunjieli
Thanks for the review! https://codereview.chromium.org/966743003/diff/160001/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetBufferedOutputStream.java File components/cronet/android/java/src/org/chromium/net/urlconnection/CronetBufferedOutputStream.java (right): https://codereview.chromium.org/966743003/diff/160001/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetBufferedOutputStream.java#newcode114 components/cronet/android/java/src/org/chromium/net/urlconnection/CronetBufferedOutputStream.java:114: return mBuffer.size(); On 2015/03/13 14:51:11, ...
5 years, 9 months ago (2015-03-13 19:26:41 UTC) #19
mmenke
Egads! This CL was sent out for review almost a month ago. Given the state ...
5 years, 9 months ago (2015-03-24 18:04:30 UTC) #20
xunjieli
Thanks Matt! Don't worry too much about it. The only current consumer (Paul's integration) is ...
5 years, 9 months ago (2015-03-24 18:16:00 UTC) #21
xunjieli
I meant to say that Paul's integration is delayed for other reasons, IIUC. So no ...
5 years, 9 months ago (2015-03-24 18:19:05 UTC) #22
mmenke
https://codereview.chromium.org/966743003/diff/160001/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetBufferedOutputStream.java File components/cronet/android/java/src/org/chromium/net/urlconnection/CronetBufferedOutputStream.java (right): https://codereview.chromium.org/966743003/diff/160001/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetBufferedOutputStream.java#newcode114 components/cronet/android/java/src/org/chromium/net/urlconnection/CronetBufferedOutputStream.java:114: return mBuffer.size(); On 2015/03/13 19:26:40, xunjieli wrote: > On ...
5 years, 9 months ago (2015-03-25 18:34:58 UTC) #23
xunjieli
Thanks for the review! Sorry it took me so long. The major change that I ...
5 years, 9 months ago (2015-03-27 17:46:45 UTC) #24
mmenke
Quick response. https://codereview.chromium.org/966743003/diff/200001/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetBufferedOutputStream.java File components/cronet/android/java/src/org/chromium/net/urlconnection/CronetBufferedOutputStream.java (right): https://codereview.chromium.org/966743003/diff/200001/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetBufferedOutputStream.java#newcode126 components/cronet/android/java/src/org/chromium/net/urlconnection/CronetBufferedOutputStream.java:126: byteBuffer.put(mBuffer.toByteArray(), mBytesConsumed, toConsume); On 2015/03/27 17:46:44, xunjieli ...
5 years, 9 months ago (2015-03-27 17:54:10 UTC) #25
xunjieli
On 2015/03/27 17:54:10, mmenke wrote: > Quick response. > > https://codereview.chromium.org/966743003/diff/200001/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetBufferedOutputStream.java > File > components/cronet/android/java/src/org/chromium/net/urlconnection/CronetBufferedOutputStream.java ...
5 years, 9 months ago (2015-03-27 20:12:15 UTC) #27
mmenke
Looks good, just minor suggestions. https://codereview.chromium.org/966743003/diff/260001/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetBufferedOutputStream.java File components/cronet/android/java/src/org/chromium/net/urlconnection/CronetBufferedOutputStream.java (right): https://codereview.chromium.org/966743003/diff/260001/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetBufferedOutputStream.java#newcode75 components/cronet/android/java/src/org/chromium/net/urlconnection/CronetBufferedOutputStream.java:75: } optional: Suggest moving ...
5 years, 8 months ago (2015-03-31 18:19:33 UTC) #28
xunjieli
Thanks for the review! I have address all comments. PTAL. https://codereview.chromium.org/966743003/diff/260001/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetBufferedOutputStream.java File components/cronet/android/java/src/org/chromium/net/urlconnection/CronetBufferedOutputStream.java (right): https://codereview.chromium.org/966743003/diff/260001/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetBufferedOutputStream.java#newcode75 ...
5 years, 8 months ago (2015-04-01 17:04:09 UTC) #30
mmenke
https://codereview.chromium.org/966743003/diff/300001/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java File components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java (right): https://codereview.chromium.org/966743003/diff/300001/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java#newcode504 components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java:504: } Should this be before the mHasResponse check? https://codereview.chromium.org/966743003/diff/300001/components/cronet/android/test/javatests/src/org/chromium/net/urlconnection/CronetFixedModeOutputStreamTest.java ...
5 years, 8 months ago (2015-04-01 17:41:05 UTC) #31
xunjieli
Running my old tests, I found that non-blocking connect() has a limitation. The default implementation ...
5 years, 8 months ago (2015-04-01 19:04:55 UTC) #32
mmenke
On 2015/04/01 19:04:55, xunjieli wrote: > Running my old tests, I found that non-blocking connect() ...
5 years, 8 months ago (2015-04-01 19:13:33 UTC) #33
xunjieli
On 2015/04/01 19:13:33, mmenke wrote: > On 2015/04/01 19:04:55, xunjieli wrote: > > Running my ...
5 years, 8 months ago (2015-04-01 19:53:12 UTC) #34
xunjieli
Pinging Misha and Paul for review..
5 years, 8 months ago (2015-04-06 14:42:43 UTC) #35
mef
Sorry for the delay, I haven't looked at tests yet. https://codereview.chromium.org/966743003/diff/320001/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetBufferedOutputStream.java File components/cronet/android/java/src/org/chromium/net/urlconnection/CronetBufferedOutputStream.java (right): https://codereview.chromium.org/966743003/diff/320001/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetBufferedOutputStream.java#newcode40 ...
5 years, 8 months ago (2015-04-06 16:14:55 UTC) #36
xunjieli
PTAL. Thanks! https://codereview.chromium.org/966743003/diff/320001/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetBufferedOutputStream.java File components/cronet/android/java/src/org/chromium/net/urlconnection/CronetBufferedOutputStream.java (right): https://codereview.chromium.org/966743003/diff/320001/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetBufferedOutputStream.java#newcode40 components/cronet/android/java/src/org/chromium/net/urlconnection/CronetBufferedOutputStream.java:40: throw new NullPointerException(); On 2015/04/06 16:14:54, mef ...
5 years, 8 months ago (2015-04-06 18:09:30 UTC) #37
mef
https://codereview.chromium.org/966743003/diff/320001/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetBufferedOutputStream.java File components/cronet/android/java/src/org/chromium/net/urlconnection/CronetBufferedOutputStream.java (right): https://codereview.chromium.org/966743003/diff/320001/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetBufferedOutputStream.java#newcode67 components/cronet/android/java/src/org/chromium/net/urlconnection/CronetBufferedOutputStream.java:67: mBuffer = ByteBuffer.allocate(2048); On 2015/04/06 18:09:29, xunjieli wrote: > ...
5 years, 8 months ago (2015-04-06 18:37:19 UTC) #38
xunjieli
Thanks for the review! PTAL. https://codereview.chromium.org/966743003/diff/320001/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetBufferedOutputStream.java File components/cronet/android/java/src/org/chromium/net/urlconnection/CronetBufferedOutputStream.java (right): https://codereview.chromium.org/966743003/diff/320001/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetBufferedOutputStream.java#newcode67 components/cronet/android/java/src/org/chromium/net/urlconnection/CronetBufferedOutputStream.java:67: mBuffer = ByteBuffer.allocate(2048); On ...
5 years, 8 months ago (2015-04-06 21:03:45 UTC) #40
commit-bot: I haz the power
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/966743003/380001
5 years, 8 months ago (2015-04-14 19:52:41 UTC) #43
commit-bot: I haz the power
Try jobs failed on following builders: android_clang_dbg_recipe on tryserver.chromium.linux (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.linux/builders/android_clang_dbg_recipe/builds/66670)
5 years, 8 months ago (2015-04-14 21:20:02 UTC) #45
xunjieli
Talked to Misha and Paul. I think we are going to CQ this, since there'll ...
5 years, 8 months ago (2015-04-16 19:40:33 UTC) #49
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/966743003/440001
5 years, 8 months ago (2015-04-16 19:41:48 UTC) #50
commit-bot: I haz the power
Try jobs failed on following builders: win_chromium_rel_ng on tryserver.chromium.win (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.win/builders/win_chromium_rel_ng/builds/49005)
5 years, 8 months ago (2015-04-16 22:42:23 UTC) #52
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/966743003/440001
5 years, 8 months ago (2015-04-17 02:29:50 UTC) #54
commit-bot: I haz the power
Committed patchset #17 (id:440001)
5 years, 8 months ago (2015-04-17 03:49:35 UTC) #55
commit-bot: I haz the power
5 years, 8 months ago (2015-04-17 03:50:28 UTC) #56
Message was sent while issue was closed.
Patchset 17 (id:??) landed as
https://crrev.com/950576043d18caee3fc8bb28dfc432c3d6adcbda
Cr-Commit-Position: refs/heads/master@{#325593}

Powered by Google App Engine
This is Rietveld 408576698