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

Issue 725683002: [Cronet] Initial implementation of HttpURLConnection (Closed)

Created:
6 years, 1 month ago by xunjieli
Modified:
6 years ago
Reviewers:
mef, mmenke
CC:
chromium-reviews, cbentzel+watch_chromium.org
Base URL:
https://chromium.googlesource.com/chromium/src.git@master
Project:
chromium
Visibility:
Public.

Description

[Cronet] Initial implementation of HttpURLConnection This CL adds basic support for setting headers and reading response. BUG=398997 Committed: https://crrev.com/2a66c58f2d83717e43a50b39f75b3facc24e70f8 Cr-Commit-Position: refs/heads/master@{#306939}

Patch Set 1 #

Total comments: 9

Patch Set 2 : Added a private message loop #

Total comments: 2

Patch Set 3 : Fixed comments in the code #

Total comments: 34

Patch Set 4 : Addressed comments #

Patch Set 5 : Allocated and copied byte buffer #

Patch Set 6 : Get data only when required #

Total comments: 1

Patch Set 7 : Updated test #

Total comments: 26

Patch Set 8 : Addressed Matt's comments #

Total comments: 31

Patch Set 9 : Modified Tests #

Patch Set 10 : Added test fixture to compare with the default implementation #

Total comments: 29

Patch Set 11 : Misha's and Matt's comments #

Total comments: 18

Patch Set 12 : Exception handling #

Total comments: 1

Patch Set 13 : Added a null check #

Patch Set 14 : Added throw clause #

Total comments: 6

Patch Set 15 : Addressed Misha's comments #

Total comments: 22

Patch Set 16 : Addressed Matt's comments #

Total comments: 4

Patch Set 17 : Terminate loop if waiting for task has been interrupted #

Total comments: 13

Patch Set 18 : Pass in UrlRequestConfig and make MessageLoop implments Executor #

Total comments: 3

Patch Set 19 : make loop failed in all exceptions #

Total comments: 9

Patch Set 20 : Fix findbug warnings #

Unified diffs Side-by-side diffs Delta from patch set Stats (+984 lines, -1 line) Patch
M components/cronet.gypi View 1 2 3 4 5 6 7 1 chunk +5 lines, -0 lines 0 comments Download
A 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 16 17 1 chunk +206 lines, -0 lines 0 comments Download
A components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLStreamHandler.java View 1 2 3 1 chunk +46 lines, -0 lines 0 comments Download
A components/cronet/android/java/src/org/chromium/net/urlconnection/CronetInputStream.java View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 chunk +46 lines, -0 lines 0 comments Download
A components/cronet/android/java/src/org/chromium/net/urlconnection/CronetURLStreamHandlerFactory.java View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 chunk +51 lines, -0 lines 0 comments Download
A components/cronet/android/java/src/org/chromium/net/urlconnection/MessageLoop.java View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 1 chunk +112 lines, -0 lines 0 comments Download
M components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/CronetTestBase.java View 1 2 3 4 5 6 7 8 9 2 chunks +50 lines, -0 lines 0 comments Download
A components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/urlconnection/CronetHttpURLConnectionTest.java View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 1 chunk +351 lines, -0 lines 0 comments Download
A components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/urlconnection/MessageLoopTest.java View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 1 chunk +111 lines, -0 lines 0 comments Download
M components/cronet/android/test/src/org/chromium/cronet_test_apk/CronetTestActivity.java View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 3 chunks +6 lines, -1 line 0 comments Download

Messages

