-
-
Notifications
You must be signed in to change notification settings - Fork 665
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Type error in webview's getMessageIdFromNode #2751
Comments
Fixes zulip#2538 zulip#2505 zulip#2538 zulip#2558 zulip#2751 When using `postMessage` to communicate with the WebView, depending on the content of the message we send, an exception might be thrown. A minimal but reliable way to reproduce the issue is to send the string `'%22'`. Other character combinations might also cause issues. Messages are sent to the WebView in different ways for iOS/Android. This explains why the issue this is fixing is Android-specific. In iOS, a custom navigation scheme is used to pass the data into the webview (the RCTJSNavigationScheme constant one can grep for) More interesting source code reading on that can be done if one looks at `webViewDidFinishLoad` in `RTCWebView.m`. The Android messaging happens in `receiveCommand` in `ReactWebViewManager.java` It is passed by navigating to a URL of the type `javascript:(.....)` which is a standard way of injecting JavaScript into webpages. The issue comes from the fact that `loadUrl` since Android 4.4 does an URL decode on the string passed to it: https://developer.android.com/reference/android/webkit/WebView#loadUrl(java.lang.String) `evaluateJavascript` does not: https://developer.android.com/reference/android/webkit/WebView.html#evaluateJavascript(java.lang.String,%20android.webkit.ValueCallback%3Cjava.lang.String%3E)
Reported again yesterday, with a bit more detail. Screenshot: This was on 15.0.92 (current latest), on iOS. From a quick look at the code, this is in
So somehow we're getting a |
Oh also: asked what they were doing just before the error, the person who reported it says:
Several call sites of |
Looking at Sentry events, we've had no cases of this in (at least) the past 90 days: To try to confirm that's not just a lack of data: the way these would get reported to Sentry is that the same case 'error':
logging.error(`WebView exception: ${JSON.stringify(event.details)}`);
break; And we do get other exceptions reported through that path: So it seems this got fixed at some point. 🤷♂️ If we hear a fresh report, we'll reopen. |
Webview throws an exception:
msgNode.getAttribute
is not a function.This happens both on Android and iOS (the only other known issue is Android-specific)
The text was updated successfully, but these errors were encountered: