Gecko -> Java
function SendMessageToJava(obj) { Cc["@mozilla.org/android/bridge;1"] .getService(Ci.nsIAndroidBridge) .handleGeckoMessage(JSON.stringify(obj)); }
The message ends up in embedding/android/GeckoAppShell.java handleGeckoMessage(). Right now, it is just a big switch that dispatches to the right handler.
Java -> Gecko
From java we can post message that can be recieved by the nsIObserver. Subject and Data can be anything here:
// JAVA: GeckoEvent e = new GeckoEvent("subject", "data"); GeckoAppShell.sendEventToGecko(e);
any registered nsIObserver can see this:
// Javascript let SomeEventListener = { init: function() { Services.obs.addObserver(this, "subject", false); }, observe: function(aSubject, aTopic, aData) { if (aTopic == "subject") { // data could be anything, think json. } }, };