Total messages: 65 (8 generated)
xunjieli
This is an initial CL to get things set up. PTAL. Thanks! https://codereview.chromium.org/725683002/diff/1/components/cronet.gypi File components/cronet.gypi ...
6 years, 1 month ago (2014-11-13 19:02:38 UTC) #2
mef
nice! https://codereview.chromium.org/725683002/diff/1/components/cronet/android/java/src/org/chromium/net/urlconnection/ByteBufferInputStream.java File components/cronet/android/java/src/org/chromium/net/urlconnection/ByteBufferInputStream.java (right): https://codereview.chromium.org/725683002/diff/1/components/cronet/android/java/src/org/chromium/net/urlconnection/ByteBufferInputStream.java#newcode17 components/cronet/android/java/src/org/chromium/net/urlconnection/ByteBufferInputStream.java:17: public ByteBufferInputStream(ByteBuffer buf) { I don't think you ...
6 years, 1 month ago (2014-11-13 19:16:17 UTC) #3
xunjieli
https://codereview.chromium.org/725683002/diff/1/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/725683002/diff/1/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java#newcode120 components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java:120: public final void addRequestProperty(String key, String value) { On ...
6 years, 1 month ago (2014-11-13 19:24:11 UTC) #4
mmenke
https://codereview.chromium.org/725683002/diff/1/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/725683002/diff/1/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java#newcode194 components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java:194: Looper.loop(); Problem: This is noticeable to the embedder, and ...
6 years, 1 month ago (2014-11-13 19:31:28 UTC) #5
mmenke
On 2014/11/13 19:31:28, mmenke wrote: > https://codereview.chromium.org/725683002/diff/1/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java > File > components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java > (right): > > ...
6 years, 1 month ago (2014-11-13 19:54:04 UTC) #6
xunjieli
I have modified my CL to run a private message loop instead of running current ...
6 years, 1 month ago (2014-11-14 16:07:47 UTC) #7
xunjieli
https://codereview.chromium.org/725683002/diff/20001/components/cronet.gypi File components/cronet.gypi (right): https://codereview.chromium.org/725683002/diff/20001/components/cronet.gypi#newcode242 components/cronet.gypi:242: { # cronet_tests.jar implements HttpUrlRequest interface using Chromium stack ...
6 years, 1 month ago (2014-11-14 16:11:17 UTC) #8
mmenke
Sorry, not going to have a chance to get to this today. I'll do it ...
6 years, 1 month ago (2014-11-17 21:36:40 UTC) #9
mmenke
https://codereview.chromium.org/725683002/diff/40001/components/cronet.gypi File components/cronet.gypi (right): https://codereview.chromium.org/725683002/diff/40001/components/cronet.gypi#newcode243 components/cronet.gypi:243: 'target_name': 'cronet_tests', Why is this needed? https://codereview.chromium.org/725683002/diff/40001/components/cronet/android/java/src/org/chromium/net/urlconnection/ByteBufferInputStream.java File components/cronet/android/java/src/org/chromium/net/urlconnection/ByteBufferInputStream.java ...
6 years, 1 month ago (2014-11-18 15:53:52 UTC) #10
xunjieli
Thanks for the review! Uploaded a new patch. PTAL https://codereview.chromium.org/725683002/diff/40001/components/cronet.gypi File components/cronet.gypi (right): https://codereview.chromium.org/725683002/diff/40001/components/cronet.gypi#newcode243 components/cronet.gypi:243: ...
6 years, 1 month ago (2014-11-18 18:13:36 UTC) #11
mmenke
Quick responses https://codereview.chromium.org/725683002/diff/40001/components/cronet/android/java/src/org/chromium/net/urlconnection/ByteBufferInputStream.java File components/cronet/android/java/src/org/chromium/net/urlconnection/ByteBufferInputStream.java (right): https://codereview.chromium.org/725683002/diff/40001/components/cronet/android/java/src/org/chromium/net/urlconnection/ByteBufferInputStream.java#newcode18 components/cronet/android/java/src/org/chromium/net/urlconnection/ByteBufferInputStream.java:18: // Makes a read-only copy of the ...
6 years, 1 month ago (2014-11-18 18:40:59 UTC) #12
xunjieli
On 2014/11/18 18:40:59, mmenke wrote: > Quick responses > > https://codereview.chromium.org/725683002/diff/40001/components/cronet/android/java/src/org/chromium/net/urlconnection/ByteBufferInputStream.java > File > components/cronet/android/java/src/org/chromium/net/urlconnection/ByteBufferInputStream.java ...
6 years, 1 month ago (2014-11-18 18:44:41 UTC) #13
mmenke
On 2014/11/18 18:44:41, xunjieli wrote: > On 2014/11/18 18:40:59, mmenke wrote: > > Quick responses ...
6 years, 1 month ago (2014-11-18 20:47:06 UTC) #14
xunjieli
Thanks for the suggestion. I will try to see if I can get this working. ...
6 years, 1 month ago (2014-11-18 21:02:03 UTC) #15
mmenke
On 2014/11/18 21:02:03, xunjieli wrote: > Thanks for the suggestion. I will try to see ...
6 years, 1 month ago (2014-11-18 21:08:18 UTC) #16
xunjieli
>I was actually thinking manual testing - make a server very slowly sends data, >and ...
6 years, 1 month ago (2014-11-19 19:15:47 UTC) #17
mmenke
Sorry for slowness. Looks pretty good. Haven't yet dug into tests. https://codereview.chromium.org/725683002/diff/120001/components/cronet.gypi File components/cronet.gypi (right): ...
6 years, 1 month ago (2014-11-20 18:52:37 UTC) #18
xunjieli
Thanks for the review! PTAL https://codereview.chromium.org/725683002/diff/120001/components/cronet.gypi File components/cronet.gypi (right): https://codereview.chromium.org/725683002/diff/120001/components/cronet.gypi#newcode243 components/cronet.gypi:243: 'target_name': 'cronet_tests', On 2014/11/20 ...
6 years, 1 month ago (2014-11-20 20:32:00 UTC) #19
mmenke
https://codereview.chromium.org/725683002/diff/140001/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/725683002/diff/140001/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java#newcode34 components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java:34: private final UrlRequest mRequest; optional: Maybe another line break ...
6 years, 1 month ago (2014-11-21 16:53:07 UTC) #20
xunjieli
Matt, I addressed some of the issues. Two major ones remaining: #1. Connect -> Disconnect ...
6 years, 1 month ago (2014-11-21 20:30:56 UTC) #21
mmenke
A couple responses. I'm fine with landing this without it, but before we start fleshing ...
6 years, 1 month ago (2014-11-21 21:26:12 UTC) #22
xunjieli
Thanks for the suggestions! I will work on the tests now. On Fri, Nov 21, ...
6 years, 1 month ago (2014-11-21 22:03:25 UTC) #23
xunjieli
Matt, I have added test support to compare default implementation with Cronet's wrapper. I also ...
6 years ago (2014-11-24 18:52:49 UTC) #25
mmenke
On 2014/11/24 18:52:49, xunjieli wrote: > Matt, I have added test support to compare default ...
6 years ago (2014-11-25 15:25:08 UTC) #26
xunjieli
Sounds good! thanks! On Tue, Nov 25, 2014 at 10:25 AM, <mmenke@chromium.org> wrote: > On ...
6 years ago (2014-11-25 15:26:49 UTC) #27
mmenke
Sorry, started another pass, but won't have comments until tomorrow.
6 years ago (2014-11-25 22:20:59 UTC) #28
mef
Couple of quick comments. Also, is it really a good idea to catch exceptions and ...
6 years ago (2014-11-25 23:04:23 UTC) #29
mmenke
https://codereview.chromium.org/725683002/diff/200001/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/725683002/diff/200001/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java#newcode32 components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java:32: private final BlockingQueue<MessageLoop.Message> mMessageQueue; Rather than having the CronetHttpURLConnection ...
6 years ago (2014-11-26 14:59:47 UTC) #30
xunjieli
One major issue remaining is how we should handle exceptions, particularly those in MessageLoop.java. Thoughts? ...
6 years ago (2014-11-26 16:11:56 UTC) #31
mef
https://codereview.chromium.org/725683002/diff/200001/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/725683002/diff/200001/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java#newcode86 components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java:86: e.printStackTrace(); On 2014/11/26 16:11:55, xunjieli wrote: > On 2014/11/25 ...
6 years ago (2014-11-26 16:36:04 UTC) #32
xunjieli
> It sounds like you can get that exception when you are waiting for the ...
6 years ago (2014-11-26 16:48:27 UTC) #33
mmenke
Still need to look at tests again. https://codereview.chromium.org/725683002/diff/220001/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/725683002/diff/220001/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java#newcode73 components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java:73: public void ...
6 years ago (2014-11-26 17:09:12 UTC) #34
xunjieli
Thanks for the review! Just realized that connect() and get*() calls all have throw clauses, ...
6 years ago (2014-11-26 18:37:14 UTC) #35
xunjieli
https://codereview.chromium.org/725683002/diff/240001/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/725683002/diff/240001/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java#newcode109 components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java:109: return mResponseInfo.getHttpStatusText(); I should probably add a null check ...
6 years ago (2014-11-26 18:41:25 UTC) #36
xunjieli
Looking at my CL this morning, I think my exception handling in CronetHttpURLConnection doesn't look ...
6 years ago (2014-12-01 14:53:37 UTC) #37
mef
https://codereview.chromium.org/725683002/diff/320001/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/725683002/diff/320001/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java#newcode58 components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java:58: mMessageLoop.postTask(command); I feel that referencing mMessageLoop from the parent ...
6 years ago (2014-12-01 18:28:54 UTC) #40
xunjieli
Thanks for the review! I have uploaded a new patch to address the comments. PTAL. ...
6 years ago (2014-12-01 19:19:52 UTC) #41
mmenke
Not sure how to improve your exception logic. https://codereview.chromium.org/725683002/diff/340001/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/725683002/diff/340001/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java#newcode52 components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java:52: private ...
6 years ago (2014-12-02 19:01:50 UTC) #42
xunjieli
Thanks for the review! I have uploaded a new patch to address the comments. PTAL ...
6 years ago (2014-12-02 20:35:34 UTC) #43
mmenke
https://codereview.chromium.org/725683002/diff/340001/components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/urlconnection/CronetHttpURLConnectionTest.java File components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/urlconnection/CronetHttpURLConnectionTest.java (right): https://codereview.chromium.org/725683002/diff/340001/components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/urlconnection/CronetHttpURLConnectionTest.java#newcode95 components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/urlconnection/CronetHttpURLConnectionTest.java:95: assertEquals("GET", getResponseAsString(urlConnection)); On 2014/12/02 20:35:34, xunjieli wrote: > On ...
6 years ago (2014-12-02 20:48:11 UTC) #44
mmenke
One other comment https://codereview.chromium.org/725683002/diff/340001/components/cronet/android/java/src/org/chromium/net/urlconnection/MessageLoop.java File components/cronet/android/java/src/org/chromium/net/urlconnection/MessageLoop.java (right): https://codereview.chromium.org/725683002/diff/340001/components/cronet/android/java/src/org/chromium/net/urlconnection/MessageLoop.java#newcode48 components/cronet/android/java/src/org/chromium/net/urlconnection/MessageLoop.java:48: throw new IOException(e); On 2014/12/02 20:35:34, ...
6 years ago (2014-12-02 20:51:08 UTC) #45
xunjieli
I changed the CL to terminate the loop if waiting for task has been interrupted. ...
6 years ago (2014-12-02 21:21:51 UTC) #46
mmenke
I'm happy with this, just some comments on your latest changes. https://codereview.chromium.org/725683002/diff/380001/components/cronet/android/java/src/org/chromium/net/urlconnection/MessageLoop.java File components/cronet/android/java/src/org/chromium/net/urlconnection/MessageLoop.java (right): ...
6 years ago (2014-12-03 16:21:01 UTC) #47
xunjieli
Thanks for the review! PTAL. https://codereview.chromium.org/725683002/diff/380001/components/cronet/android/java/src/org/chromium/net/urlconnection/MessageLoop.java File components/cronet/android/java/src/org/chromium/net/urlconnection/MessageLoop.java (right): https://codereview.chromium.org/725683002/diff/380001/components/cronet/android/java/src/org/chromium/net/urlconnection/MessageLoop.java#newcode13 components/cronet/android/java/src/org/chromium/net/urlconnection/MessageLoop.java:13: * {@link CronetHttpURLConnection}. On ...
6 years ago (2014-12-03 19:03:31 UTC) #49
mmenke
https://codereview.chromium.org/725683002/diff/420001/components/cronet/android/java/src/org/chromium/net/urlconnection/MessageLoop.java File components/cronet/android/java/src/org/chromium/net/urlconnection/MessageLoop.java (right): https://codereview.chromium.org/725683002/diff/420001/components/cronet/android/java/src/org/chromium/net/urlconnection/MessageLoop.java#newcode65 components/cronet/android/java/src/org/chromium/net/urlconnection/MessageLoop.java:65: } else if (e instanceof RuntimeException) { On 2014/12/03 ...
6 years ago (2014-12-03 20:05:39 UTC) #50
xunjieli
Thanks for the review. I think your concern is valid, we should prevent re-spinning the ...
6 years ago (2014-12-03 20:46:53 UTC) #51
mmenke
On 2014/12/03 20:46:53, xunjieli wrote: > Thanks for the review. I think your concern is ...
6 years ago (2014-12-03 21:42:49 UTC) #52
mmenke
LGTM
6 years ago (2014-12-04 18:11:24 UTC) #53
mef
https://codereview.chromium.org/725683002/diff/440001/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/725683002/diff/440001/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java#newcode26 components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java:26: public class CronetHttpURLConnection extends HttpURLConnection { So, what happens ...
6 years ago (2014-12-04 20:01:16 UTC) #54
xunjieli
https://codereview.chromium.org/725683002/diff/440001/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/725683002/diff/440001/components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java#newcode26 components/cronet/android/java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java:26: public class CronetHttpURLConnection extends HttpURLConnection { On 2014/12/04 20:01:15, ...
6 years ago (2014-12-04 20:06:50 UTC) #55
mef
I think it is a good start, and it is definitely step one out of ...
6 years ago (2014-12-04 20:37:56 UTC) #56
xunjieli
Yes, once this CL is in, I can proceed with the rest in parallel, and ...
6 years ago (2014-12-04 20:55:53 UTC) #57
mef
On 2014/12/04 20:55:53, xunjieli wrote: > Yes, once this CL is in, I can proceed ...
6 years ago (2014-12-04 20:59:43 UTC) #58
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/725683002/440001
6 years ago (2014-12-04 22:13:01 UTC) #60
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/725683002/460001
6 years ago (2014-12-04 23:15:35 UTC) #63
commit-bot: I haz the power
Committed patchset #20 (id:460001)
6 years ago (2014-12-05 00:04:08 UTC) #64
commit-bot: I haz the power
6 years ago (2014-12-05 00:05:30 UTC) #65
Message was sent while issue was closed.
Patchset 20 (id:??) landed as
https://crrev.com/2a66c58f2d83717e43a50b39f75b3facc24e70f8
Cr-Commit-Position: refs/heads/master@{#306939}

Powered by Google App Engine
This is Rietveld 408576698