You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by ag...@apache.org on 2012/08/22 15:57:11 UTC

[2/6] android commit: Implements the LOAD_URL Native->JS bridge mode

Implements the LOAD_URL Native->JS bridge mode

(without keyboard work-around)


Project: http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/commit/7fa4515c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/tree/7fa4515c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/diff/7fa4515c

Branch: refs/heads/master
Commit: 7fa4515c289e5fd4d824faa1570402197d0eefd1
Parents: b40eb0a
Author: Andrew Grieve <ag...@chromium.org>
Authored: Tue Aug 21 11:36:54 2012 -0400
Committer: Andrew Grieve <ag...@chromium.org>
Committed: Wed Aug 22 09:46:30 2012 -0400

----------------------------------------------------------------------
 .../org/apache/cordova/NativeToJsMessageQueue.java |   15 ++++++++++++++-
 1 files changed, 14 insertions(+), 1 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/7fa4515c/framework/src/org/apache/cordova/NativeToJsMessageQueue.java
----------------------------------------------------------------------
diff --git a/framework/src/org/apache/cordova/NativeToJsMessageQueue.java b/framework/src/org/apache/cordova/NativeToJsMessageQueue.java
index 037cc9c..6abb970 100755
--- a/framework/src/org/apache/cordova/NativeToJsMessageQueue.java
+++ b/framework/src/org/apache/cordova/NativeToJsMessageQueue.java
@@ -47,9 +47,10 @@ public class NativeToJsMessageQueue {
     private BridgeMode[] registeredListeners;    
         
     public NativeToJsMessageQueue(CordovaWebView webView) {
-    	registeredListeners = new BridgeMode[2];
+    	registeredListeners = new BridgeMode[3];
     	registeredListeners[0] = null;
     	registeredListeners[1] = new CallbackBridgeMode(webView);
+    	registeredListeners[2] = new LoadUrlBridgeMode(webView);
     	reset();
 //        POLLING: 0,
 //        HANGING_GET: 1,
@@ -148,6 +149,7 @@ public class NativeToJsMessageQueue {
 		void onNativeToJsMessageAvailable(NativeToJsMessageQueue queue);
 	}
 	
+    /** Uses a local server to send messages to JS via an XHR */
     private static class CallbackBridgeMode implements BridgeMode {
     	private CordovaWebView webView;
 		public CallbackBridgeMode(CordovaWebView webView) {
@@ -159,5 +161,16 @@ public class NativeToJsMessageQueue {
     		}
         }
     }
+    
+    /** Uses webView.loadUrl("javascript:") to execute messages. */
+    public static class LoadUrlBridgeMode implements BridgeMode {
+		private CordovaWebView webView;
+		public LoadUrlBridgeMode(CordovaWebView webView) {
+    		this.webView = webView;
+    	}
+    	public void onNativeToJsMessageAvailable(NativeToJsMessageQueue queue) {
+    		webView.loadUrlNow("javascript:" + queue.popAll());
+        }
+    }
 
 }