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

Issue 498633003: Cache pending JS bridge sync IPC replies, and send in case of RenderFrame deletion. (Closed)

Created:
6 years, 4 months ago by benm (inactive)
Modified:
6 years, 3 months ago
CC:
chromium-reviews, darin-cc_chromium.org, jam, mnaganov (inactive)
Base URL:
https://chromium.googlesource.com/chromium/src.git@master
Project:
chromium
Visibility:
Public.

Description

Cache pending JS bridge sync IPC replies, and send in case of RenderFrame deletion. When the WebView app makes a call to java over the JavaScriptBridge, we leave the renderer hanging on a synchronous IPC. Once control is passed into Java, it's possible that the WebView may get destroyed (and thus the IPC channel back to the renderer closed) which means we can't unblock the renderer waiting on the IPC response. Instead we cache the IPC reply message and while waiting on Java to come back to us, if we detect that the RenderFrame has been deleted, send a reponse back before the IPC channel is closed. BUG=408188 Committed: https://crrev.com/48334b78f249e571cba998184146045114d46ce0 Cr-Commit-Position: refs/heads/master@{#292631}

Patch Set 1 #

Patch Set 2 : remove logging #

Total comments: 13

Patch Set 3 : comments and a test #

Total comments: 18

Patch Set 4 : Factor out reply_msg param where possible #

Total comments: 2

Patch Set 5 : remove sendreply #

Total comments: 1

Patch Set 6 : nits #

Total comments: 1

Patch Set 7 : spelling #

Unified diffs Side-by-side diffs Delta from patch set Stats (+155 lines, -31 lines) Patch
A android_webview/javatests/src/org/chromium/android_webview/test/AwJavaBridgeTest.java View 1 2 3 4 5 6 1 chunk +74 lines, -0 lines 0 comments Download
M content/browser/android/java/gin_java_bridge_dispatcher_host.h View 1 2 3 4 3 chunks +9 lines, -5 lines 0 comments Download
M content/browser/android/java/gin_java_bridge_dispatcher_host.cc View 1 2 3 4 5 9 chunks +69 lines, -26 lines 0 comments Download
M content/common/android/gin_java_bridge_errors.h View 1 2 1 chunk +1 line, -0 lines 0 comments Download
M content/common/android/gin_java_bridge_errors.cc View 1 2 1 chunk +2 lines, -0 lines 0 comments Download

Messages

