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

Issue 1492583002: Add HttpUrlConnection backed implementation of CronetEngine. (Closed)

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

Description

Add HttpUrlConnection backed implementation of CronetEngine. When the native implementation is not available (because it wasn't included in the binary), cronet falls back to a HttpUrlConnection based implementation of the async API. Committed: https://crrev.com/5632bf5e2836df74ca4d92e98c05540d6b4e62f2 Cr-Commit-Position: refs/heads/master@{#368127}

Patch Set 1 #

Patch Set 2 : Fix accidental inclusion of comments #

Patch Set 3 : Add cancellation-safe disconnection of HttpUrlConnections #

Patch Set 4 : Fix tests #

Total comments: 76

Patch Set 5 : Update tests and header ordering. #

Total comments: 38

Patch Set 6 : Addressed comments #

Patch Set 7 : Added checks for invalid state transitions. #

Patch Set 8 : Rebase on HEAD #

Total comments: 26

Patch Set 9 : Addressed comments #

Total comments: 6

Patch Set 10 : Rebase on head and address comments #

Patch Set 11 : Enabled user agent test #

Total comments: 4

Patch Set 12 : Fix broken test #

Patch Set 13 : Fix accidental println #

Total comments: 13

Patch Set 14 : Addressed comments #

Total comments: 3
Unified diffs Side-by-side diffs Delta from patch set Stats (+1300 lines, -171 lines) Patch
M components/cronet/android/api/src/org/chromium/net/CronetEngine.java View 1 2 3 4 5 6 7 8 9 7 chunks +13 lines, -9 lines 0 comments Download
A components/cronet/android/api/src/org/chromium/net/InputStreamChannel.java View 1 2 3 4 5 6 7 8 9 10 11 12 13 1 chunk +75 lines, -0 lines 0 comments Download
A components/cronet/android/api/src/org/chromium/net/JavaCronetEngine.java View 1 2 3 4 5 6 7 8 9 1 chunk +144 lines, -0 lines 2 comments Download
A components/cronet/android/api/src/org/chromium/net/JavaUrlRequest.java View 1 2 3 4 5 6 7 8 9 10 11 12 13 1 chunk +845 lines, -0 lines 1 comment Download
A components/cronet/android/api/src/org/chromium/net/Preconditions.java View 1 2 3 1 chunk +23 lines, -0 lines 0 comments Download
M components/cronet/android/api/src/org/chromium/net/UrlResponseInfo.java View 1 2 3 4 2 chunks +5 lines, -4 lines 0 comments Download
M components/cronet/android/java/src/org/chromium/net/CronetUrlRequest.java View 1 2 3 4 5 6 7 8 9 3 chunks +5 lines, -11 lines 0 comments Download
M components/cronet/android/java/src/org/chromium/net/CronetUrlRequestContext.java View 1 2 3 4 5 6 7 8 9 2 chunks +0 lines, -17 lines 0 comments Download
M components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLStreamHandler.java View 1 2 3 1 chunk +1 line, -1 line 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 3 chunks +50 lines, -24 lines 0 comments Download
M components/cronet/android/test/javatests/src/org/chromium/net/CronetUploadTest.java View 1 2 3 9 8 chunks +13 lines, -10 lines 0 comments Download
M components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestContextTest.java View 1 2 3 4 5 6 7 8 9 10 12 6 chunks +10 lines, -0 lines 0 comments Download
M components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestTest.java View 1 2 3 4 5 6 7 8 9 10 11 12 13 29 chunks +91 lines, -93 lines 0 comments Download
M components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlTest.java View 1 2 3 4 5 6 7 1 chunk +1 line, -0 lines 0 comments Download
M components/cronet/android/test/javatests/src/org/chromium/net/GetStatusTest.java View 1 2 3 1 chunk +3 lines, -2 lines 0 comments Download
M components/cronet/android/test/javatests/src/org/chromium/net/HttpUrlRequestFactoryTest.java View 1 2 3 4 5 6 7 3 chunks +3 lines, -0 lines 0 comments Download
M components/cronet/android/test/javatests/src/org/chromium/net/PkpTest.java View 1 2 3 4 5 6 7 8 8 chunks +8 lines, -0 lines 0 comments Download
M components/cronet/android/test/javatests/src/org/chromium/net/QuicTest.java View 1 2 3 4 5 6 7 3 chunks +3 lines, -0 lines 0 comments Download
M components/cronet/android/test/javatests/src/org/chromium/net/SdchTest.java View 1 2 3 4 5 6 7 7 chunks +7 lines, -0 lines 0 comments Download

Messages

Total messages: 42 (7 generated)
Charles
Paul, PTAL
5 years ago (2015-12-02 18:22:18 UTC) #2
pauljensen
Discussed with Charles offline and asked that he remove the test app and add unit ...
5 years ago (2015-12-02 18:43:26 UTC) #3
Charles
Ready for re-review, PTAL I had to relax a few tests - some were depending ...
5 years ago (2015-12-04 01:14:10 UTC) #4
Charles
On 2015/12/04 01:14:10, Charles wrote: > Ready for re-review, PTAL > > I had to ...
5 years ago (2015-12-04 20:16:40 UTC) #6
pauljensen
I'll take a look, probably Monday. Been discussing some related CronetTestBase changes that may affect ...
5 years ago (2015-12-04 21:26:35 UTC) #7
pauljensen
https://codereview.chromium.org/1492583002/diff/60001/components/cronet/android/api/src/org/chromium/net/CronetEngine.java File components/cronet/android/api/src/org/chromium/net/CronetEngine.java (right): https://codereview.chromium.org/1492583002/diff/60001/components/cronet/android/api/src/org/chromium/net/CronetEngine.java#newcode670 components/cronet/android/api/src/org/chromium/net/CronetEngine.java:670: // implementation is available merge with createCronetFactory. Could you ...
5 years ago (2015-12-08 19:49:53 UTC) #8
pauljensen
I did a first review pass. I didn't yet dig too deep into looking at ...
5 years ago (2015-12-08 19:55:43 UTC) #9
Charles
Paul, PTAL https://codereview.chromium.org/1492583002/diff/60001/components/cronet/android/api/src/org/chromium/net/CronetEngine.java File components/cronet/android/api/src/org/chromium/net/CronetEngine.java (right): https://codereview.chromium.org/1492583002/diff/60001/components/cronet/android/api/src/org/chromium/net/CronetEngine.java#newcode670 components/cronet/android/api/src/org/chromium/net/CronetEngine.java:670: // implementation is available merge with createCronetFactory. ...
5 years ago (2015-12-11 16:45:40 UTC) #10
pauljensen
https://codereview.chromium.org/1492583002/diff/60001/components/cronet/android/api/src/org/chromium/net/JavaUrlRequest.java File components/cronet/android/api/src/org/chromium/net/JavaUrlRequest.java (right): https://codereview.chromium.org/1492583002/diff/60001/components/cronet/android/api/src/org/chromium/net/JavaUrlRequest.java#newcode35 components/cronet/android/api/src/org/chromium/net/JavaUrlRequest.java:35: @TargetApi(15) On 2015/12/11 16:45:39, Charles wrote: > On 2015/12/08 ...
5 years ago (2015-12-14 20:02:06 UTC) #11
Charles
Paul, PTAL. A few unsettled issues: 1. What should we do about features of Cronet ...
5 years ago (2015-12-15 22:32:36 UTC) #12
pauljensen
https://codereview.chromium.org/1492583002/diff/60001/components/cronet/android/api/src/org/chromium/net/JavaUrlRequest.java File components/cronet/android/api/src/org/chromium/net/JavaUrlRequest.java (right): https://codereview.chromium.org/1492583002/diff/60001/components/cronet/android/api/src/org/chromium/net/JavaUrlRequest.java#newcode37 components/cronet/android/api/src/org/chromium/net/JavaUrlRequest.java:37: private static final String X_ANDROID_SELECTED_TRANSPORT = "X-Android-Selected-Transport"; On 2015/12/15 ...
5 years ago (2015-12-17 19:59:49 UTC) #13
pauljensen
Charles and I chatted on two matters: 1. I think the X-Android-blah header is changed ...
5 years ago (2015-12-18 18:50:35 UTC) #14
Charles
On 2015/12/18 18:50:35, pauljensen wrote: > Charles and I chatted on two matters: > > ...
5 years ago (2015-12-18 21:37:04 UTC) #15
Charles
On 2015/12/17 19:59:49, pauljensen wrote: > https://codereview.chromium.org/1492583002/diff/60001/components/cronet/android/api/src/org/chromium/net/JavaUrlRequest.java > File components/cronet/android/api/src/org/chromium/net/JavaUrlRequest.java > (right): > > https://codereview.chromium.org/1492583002/diff/60001/components/cronet/android/api/src/org/chromium/net/JavaUrlRequest.java#newcode37 ...
5 years ago (2015-12-18 21:52:53 UTC) #16
Charles
Paul, PTAL https://codereview.chromium.org/1492583002/diff/60001/components/cronet/android/api/src/org/chromium/net/JavaUrlRequest.java File components/cronet/android/api/src/org/chromium/net/JavaUrlRequest.java (right): https://codereview.chromium.org/1492583002/diff/60001/components/cronet/android/api/src/org/chromium/net/JavaUrlRequest.java#newcode37 components/cronet/android/api/src/org/chromium/net/JavaUrlRequest.java:37: private static final String X_ANDROID_SELECTED_TRANSPORT = "X-Android-Selected-Transport"; ...
5 years ago (2015-12-18 23:37:51 UTC) #17
pauljensen
On 2015/12/18 21:52:53, Charles wrote: > On 2015/12/17 19:59:49, pauljensen wrote: > > > https://codereview.chromium.org/1492583002/diff/60001/components/cronet/android/api/src/org/chromium/net/JavaUrlRequest.java ...
4 years, 12 months ago (2015-12-21 19:28:16 UTC) #18
pauljensen
https://codereview.chromium.org/1492583002/diff/60001/components/cronet/android/api/src/org/chromium/net/JavaUrlRequest.java File components/cronet/android/api/src/org/chromium/net/JavaUrlRequest.java (right): https://codereview.chromium.org/1492583002/diff/60001/components/cronet/android/api/src/org/chromium/net/JavaUrlRequest.java#newcode37 components/cronet/android/api/src/org/chromium/net/JavaUrlRequest.java:37: private static final String X_ANDROID_SELECTED_TRANSPORT = "X-Android-Selected-Transport"; On 2015/12/18 ...
4 years, 12 months ago (2015-12-21 19:31:24 UTC) #19
Charles
On 2015/12/21 19:31:24, pauljensen wrote: > https://codereview.chromium.org/1492583002/diff/60001/components/cronet/android/api/src/org/chromium/net/JavaUrlRequest.java > File components/cronet/android/api/src/org/chromium/net/JavaUrlRequest.java > (right): > > https://codereview.chromium.org/1492583002/diff/60001/components/cronet/android/api/src/org/chromium/net/JavaUrlRequest.java#newcode37 ...
4 years, 12 months ago (2015-12-21 19:35:39 UTC) #20
Charles
On 2015/12/21 19:31:24, pauljensen wrote: > https://codereview.chromium.org/1492583002/diff/60001/components/cronet/android/api/src/org/chromium/net/JavaUrlRequest.java > File components/cronet/android/api/src/org/chromium/net/JavaUrlRequest.java > (right): > > https://codereview.chromium.org/1492583002/diff/60001/components/cronet/android/api/src/org/chromium/net/JavaUrlRequest.java#newcode37 ...
4 years, 12 months ago (2015-12-21 19:35:41 UTC) #21
pauljensen
https://codereview.chromium.org/1492583002/diff/80001/components/cronet/android/api/src/org/chromium/net/JavaUrlRequest.java File components/cronet/android/api/src/org/chromium/net/JavaUrlRequest.java (right): https://codereview.chromium.org/1492583002/diff/80001/components/cronet/android/api/src/org/chromium/net/JavaUrlRequest.java#newcode228 components/cronet/android/api/src/org/chromium/net/JavaUrlRequest.java:228: mInitialMethod = "POST"; On 2015/12/15 22:32:36, Charles wrote: > ...
4 years, 12 months ago (2015-12-21 19:58:45 UTC) #22
pauljensen
I'm pretty happy with the impl here, my comments are mostly on the tests now. ...
4 years, 12 months ago (2015-12-21 20:27:58 UTC) #23
Charles
https://codereview.chromium.org/1492583002/diff/140001/components/cronet/android/api/src/org/chromium/net/UrlResponseInfo.java File components/cronet/android/api/src/org/chromium/net/UrlResponseInfo.java (right): https://codereview.chromium.org/1492583002/diff/140001/components/cronet/android/api/src/org/chromium/net/UrlResponseInfo.java#newcode210 components/cronet/android/api/src/org/chromium/net/UrlResponseInfo.java:210: // Prevent asserting on the contents of this string ...
4 years, 12 months ago (2015-12-21 23:36:26 UTC) #24
pauljensen
https://codereview.chromium.org/1492583002/diff/140001/components/cronet/android/api/src/org/chromium/net/UrlResponseInfo.java File components/cronet/android/api/src/org/chromium/net/UrlResponseInfo.java (right): https://codereview.chromium.org/1492583002/diff/140001/components/cronet/android/api/src/org/chromium/net/UrlResponseInfo.java#newcode210 components/cronet/android/api/src/org/chromium/net/UrlResponseInfo.java:210: // Prevent asserting on the contents of this string ...
4 years, 11 months ago (2015-12-29 16:35:54 UTC) #25
Charles
https://codereview.chromium.org/1492583002/diff/140001/components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestTest.java File components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestTest.java (right): https://codereview.chromium.org/1492583002/diff/140001/components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestTest.java#newcode1407 components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestTest.java:1407: System.out.println("Testing " + failureType + " during " + ...
4 years, 11 months ago (2016-01-05 21:53:56 UTC) #26
pauljensen
+Misha Misha, as I mentioned to you earlier, Charles would like to enable the automatic ...
4 years, 11 months ago (2016-01-06 14:50:35 UTC) #28
mef
On 2016/01/06 14:50:35, pauljensen wrote: > +Misha > > Misha, as I mentioned to you ...
4 years, 11 months ago (2016-01-06 15:22:53 UTC) #29
Charles
PTAL. I think this is finally ready for submission. https://codereview.chromium.org/1492583002/diff/140001/components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestContextTest.java File components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestContextTest.java (right): https://codereview.chromium.org/1492583002/diff/140001/components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestContextTest.java#newcode128 components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestContextTest.java:128: ...
4 years, 11 months ago (2016-01-06 19:17:52 UTC) #30
pauljensen
My final set of comments before approving. https://codereview.chromium.org/1492583002/diff/200001/components/cronet/android/test/javatests/src/org/chromium/net/CronetTestBase.java File components/cronet/android/test/javatests/src/org/chromium/net/CronetTestBase.java (right): https://codereview.chromium.org/1492583002/diff/200001/components/cronet/android/test/javatests/src/org/chromium/net/CronetTestBase.java#newcode190 components/cronet/android/test/javatests/src/org/chromium/net/CronetTestBase.java:190: public @interface ...
4 years, 11 months ago (2016-01-07 04:33:38 UTC) #31
Charles
PTAL https://codereview.chromium.org/1492583002/diff/200001/components/cronet/android/test/javatests/src/org/chromium/net/CronetTestBase.java File components/cronet/android/test/javatests/src/org/chromium/net/CronetTestBase.java (right): https://codereview.chromium.org/1492583002/diff/200001/components/cronet/android/test/javatests/src/org/chromium/net/CronetTestBase.java#newcode190 components/cronet/android/test/javatests/src/org/chromium/net/CronetTestBase.java:190: public @interface OnlyRunNativeCronet {} On 2016/01/07 04:33:38, pauljensen ...
4 years, 11 months ago (2016-01-07 16:10:02 UTC) #32
pauljensen
lgtm! Thanks again for writing this! nit: you can remove the "BUG=" line from the ...
4 years, 11 months ago (2016-01-07 17:00:00 UTC) #33
Charles
https://codereview.chromium.org/1492583002/diff/260001/components/cronet/android/api/src/org/chromium/net/JavaCronetEngine.java File components/cronet/android/api/src/org/chromium/net/JavaCronetEngine.java (right): https://codereview.chromium.org/1492583002/diff/260001/components/cronet/android/api/src/org/chromium/net/JavaCronetEngine.java#newcode55 components/cronet/android/api/src/org/chromium/net/JavaCronetEngine.java:55: this.mUserAgent = userAgent; On 2016/01/07 17:00:00, pauljensen wrote: > ...
4 years, 11 months ago (2016-01-07 19:03:28 UTC) #35
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1492583002/260001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1492583002/260001
4 years, 11 months ago (2016-01-07 19:17:04 UTC) #37
commit-bot: I haz the power
Committed patchset #14 (id:260001)
4 years, 11 months ago (2016-01-07 19:46:46 UTC) #39
commit-bot: I haz the power
Patchset 14 (id:??) landed as https://crrev.com/5632bf5e2836df74ca4d92e98c05540d6b4e62f2 Cr-Commit-Position: refs/heads/master@{#368127}
4 years, 11 months ago (2016-01-07 19:47:53 UTC) #41
pauljensen
4 years, 9 months ago (2016-03-17 12:10:04 UTC) #42
Message was sent while issue was closed.
https://codereview.chromium.org/1492583002/diff/60001/components/cronet/andro...
File components/cronet/android/api/src/org/chromium/net/InputStreamChannel.java
(right):

https://codereview.chromium.org/1492583002/diff/60001/components/cronet/andro...
components/cronet/android/api/src/org/chromium/net/InputStreamChannel.java:57:
byte[] tmpBuf = new byte[Math.min(reasonableToRead, MAX_TMP_BUFFER_SIZE)];
On 2015/12/11 16:45:39, Charles wrote:
> On 2015/12/08 19:49:52, pauljensen wrote:
> > it's interesting that you marked your ints final but not your byte[].  I get
> > int's are primitive and an array is a reference.  Is there a style guide
> > recommendation for this?  otherwise it seems inconsistent.
> 
> The style guide is "don't put final on local variables, unless it's required
or
> it makes the code easier to follow". I tend to interpret that in a way that
uses
> final on variables in three cases:
> 
> 1. Variable is accessed in an anonymous class (has to be final)
> 2. Variable is declared, and there's some complex code that initializes it -
by
> declaring it final, the compiler proves that it can only be initialized once,
> and that it must be initialized. The "final int read" up earlier lets you skip
> checking that its results might not be populated or might be overwritten.
> 3. Variable is in a mix of other, similarly typed variables. I could see
myself
> accidentally reassigning possibleToRead or reasonableToRead, since there are a
> bunch of ints floating around those three lines of code, but that case is a
> little less defensible. 
> 
> I didn't mark tmpBuf final, because it's the only byte[] in that area of code,
> and the code from when it's declared to when it goes out of scope is very
> simple, and there's little opportunity for confusion.

Charles, what is "The style guide" you are referring to?

Powered by Google App Engine
This is Rietveld 408576698