You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Fixes#2505, #2538, #2558.
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.
To work around the issue, we encode our data in the nice boring
characters of base64 so that it doesn't get reinterpreted.
---
More details on how React Native sends messages to the WebView:
The logic is different on iOS vs. Android. This explains why the
issue this is fixing is Android-specific.
On iOS, a custom navigation scheme is used to pass the data into the
webview; search the RN source for `RCTJSNavigationScheme`, and see the
implementation of `webViewDidFinishLoad` in `RTCWebView.m`.
The Android messaging happens in `receiveCommand` in
`ReactWebViewManager.java`, by navigating to a URL of the form
`javascript:(.....)`, which is a standard way of injecting JavaScript
into web pages.
The issue comes from the fact that since Android 4.4, `loadUrl` does
a URL decode on the string passed to it:
https://issuetracker.google.com/issues/36995865
See #2854 for links to upstream RN bug reports and PRs.
[greg: lightly revised commit message; found better reference for the
`loadUrl` issue]
0 commit comments