Passing messages between the add-on and the content script
authorMark Donnelly <mark@painless-security.com>
Wed, 3 Dec 2014 20:52:49 +0000 (15:52 -0500)
committerMark Donnelly <mark@painless-security.com>
Wed, 3 Dec 2014 20:52:49 +0000 (15:52 -0500)
firefox/chrome/content/navigator.gssEap.js
firefox/data/navigator.gss.js
firefox/lib/main.js

index dec4f1d..93f7496 100644 (file)
@@ -1,4 +1,3 @@
-console.log('Loading nav.gss.js - #1');
 /*
  * Copyright (c) 2014, JANET(UK)
  * All rights reserved.
@@ -33,7 +32,7 @@ console.log('Loading nav.gss.js - #1');
  *
  */
 
-console.log('Loading navigator.gss.js - #1');
+console.log('Loading navigator.gssEap.js - #1');
 
 navigator.generateNonce = function() {
   // TODO: Make sure that we don't have a collision!
@@ -309,4 +308,4 @@ var GSSEap = (function ()
 })();
 
 
-navigator.gss_eap = GSSEap;
+navigator.gssEap = GSSEap;
index 5342e3e..7f3b4df 100644 (file)
@@ -9,4 +9,10 @@ function addScript(url) {
 
 addScript('chrome://gssweb/content/nav.gss.js');
 
+self.port.on('alert', function(message) {
+  console.log("Content script received message: " + message);
+  self.port.emit("gss_request", "Message back from the content script");
+});
+
+
 
index 68dc999..4fa60b0 100644 (file)
@@ -41,7 +41,7 @@ reply = call_gss("{\"method\":\"gss_import_name\",\"arguments\":{\"input_name\":
 console.log("  ... Reply: " + reply.readString());
 
 
-
+var self = require("sdk/self");
 var data = require("sdk/self").data;
 var pageMod = require("sdk/page-mod");
 
@@ -50,3 +50,23 @@ pageMod.PageMod({
   contentScriptFile: [data.url("navigator.gss.js")],
   contentScriptWhen: "ready"
 });
+
+tabs.on("ready", function(tab) {
+  worker = tab.attach({ contentScriptFile: data.url("navigator.gss.js") });
+  worker.port.on("gss_request", function(message) {
+    console.log("main.js received message: " + message);
+  });
+  worker.port.emit("alert", "Message from the add-on");
+});
+
+
+/*var gssweb = {
+  myListener: function(evt) {
+    alert("Received from web page: " +
+          evt.target.getAttribute("attribute1") + "/" + 
+          evt.target.getAttribute("attribute2"));
+  }
+}*/
+//document.addEventListener("GsswebEvent", function(e) { gssweb.myListener(e); }, false, true);
+// The last value is a Mozilla-specific value to indicate untrusted content is allowed to trigger the event.
+