mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
3897b56bac
sendRequestForResult is a promise-based API for messaging Java. It replaces the callback version of sendMessageToJava.
66 lines
2.1 KiB
JavaScript
66 lines
2.1 KiB
JavaScript
|
|
var Cc = Components.classes;
|
|
var Ci = Components.interfaces;
|
|
var Cu = Components.utils;
|
|
|
|
Cu.import("resource://gre/modules/Services.jsm");
|
|
|
|
function loadIntoWindow(window) {}
|
|
function unloadFromWindow(window) {}
|
|
|
|
function _sendMessageToJava (aMsg) {
|
|
return Services.androidBridge.handleGeckoMessage(aMsg);
|
|
};
|
|
|
|
/*
|
|
bootstrap.js API
|
|
*/
|
|
var windowListener = {
|
|
onOpenWindow: function(aWindow) {
|
|
// Wait for the window to finish loading
|
|
let domWindow = aWindow.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindowInternal || Ci.nsIDOMWindow);
|
|
domWindow.addEventListener("load", function() {
|
|
domWindow.removeEventListener("load", arguments.callee, false);
|
|
if (domWindow) {
|
|
domWindow.addEventListener("scroll", function(e) {
|
|
let message = {
|
|
type: 'robocop:scroll',
|
|
y: XPCNativeWrapper.unwrap(e.target).documentElement.scrollTop,
|
|
height: XPCNativeWrapper.unwrap(e.target).documentElement.scrollHeight,
|
|
cheight: XPCNativeWrapper.unwrap(e.target).documentElement.clientHeight,
|
|
};
|
|
_sendMessageToJava(message);
|
|
});
|
|
}
|
|
}, false);
|
|
},
|
|
onCloseWindow: function(aWindow) { },
|
|
onWindowTitleChange: function(aWindow, aTitle) { }
|
|
};
|
|
|
|
function startup(aData, aReason) {
|
|
let wm = Cc["@mozilla.org/appshell/window-mediator;1"].getService(Ci.nsIWindowMediator);
|
|
|
|
// Load into any new windows
|
|
wm.addListener(windowListener);
|
|
Services.obs.addObserver(function observe(aSubject, aTopic, aData) {
|
|
dump("Robocop:Quit received -- requesting quit");
|
|
let appStartup = Cc["@mozilla.org/toolkit/app-startup;1"].getService(Ci.nsIAppStartup);
|
|
appStartup.quit(Ci.nsIAppStartup.eForceQuit);
|
|
}, "Robocop:Quit", false);
|
|
}
|
|
|
|
function shutdown(aData, aReason) {
|
|
// When the application is shutting down we normally don't have to clean up any UI changes
|
|
if (aReason == APP_SHUTDOWN) return;
|
|
|
|
let wm = Cc["@mozilla.org/appshell/window-mediator;1"].getService(Ci.nsIWindowMediator);
|
|
|
|
// Stop watching for new windows
|
|
wm.removeListener(windowListener);
|
|
}
|
|
|
|
function install(aData, aReason) { }
|
|
function uninstall(aData, aReason) { }
|
|
|