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

Issue 945843003: [Cronet] Do not call into native adapter after it is destroyed in ChromiumUrlRequest.java (Closed)

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

Description

[Cronet] Do not call into native adapter after it is destroyed in ChromiumUrlRequest.java If consumer calls GetHttpStatusCode/GetHttpStatusText after the request adapter has been destroyed, we will be in trouble. The new APIs don't have this problem. This CL adds null checks on the Java side to make sure we won't call into the native adapter when it is destroyed. BUG=460161 Committed: https://crrev.com/97b833e5aeae69178c3c3088702addc88e65c747 Cr-Commit-Position: refs/heads/master@{#319522}

Patch Set 1 #

Total comments: 6

Patch Set 2 : Do null check on java side and cache status code and text #

Total comments: 12

Patch Set 3 : Addressed Comments #

Total comments: 8

Patch Set 4 : check getAllHeaders() throw exception #

Total comments: 8

Patch Set 5 : Address comments #

Total comments: 2

Patch Set 6 : removed mRecycled and used lock when calling native methods on the adapter object #

Total comments: 5

Patch Set 7 : Addressed Misha's comments #

Total comments: 5

Patch Set 8 : Added test in the async case #

Total comments: 2

Patch Set 9 : typo #

Unified diffs Side-by-side diffs Delta from patch set Stats (+221 lines, -127 lines) Patch
M components/cronet/android/chromium_url_request.cc View 1 15 chunks +17 lines, -18 lines 0 comments Download
M components/cronet/android/java/src/org/chromium/net/ChromiumUrlRequest.java View 1 2 3 4 5 6 14 chunks +73 lines, -46 lines 0 comments Download
M components/cronet/android/java/src/org/chromium/net/HttpUrlRequest.java View 1 2 1 chunk +2 lines, -1 line 0 comments Download
M components/cronet/android/test/javatests/src/org/chromium/net/MockUrlRequestJobTest.java View 1 2 3 4 5 6 7 8 8 chunks +112 lines, -50 lines 0 comments Download
M components/cronet/android/test/javatests/src/org/chromium/net/TestHttpUrlRequestListener.java View 1 2 3 4 1 chunk +17 lines, -12 lines 0 comments Download

Messages

