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