summaryrefslogtreecommitdiffstats
path: root/dom/ipc/remote-test.js
diff options
context:
space:
mode:
Diffstat (limited to 'dom/ipc/remote-test.js')
-rw-r--r--dom/ipc/remote-test.js54
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);
+});