Total messages: 32 (6 generated)
xunjieli
Here's a possible way to mitigate the problem. Not sure if there's a better solution ...
5 years, 10 months ago (2015-02-20 22:39:18 UTC) #2
mmenke
https://codereview.chromium.org/945843003/diff/1/components/cronet/android/chromium_url_request.cc File components/cronet/android/chromium_url_request.cc (right): https://codereview.chromium.org/945843003/diff/1/components/cronet/android/chromium_url_request.cc#newcode251 components/cronet/android/chromium_url_request.cc:251: if (request_adapter == NULL) I think these checks make ...
5 years, 10 months ago (2015-02-20 23:19:43 UTC) #3
xunjieli
+milo Thanks for the review! I have made the suggested changes. PTAL. https://codereview.chromium.org/945843003/diff/1/components/cronet/android/chromium_url_request.cc File components/cronet/android/chromium_url_request.cc ...
5 years, 10 months ago (2015-02-25 21:31:28 UTC) #6
mmenke
https://codereview.chromium.org/945843003/diff/40001/components/cronet/android/java/src/org/chromium/net/ChromiumUrlRequest.java File components/cronet/android/java/src/org/chromium/net/ChromiumUrlRequest.java (right): https://codereview.chromium.org/945843003/diff/40001/components/cronet/android/java/src/org/chromium/net/ChromiumUrlRequest.java#newcode150 components/cronet/android/java/src/org/chromium/net/ChromiumUrlRequest.java:150: mHttpStatusCode = nativeGetHttpStatusCode(mUrlRequestAdapter); Can we populate this in onResponseStarted ...
5 years, 10 months ago (2015-02-25 23:43:57 UTC) #7
mmenke
https://codereview.chromium.org/945843003/diff/40001/components/cronet/android/java/src/org/chromium/net/ChromiumUrlRequest.java File components/cronet/android/java/src/org/chromium/net/ChromiumUrlRequest.java (right): https://codereview.chromium.org/945843003/diff/40001/components/cronet/android/java/src/org/chromium/net/ChromiumUrlRequest.java#newcode184 components/cronet/android/java/src/org/chromium/net/ChromiumUrlRequest.java:184: mErrorCode = nativeGetErrorCode(mUrlRequestAdapter); On 2015/02/25 23:43:57, mmenke wrote: > ...
5 years, 10 months ago (2015-02-25 23:45:37 UTC) #8
miloslav
https://codereview.chromium.org/945843003/diff/40001/components/cronet/android/chromium_url_request.cc File components/cronet/android/chromium_url_request.cc (right): https://codereview.chromium.org/945843003/diff/40001/components/cronet/android/chromium_url_request.cc#newcode165 components/cronet/android/chromium_url_request.cc:165: DCHECK(request_adapter); It's nice to have these checks, but it ...
5 years, 10 months ago (2015-02-26 15:56:49 UTC) #9
xunjieli
Thanks for the valuable suggestions! PTAL https://codereview.chromium.org/945843003/diff/40001/components/cronet/android/chromium_url_request.cc File components/cronet/android/chromium_url_request.cc (right): https://codereview.chromium.org/945843003/diff/40001/components/cronet/android/chromium_url_request.cc#newcode165 components/cronet/android/chromium_url_request.cc:165: DCHECK(request_adapter); On 2015/02/26 ...
5 years, 9 months ago (2015-02-26 17:54:00 UTC) #10
mef
Do we need to change HttpUrlConnection-based implementation accordingly? https://codereview.chromium.org/945843003/diff/60001/components/cronet/android/chromium_url_request.cc File components/cronet/android/chromium_url_request.cc (left): https://codereview.chromium.org/945843003/diff/60001/components/cronet/android/chromium_url_request.cc#oldcode43 components/cronet/android/chromium_url_request.cc:43: DCHECK(request_adapter); ...
5 years, 9 months ago (2015-02-27 17:24:29 UTC) #11
xunjieli
I checked HttpUrlConnectionUrlRequest.java briefly, I think we are good there, since we are caching http ...
5 years, 9 months ago (2015-02-27 19:17:33 UTC) #12
mmenke
I'm going to defer to Misha on the tests, but LGTM, otherwise. https://codereview.chromium.org/945843003/diff/80001/components/cronet/android/java/src/org/chromium/net/ChromiumUrlRequest.java File components/cronet/android/java/src/org/chromium/net/ChromiumUrlRequest.java ...
5 years, 9 months ago (2015-03-02 19:22:51 UTC) #13
xunjieli
https://codereview.chromium.org/945843003/diff/80001/components/cronet/android/java/src/org/chromium/net/ChromiumUrlRequest.java File components/cronet/android/java/src/org/chromium/net/ChromiumUrlRequest.java (right): https://codereview.chromium.org/945843003/diff/80001/components/cronet/android/java/src/org/chromium/net/ChromiumUrlRequest.java#newcode485 components/cronet/android/java/src/org/chromium/net/ChromiumUrlRequest.java:485: mHttpStatusText = nativeGetHttpStatusText(mUrlRequestAdapter); On 2015/03/02 19:22:50, mmenke wrote: > ...
5 years, 9 months ago (2015-03-02 19:36:15 UTC) #14
mmenke
https://codereview.chromium.org/945843003/diff/80001/components/cronet/android/java/src/org/chromium/net/ChromiumUrlRequest.java File components/cronet/android/java/src/org/chromium/net/ChromiumUrlRequest.java (right): https://codereview.chromium.org/945843003/diff/80001/components/cronet/android/java/src/org/chromium/net/ChromiumUrlRequest.java#newcode485 components/cronet/android/java/src/org/chromium/net/ChromiumUrlRequest.java:485: mHttpStatusText = nativeGetHttpStatusText(mUrlRequestAdapter); On 2015/03/02 19:36:15, xunjieli wrote: > ...
5 years, 9 months ago (2015-03-02 20:41:58 UTC) #15
xunjieli
https://codereview.chromium.org/945843003/diff/80001/components/cronet/android/java/src/org/chromium/net/ChromiumUrlRequest.java File components/cronet/android/java/src/org/chromium/net/ChromiumUrlRequest.java (right): https://codereview.chromium.org/945843003/diff/80001/components/cronet/android/java/src/org/chromium/net/ChromiumUrlRequest.java#newcode481 components/cronet/android/java/src/org/chromium/net/ChromiumUrlRequest.java:481: // onResponseStarted is often not invoked. On 2015/03/02 19:22:50, ...
5 years, 9 months ago (2015-03-02 22:33:57 UTC) #16
mef
https://codereview.chromium.org/945843003/diff/100001/components/cronet/android/test/javatests/src/org/chromium/net/MockUrlRequestJobTest.java File components/cronet/android/test/javatests/src/org/chromium/net/MockUrlRequestJobTest.java (right): https://codereview.chromium.org/945843003/diff/100001/components/cronet/android/test/javatests/src/org/chromium/net/MockUrlRequestJobTest.java#newcode70 components/cronet/android/test/javatests/src/org/chromium/net/MockUrlRequestJobTest.java:70: // After underlying adapter request is destroyed. getAllHeaders() I ...
5 years, 9 months ago (2015-03-02 22:58:02 UTC) #17
xunjieli
Talked to Misha offline. We decided to remove mRecycled, since its name is somewhat confusing, ...
5 years, 9 months ago (2015-03-03 22:53:12 UTC) #19
mef
https://codereview.chromium.org/945843003/diff/140001/components/cronet/android/chromium_url_request.cc File components/cronet/android/chromium_url_request.cc (right): https://codereview.chromium.org/945843003/diff/140001/components/cronet/android/chromium_url_request.cc#newcode407 components/cronet/android/chromium_url_request.cc:407: DCHECK(request_adapter); BUG? Java side only calls validateNotStarted(), which doesn't ...
5 years, 9 months ago (2015-03-06 17:15:35 UTC) #20
xunjieli
Thanks for the review! https://codereview.chromium.org/945843003/diff/140001/components/cronet/android/chromium_url_request.cc File components/cronet/android/chromium_url_request.cc (right): https://codereview.chromium.org/945843003/diff/140001/components/cronet/android/chromium_url_request.cc#newcode407 components/cronet/android/chromium_url_request.cc:407: DCHECK(request_adapter); On 2015/03/06 17:15:35, mef ...
5 years, 9 months ago (2015-03-06 18:19:10 UTC) #21
mef
Thanks a lot, just one more thing... https://codereview.chromium.org/945843003/diff/160001/components/cronet/android/test/javatests/src/org/chromium/net/MockUrlRequestJobTest.java File components/cronet/android/test/javatests/src/org/chromium/net/MockUrlRequestJobTest.java (right): https://codereview.chromium.org/945843003/diff/160001/components/cronet/android/test/javatests/src/org/chromium/net/MockUrlRequestJobTest.java#newcode247 components/cronet/android/test/javatests/src/org/chromium/net/MockUrlRequestJobTest.java:247: assertFalse(channel.isOpen()); Should ...
5 years, 9 months ago (2015-03-06 18:26:24 UTC) #22
xunjieli
https://codereview.chromium.org/945843003/diff/160001/components/cronet/android/test/javatests/src/org/chromium/net/MockUrlRequestJobTest.java File components/cronet/android/test/javatests/src/org/chromium/net/MockUrlRequestJobTest.java (right): https://codereview.chromium.org/945843003/diff/160001/components/cronet/android/test/javatests/src/org/chromium/net/MockUrlRequestJobTest.java#newcode247 components/cronet/android/test/javatests/src/org/chromium/net/MockUrlRequestJobTest.java:247: assertFalse(channel.isOpen()); On 2015/03/06 18:26:24, mef wrote: > Should we ...
5 years, 9 months ago (2015-03-06 18:30:29 UTC) #23
mef
https://codereview.chromium.org/945843003/diff/160001/components/cronet/android/test/javatests/src/org/chromium/net/MockUrlRequestJobTest.java File components/cronet/android/test/javatests/src/org/chromium/net/MockUrlRequestJobTest.java (right): https://codereview.chromium.org/945843003/diff/160001/components/cronet/android/test/javatests/src/org/chromium/net/MockUrlRequestJobTest.java#newcode247 components/cronet/android/test/javatests/src/org/chromium/net/MockUrlRequestJobTest.java:247: assertFalse(channel.isOpen()); On 2015/03/06 18:30:28, xunjieli wrote: > On 2015/03/06 ...
5 years, 9 months ago (2015-03-06 18:52:54 UTC) #24
xunjieli
Thanks for the review! https://codereview.chromium.org/945843003/diff/160001/components/cronet/android/test/javatests/src/org/chromium/net/MockUrlRequestJobTest.java File components/cronet/android/test/javatests/src/org/chromium/net/MockUrlRequestJobTest.java (right): https://codereview.chromium.org/945843003/diff/160001/components/cronet/android/test/javatests/src/org/chromium/net/MockUrlRequestJobTest.java#newcode247 components/cronet/android/test/javatests/src/org/chromium/net/MockUrlRequestJobTest.java:247: assertFalse(channel.isOpen()); On 2015/03/06 18:52:54, mef ...
5 years, 9 months ago (2015-03-06 19:12:16 UTC) #25
mef
lgtm https://codereview.chromium.org/945843003/diff/160001/components/cronet/android/test/javatests/src/org/chromium/net/MockUrlRequestJobTest.java File components/cronet/android/test/javatests/src/org/chromium/net/MockUrlRequestJobTest.java (right): https://codereview.chromium.org/945843003/diff/160001/components/cronet/android/test/javatests/src/org/chromium/net/MockUrlRequestJobTest.java#newcode247 components/cronet/android/test/javatests/src/org/chromium/net/MockUrlRequestJobTest.java:247: assertFalse(channel.isOpen()); On 2015/03/06 19:12:15, xunjieli wrote: > On ...
5 years, 9 months ago (2015-03-06 19:32:18 UTC) #26
xunjieli
Makes sense. Thanks for the review! https://codereview.chromium.org/945843003/diff/180001/components/cronet/android/test/javatests/src/org/chromium/net/MockUrlRequestJobTest.java File components/cronet/android/test/javatests/src/org/chromium/net/MockUrlRequestJobTest.java (right): https://codereview.chromium.org/945843003/diff/180001/components/cronet/android/test/javatests/src/org/chromium/net/MockUrlRequestJobTest.java#newcode249 components/cronet/android/test/javatests/src/org/chromium/net/MockUrlRequestJobTest.java:249: // checkAfterAdapterDestroyed() aquire ...
5 years, 9 months ago (2015-03-06 21:29:30 UTC) #27
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/945843003/200001
5 years, 9 months ago (2015-03-06 21:34:21 UTC) #30
commit-bot: I haz the power
Committed patchset #9 (id:200001)
5 years, 9 months ago (2015-03-06 23:04:27 UTC) #31
commit-bot: I haz the power
5 years, 9 months ago (2015-03-06 23:05:29 UTC) #32
Message was sent while issue was closed.
Patchset 9 (id:??) landed as
https://crrev.com/97b833e5aeae69178c3c3088702addc88e65c747
Cr-Commit-Position: refs/heads/master@{#319522}

Powered by Google App Engine
This is Rietveld 408576698