@@ -263,7 +263,7 @@ protected void createRNCWebViewBridge(RNCWebView webView) {
263263 this .bridgeListener = new WebViewCompat .WebMessageListener () {
264264 @ Override
265265 public void onPostMessage (@ NonNull WebView view , @ NonNull WebMessageCompat message , @ NonNull Uri sourceOrigin , boolean isMainFrame , @ NonNull JavaScriptReplyProxy replyProxy ) {
266- RNCWebView .this .onMessage (message .getData (), sourceOrigin .toString (), isMainFrame );
266+ RNCWebView .this .onMessage (message .getData (), sourceOrigin .toString (), isMainFrame , view . getUrl () );
267267 }
268268 };
269269 WebViewCompat .addWebMessageListener (
@@ -345,10 +345,14 @@ public void setInjectedJavaScriptObject(String obj) {
345345 }
346346
347347 public void onMessage (String message , String sourceUrl ) {
348- onMessage (message , sourceUrl , null );
348+ onMessage (message , sourceUrl , null , null );
349349 }
350350
351351 public void onMessage (String message , String sourceUrl , @ Nullable Boolean isMainFrame ) {
352+ onMessage (message , sourceUrl , isMainFrame , null );
353+ }
354+
355+ public void onMessage (String message , String sourceUrl , @ Nullable Boolean isMainFrame , @ Nullable String topFrameUrl ) {
352356 ThemedReactContext reactContext = getThemedReactContext ();
353357 RNCWebView mWebView = this ;
354358
@@ -365,6 +369,9 @@ public void run() {
365369 if (isMainFrame != null ) {
366370 data .putBoolean ("isMainFrame" , isMainFrame );
367371 }
372+ if (topFrameUrl != null ) {
373+ data .putString ("topFrameUrl" , topFrameUrl );
374+ }
368375
369376 if (mMessagingJSModule != null ) {
370377 dispatchDirectMessage (data );
@@ -379,6 +386,9 @@ public void run() {
379386 if (isMainFrame != null ) {
380387 eventData .putBoolean ("isMainFrame" , isMainFrame );
381388 }
389+ if (topFrameUrl != null ) {
390+ eventData .putString ("topFrameUrl" , topFrameUrl );
391+ }
382392
383393 if (mMessagingJSModule != null ) {
384394 dispatchDirectMessage (eventData );
@@ -476,7 +486,7 @@ protected class RNCWebViewBridge {
476486 public void postMessage (String message ) {
477487 if (mWebView .getMessagingEnabled ()) {
478488 // Post to main thread because `mWebView.getUrl()` requires to be executed on main.
479- mWebView .post (() -> mWebView .onMessage (message , mWebView .getUrl ()));
489+ mWebView .post (() -> mWebView .onMessage (message , mWebView .getUrl (), null , mWebView . getUrl () ));
480490 } else {
481491 FLog .w (TAG , "ReactNativeWebView.postMessage method was called but messaging is disabled. Pass an onMessage handler to the WebView." );
482492 }
@@ -495,4 +505,4 @@ public boolean isWaitingForCommandLoadUrl() {
495505 return waitingForCommandLoadUrl ;
496506 }
497507 }
498- }
508+ }
0 commit comments