| 
				
			 | 
			
			
				@@ -9,6 +9,7 @@ import java.util.regex.Pattern; 
			 | 
		
	
		
			
			| 
				9
			 | 
			
				9
			 | 
			
			
				 import javax.annotation.Nullable; 
			 | 
		
	
		
			
			| 
				10
			 | 
			
				10
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				11
			 | 
			
				11
			 | 
			
			
				 import java.io.UnsupportedEncodingException; 
			 | 
		
	
		
			
			| 
				
			 | 
			
				12
			 | 
			
			
				+import java.net.URLEncoder; 
			 | 
		
	
		
			
			| 
				12
			 | 
			
				13
			 | 
			
			
				 import java.util.ArrayList; 
			 | 
		
	
		
			
			| 
				13
			 | 
			
				14
			 | 
			
			
				 import java.util.HashMap; 
			 | 
		
	
		
			
			| 
				14
			 | 
			
				15
			 | 
			
			
				 import java.util.Locale; 
			 | 
		
	
	
		
			
			| 
				
			 | 
			
			
				@@ -318,11 +319,25 @@ public class RCTWebViewManager extends SimpleViewManager<WebView> { 
			 | 
		
	
		
			
			| 
				318
			 | 
			
				319
			 | 
			
			
				       } 
			 | 
		
	
		
			
			| 
				319
			 | 
			
				320
			 | 
			
			
				     } 
			 | 
		
	
		
			
			| 
				320
			 | 
			
				321
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				
			 | 
			
				322
			 | 
			
			
				+    protected void evaluateJavascriptWithFallback(String script) { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				323
			 | 
			
			
				+      if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				324
			 | 
			
			
				+        evaluateJavascript(script, null); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				325
			 | 
			
			
				+        return; 
			 | 
		
	
		
			
			| 
				
			 | 
			
				326
			 | 
			
			
				+      } 
			 | 
		
	
		
			
			| 
				
			 | 
			
				327
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				328
			 | 
			
			
				+      try { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				329
			 | 
			
			
				+        loadUrl("javascript:" + URLEncoder.encode(script, "UTF-8")); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				330
			 | 
			
			
				+      } catch (UnsupportedEncodingException e) { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				331
			 | 
			
			
				+        // UTF-8 should always be supported 
			 | 
		
	
		
			
			| 
				
			 | 
			
				332
			 | 
			
			
				+        throw new RuntimeException(e); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				333
			 | 
			
			
				+      } 
			 | 
		
	
		
			
			| 
				
			 | 
			
				334
			 | 
			
			
				+    } 
			 | 
		
	
		
			
			| 
				
			 | 
			
				335
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				321
			 | 
			
				336
			 | 
			
			
				     public void callInjectedJavaScript() { 
			 | 
		
	
		
			
			| 
				322
			 | 
			
				337
			 | 
			
			
				       if (getSettings().getJavaScriptEnabled() && 
			 | 
		
	
		
			
			| 
				323
			 | 
			
				338
			 | 
			
			
				           injectedJS != null && 
			 | 
		
	
		
			
			| 
				324
			 | 
			
				339
			 | 
			
			
				           !TextUtils.isEmpty(injectedJS)) { 
			 | 
		
	
		
			
			| 
				325
			 | 
			
				
			 | 
			
			
				-        loadUrl("javascript:(function() {\n" + injectedJS + ";\n})();"); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				340
			 | 
			
			
				+        evaluateJavascriptWithFallback("(function() {\n" + injectedJS + ";\n})();"); 
			 | 
		
	
		
			
			| 
				326
			 | 
			
				341
			 | 
			
			
				       } 
			 | 
		
	
		
			
			| 
				327
			 | 
			
				342
			 | 
			
			
				     } 
			 | 
		
	
		
			
			| 
				328
			 | 
			
				343
			 | 
			
			
				  
			 | 
		
	
	
		
			
			| 
				
			 | 
			
			
				@@ -341,7 +356,7 @@ public class RCTWebViewManager extends SimpleViewManager<WebView> { 
			 | 
		
	
		
			
			| 
				341
			 | 
			
				356
			 | 
			
			
				           }); 
			 | 
		
	
		
			
			| 
				342
			 | 
			
				357
			 | 
			
			
				         } 
			 | 
		
	
		
			
			| 
				343
			 | 
			
				358
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				344
			 | 
			
				
			 | 
			
			
				-        loadUrl("javascript:(" + 
			 | 
		
	
		
			
			| 
				
			 | 
			
				359
			 | 
			
			
				+        evaluateJavascriptWithFallback("(" + 
			 | 
		
	
		
			
			| 
				345
			 | 
			
				360
			 | 
			
			
				           "window.originalPostMessage = window.postMessage," + 
			 | 
		
	
		
			
			| 
				346
			 | 
			
				361
			 | 
			
			
				           "window.postMessage = function(data) {" + 
			 | 
		
	
		
			
			| 
				347
			 | 
			
				362
			 | 
			
			
				             BRIDGE_NAME + ".postMessage(String(data));" + 
			 | 
		
	
	
		
			
			| 
				
			 | 
			
			
				@@ -637,9 +652,10 @@ public class RCTWebViewManager extends SimpleViewManager<WebView> { 
			 | 
		
	
		
			
			| 
				637
			 | 
			
				652
			 | 
			
			
				         break; 
			 | 
		
	
		
			
			| 
				638
			 | 
			
				653
			 | 
			
			
				       case COMMAND_POST_MESSAGE: 
			 | 
		
	
		
			
			| 
				639
			 | 
			
				654
			 | 
			
			
				         try { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				655
			 | 
			
			
				+          ReactWebView reactWebView = (ReactWebView) root; 
			 | 
		
	
		
			
			| 
				640
			 | 
			
				656
			 | 
			
			
				           JSONObject eventInitDict = new JSONObject(); 
			 | 
		
	
		
			
			| 
				641
			 | 
			
				657
			 | 
			
			
				           eventInitDict.put("data", args.getString(0)); 
			 | 
		
	
		
			
			| 
				642
			 | 
			
				
			 | 
			
			
				-          root.loadUrl("javascript:(function () {" + 
			 | 
		
	
		
			
			| 
				
			 | 
			
				658
			 | 
			
			
				+          reactWebView.evaluateJavascriptWithFallback("(function () {" + 
			 | 
		
	
		
			
			| 
				643
			 | 
			
				659
			 | 
			
			
				             "var event;" + 
			 | 
		
	
		
			
			| 
				644
			 | 
			
				660
			 | 
			
			
				             "var data = " + eventInitDict.toString() + ";" + 
			 | 
		
	
		
			
			| 
				645
			 | 
			
				661
			 | 
			
			
				             "try {" + 
			 | 
		
	
	
		
			
			| 
				
			 | 
			
			
				@@ -655,7 +671,8 @@ public class RCTWebViewManager extends SimpleViewManager<WebView> { 
			 | 
		
	
		
			
			| 
				655
			 | 
			
				671
			 | 
			
			
				         } 
			 | 
		
	
		
			
			| 
				656
			 | 
			
				672
			 | 
			
			
				         break; 
			 | 
		
	
		
			
			| 
				657
			 | 
			
				673
			 | 
			
			
				       case COMMAND_INJECT_JAVASCRIPT: 
			 | 
		
	
		
			
			| 
				658
			 | 
			
				
			 | 
			
			
				-        root.loadUrl("javascript:" + args.getString(0)); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				674
			 | 
			
			
				+        ReactWebView reactWebView = (ReactWebView) root; 
			 | 
		
	
		
			
			| 
				
			 | 
			
				675
			 | 
			
			
				+        reactWebView.evaluateJavascriptWithFallback(args.getString(0)); 
			 | 
		
	
		
			
			| 
				659
			 | 
			
				676
			 | 
			
			
				         break; 
			 | 
		
	
		
			
			| 
				660
			 | 
			
				677
			 | 
			
			
				     } 
			 | 
		
	
		
			
			| 
				661
			 | 
			
				678
			 | 
			
			
				   } 
			 |