Total messages: 26 (0 generated)
benm (inactive)
ptal
6 years, 4 months ago (2014-08-22 19:15:46 UTC) #1
boliu
today I learned all javascript bridge methods are synchronous ipc to UI thread :( :( ...
6 years, 4 months ago (2014-08-22 21:05:17 UTC) #2
mnaganov (inactive)
Looks good, thanks for looking into this! (although, please don't wait for a formal approval, ...
6 years, 4 months ago (2014-08-24 13:31:50 UTC) #3
boliu
On 2014/08/24 13:31:50, mnaganov_OOO_until_Sep_1st wrote: > Looks good, thanks for looking into this! (although, please ...
6 years, 4 months ago (2014-08-24 13:55:16 UTC) #4
benm (inactive)
thanks all, new ps coming but trying to write a test too. https://codereview.chromium.org/498633003/diff/20001/content/browser/android/java/gin_java_bridge_dispatcher_host.cc File content/browser/android/java/gin_java_bridge_dispatcher_host.cc ...
6 years, 3 months ago (2014-08-26 15:42:40 UTC) #5
benm (inactive)
ptal
6 years, 3 months ago (2014-08-26 19:49:48 UTC) #6
boliu
only looked at host https://codereview.chromium.org/498633003/diff/40001/content/browser/android/java/gin_java_bridge_dispatcher_host.cc File content/browser/android/java/gin_java_bridge_dispatcher_host.cc (right): https://codereview.chromium.org/498633003/diff/40001/content/browser/android/java/gin_java_bridge_dispatcher_host.cc#newcode376 content/browser/android/java/gin_java_bridge_dispatcher_host.cc:376: DCHECK(pending_replies_.find(render_frame_host) == pending_replies_.end()); delete reply_msg ...
6 years, 3 months ago (2014-08-27 17:47:35 UTC) #7
benm (inactive)
https://codereview.chromium.org/498633003/diff/40001/content/browser/android/java/gin_java_bridge_dispatcher_host.cc File content/browser/android/java/gin_java_bridge_dispatcher_host.cc (right): https://codereview.chromium.org/498633003/diff/40001/content/browser/android/java/gin_java_bridge_dispatcher_host.cc#newcode376 content/browser/android/java/gin_java_bridge_dispatcher_host.cc:376: DCHECK(pending_replies_.find(render_frame_host) == pending_replies_.end()); On 2014/08/27 17:47:34, boliu wrote: > ...
6 years, 3 months ago (2014-08-27 17:53:35 UTC) #8
boliu
https://codereview.chromium.org/498633003/diff/40001/android_webview/javatests/src/org/chromium/android_webview/test/AwJavaBridgeTest.java File android_webview/javatests/src/org/chromium/android_webview/test/AwJavaBridgeTest.java (right): https://codereview.chromium.org/498633003/diff/40001/android_webview/javatests/src/org/chromium/android_webview/test/AwJavaBridgeTest.java#newcode28 android_webview/javatests/src/org/chromium/android_webview/test/AwJavaBridgeTest.java:28: @Feature({"AndroidWebView", "Android-JavaBridge"}) I think features are supposed to match ...
6 years, 3 months ago (2014-08-27 17:55:56 UTC) #9
benm (inactive)
https://codereview.chromium.org/498633003/diff/40001/content/browser/android/java/gin_java_bridge_dispatcher_host.cc File content/browser/android/java/gin_java_bridge_dispatcher_host.cc (right): https://codereview.chromium.org/498633003/diff/40001/content/browser/android/java/gin_java_bridge_dispatcher_host.cc#newcode376 content/browser/android/java/gin_java_bridge_dispatcher_host.cc:376: DCHECK(pending_replies_.find(render_frame_host) == pending_replies_.end()); On 2014/08/27 17:55:56, boliu wrote: > ...
6 years, 3 months ago (2014-08-27 17:57:50 UTC) #10
boliu
https://codereview.chromium.org/498633003/diff/40001/android_webview/javatests/src/org/chromium/android_webview/test/AwJavaBridgeTest.java File android_webview/javatests/src/org/chromium/android_webview/test/AwJavaBridgeTest.java (right): https://codereview.chromium.org/498633003/diff/40001/android_webview/javatests/src/org/chromium/android_webview/test/AwJavaBridgeTest.java#newcode32 android_webview/javatests/src/org/chromium/android_webview/test/AwJavaBridgeTest.java:32: final AwTestContainerView view2 = createAwTestContainerViewOnMainSync(client2); what's with 2s everywhere? ...
6 years, 3 months ago (2014-08-27 18:23:48 UTC) #11
benm (inactive)
https://codereview.chromium.org/498633003/diff/40001/android_webview/javatests/src/org/chromium/android_webview/test/AwJavaBridgeTest.java File android_webview/javatests/src/org/chromium/android_webview/test/AwJavaBridgeTest.java (right): https://codereview.chromium.org/498633003/diff/40001/android_webview/javatests/src/org/chromium/android_webview/test/AwJavaBridgeTest.java#newcode28 android_webview/javatests/src/org/chromium/android_webview/test/AwJavaBridgeTest.java:28: @Feature({"AndroidWebView", "Android-JavaBridge"}) On 2014/08/27 17:55:56, boliu wrote: > I ...
6 years, 3 months ago (2014-08-27 18:30:02 UTC) #12
boliu
https://codereview.chromium.org/498633003/diff/40001/android_webview/javatests/src/org/chromium/android_webview/test/AwJavaBridgeTest.java File android_webview/javatests/src/org/chromium/android_webview/test/AwJavaBridgeTest.java (right): https://codereview.chromium.org/498633003/diff/40001/android_webview/javatests/src/org/chromium/android_webview/test/AwJavaBridgeTest.java#newcode28 android_webview/javatests/src/org/chromium/android_webview/test/AwJavaBridgeTest.java:28: @Feature({"AndroidWebView", "Android-JavaBridge"}) On 2014/08/27 18:30:02, benm wrote: > On ...
6 years, 3 months ago (2014-08-27 18:34:54 UTC) #13
benm (inactive)
ptal!
6 years, 3 months ago (2014-08-27 18:57:24 UTC) #14
boliu
https://codereview.chromium.org/498633003/diff/60001/content/browser/android/java/gin_java_bridge_dispatcher_host.cc File content/browser/android/java/gin_java_bridge_dispatcher_host.cc (right): https://codereview.chromium.org/498633003/diff/60001/content/browser/android/java/gin_java_bridge_dispatcher_host.cc#newcode370 content/browser/android/java/gin_java_bridge_dispatcher_host.cc:370: IPC::Message* reply_msg) { Still don't like this one. I ...
6 years, 3 months ago (2014-08-27 19:07:42 UTC) #15
benm (inactive)
thanks Bo! On 2014/08/27 19:07:42, boliu wrote: > https://codereview.chromium.org/498633003/diff/60001/content/browser/android/java/gin_java_bridge_dispatcher_host.cc > File content/browser/android/java/gin_java_bridge_dispatcher_host.cc (right): > > ...
6 years, 3 months ago (2014-08-27 21:25:46 UTC) #16
boliu
On 2014/08/27 21:25:46, benm wrote: > thanks Bo! > > On 2014/08/27 19:07:42, boliu wrote: ...
6 years, 3 months ago (2014-08-27 21:28:46 UTC) #17
benm (inactive)
OK, cool. Just wanted to check we were on the same page :-)
6 years, 3 months ago (2014-08-27 21:37:50 UTC) #18
benm (inactive)
ptal at ps5
6 years, 3 months ago (2014-08-28 16:31:12 UTC) #19
boliu
lgtm % last comment https://codereview.chromium.org/498633003/diff/80001/content/browser/android/java/gin_java_bridge_dispatcher_host.cc File content/browser/android/java/gin_java_bridge_dispatcher_host.cc (right): https://codereview.chromium.org/498633003/diff/80001/content/browser/android/java/gin_java_bridge_dispatcher_host.cc#newcode383 content/browser/android/java/gin_java_bridge_dispatcher_host.cc:383: DCHECK(!HasPendingReply(render_frame_host));; repeated semi colon in ...
6 years, 3 months ago (2014-08-28 16:39:29 UTC) #20
benm (inactive)
thanks bo! torne, can you take a look please as you are an owner :-)
6 years, 3 months ago (2014-08-28 17:04:32 UTC) #21
Torne
lgtm https://codereview.chromium.org/498633003/diff/100001/android_webview/javatests/src/org/chromium/android_webview/test/AwJavaBridgeTest.java File android_webview/javatests/src/org/chromium/android_webview/test/AwJavaBridgeTest.java (right): https://codereview.chromium.org/498633003/diff/100001/android_webview/javatests/src/org/chromium/android_webview/test/AwJavaBridgeTest.java#newcode46 android_webview/javatests/src/org/chromium/android_webview/test/AwJavaBridgeTest.java:46: // leave others dunctioning. spelling
6 years, 3 months ago (2014-08-29 12:59:31 UTC) #22
benm (inactive)
The CQ bit was checked by benm@chromium.org
6 years, 3 months ago (2014-08-29 13:56:33 UTC) #23
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/benm@chromium.org/498633003/120001
6 years, 3 months ago (2014-08-29 13:57:22 UTC) #24
commit-bot: I haz the power
Committed patchset #7 (id:120001) as 5d3e001f79c137b2ba0f5b0e9489abea616f3431
6 years, 3 months ago (2014-08-29 14:57:03 UTC) #25
commit-bot: I haz the power
6 years, 3 months ago (2014-09-10 03:08:35 UTC) #26
Message was sent while issue was closed.
Patchset 7 (id:??) landed as
https://crrev.com/48334b78f249e571cba998184146045114d46ce0
Cr-Commit-Position: refs/heads/master@{#292631}

Powered by Google App Engine
This is Rietveld 408576698