diff options
Diffstat (limited to 'dom/ipc/remote-test.js')
-rw-r--r-- | dom/ipc/remote-test.js | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/dom/ipc/remote-test.js b/dom/ipc/remote-test.js new file mode 100644 index 000000000..dd21415cd --- /dev/null +++ b/dom/ipc/remote-test.js @@ -0,0 +1,54 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +dump("Loading remote script!\n"); +dump(content + "\n"); + +var cpm = Components.classes["@mozilla.org/childprocessmessagemanager;1"] + .getService(Components.interfaces.nsISyncMessageSender); +cpm.addMessageListener("cpm-async", + function(m) { + cpm.sendSyncMessage("ppm-sync"); + dump(content.document.documentElement); + cpm.sendAsyncMessage("ppm-async"); + }); + +var Cc = Components.classes; +var Ci = Components.interfaces; +var dshell = content.QueryInterface(Ci.nsIInterfaceRequestor) + .getInterface(Ci.nsIWebNavigation) + .QueryInterface(Ci.nsIDocShellTreeItem) + .rootTreeItem + .QueryInterface(Ci.nsIDocShell); + + +addEventListener("click", + function(e) { + dump(e.target + "\n"); + if (e.target instanceof Components.interfaces.nsIDOMHTMLAnchorElement && + dshell == docShell) { + var retval = docShell.QueryInterface(Components.interfaces.nsIInterfaceRequestor). + getInterface(Components.interfaces.nsIContentFrameMessageManager). + sendSyncMessage("linkclick", { href: e.target.href }); + dump(uneval(retval[0]) + "\n"); + // Test here also that both retvals are the same + sendAsyncMessage("linkclick-reply-object", uneval(retval[0]) == uneval(retval[1]) ? retval[0] : ""); + } + }, + true); + +addMessageListener("chrome-message", + function(m) { + dump(uneval(m.json) + "\n"); + sendAsyncMessage("chrome-message-reply", m.json); + }); + +addMessageListener("speed-test-start", + function(m) { + while (sendSyncMessage("speed-test")[0].message != "done"); + }); + +addMessageListener("async-echo", function(m) { + sendAsyncMessage(m.name); +}); |