webview: Post web message listener to app looper
This was crashing with immediate_crash. Posting the web message listener to the current looper thread so that it rather crashes as a regular AndroidRuntime exception. Confirmed this worked by throwing a runtime exception on my own custom WebViewCompat.WebMessageListener and confirmed that the exception was being logged out to AndroidRuntime instead of System.err from Chromium. Bug: 1479041 Change-Id: I4edd0a55a5e752177b2cc71fcf2cc876cfc38ff7 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4847457 Commit-Queue: Rupert Wiser <bewise@chromium.org> Reviewed-by: Richard Coles <torne@chromium.org> Cr-Commit-Position: refs/heads/main@{#1193643}
This commit is contained in:

committed by
Chromium LUCI CQ

parent
fd4bfab8e3
commit
f09b4360db
@ -21,7 +21,7 @@ import org.chromium.content_public.browser.MessagePort;
|
||||
@Lifetime.Temporary
|
||||
@JNINamespace("android_webview")
|
||||
public class WebMessageListenerHolder {
|
||||
private WebMessageListener mListener;
|
||||
private final WebMessageListener mListener;
|
||||
|
||||
public WebMessageListenerHolder(@NonNull WebMessageListener listener) {
|
||||
mListener = listener;
|
||||
@ -30,7 +30,10 @@ public class WebMessageListenerHolder {
|
||||
@CalledByNative
|
||||
public void onPostMessage(MessagePayload payload, String sourceOrigin, boolean isMainFrame,
|
||||
MessagePort[] ports, JsReplyProxy replyProxy) {
|
||||
mListener.onPostMessage(payload, Uri.parse(sourceOrigin), isMainFrame, replyProxy, ports);
|
||||
AwThreadUtils.postToCurrentLooper(() -> {
|
||||
mListener.onPostMessage(
|
||||
payload, Uri.parse(sourceOrigin), isMainFrame, replyProxy, ports);
|
||||
});
|
||||
}
|
||||
|
||||
public WebMessageListener getListener() {
|
||||
|
Reference in New Issue
Block a user