Version and install for library
[gssweb.git] / firefox / data / gssweb.contentscript.js
1 console.log("Loading content script #6...");
2
3
4 function addScript(url) {
5   var elt = document.createElement("script");
6   elt.setAttribute("src", 
7                    url   );
8   document.head.appendChild(elt);
9 }
10
11 var port;
12
13 if ("undefined" != typeof(chrome) &&
14     "undefined" != typeof(chrome.extension) &&
15     "undefined" != typeof(chrome.extension.getURL))
16 {
17   // Running in chrome
18   gss_script_name = chrome.extension.getURL('navigator.gssEap.js');
19   port = chrome.runtime.connect({name: "com.painlesssecurity.gssweb"});
20 } else {
21   // Firefox
22   gss_script_name = 'chrome://gssweb/content/navigator.gssEap.js';
23 }
24
25 addScript( gss_script_name );
26
27
28 sendReplyToWebpage = function(gssReplyJSON) {
29      var appTag = gssReplyJSON.cookies.app_tag;
30      
31      console.log("[" + appTag + "] Extension port listener received message: [" + 
32                   JSON.stringify(gssReplyJSON) + "]"
33                 ); 
34      window.postMessage(gssReplyJSON, "*");
35   }
36
37
38 /* When we get a message back from the extension 
39  * background script
40  */
41 if ("undefined" != typeof(port))
42 {
43   port.onMessage.addListener( sendReplyToWebpage );
44 }
45 if ("undefined" != typeof(self) &&
46     "undefined" != typeof(self.port) )
47 {
48   self.port.on('gss_response', sendReplyToWebpage );
49 }
50
51
52
53 window.addEventListener("message", function(event) {
54     // We only accept messages from ourselves
55 //    if ("undefined" != typeof(unsafeWindow) && event.source != unsafeWindow ) // Firefox
56 //       ("undefined" == typeof(unsafeWindow) && event.source != window)        // Chrome
57 //      return;
58     
59     // Check to see if this message's data is data we care about
60     if ( typeof(event.data.method) == 'undefined' ||
61          typeof(event.data.arguments) == 'undefined' ||
62          typeof(event.data.return_values) != 'undefined' )
63         return;
64     
65     if ( typeof(event.data.cookies) == 'undefined' )
66     {
67       event.data.cookies = {};
68     }
69     var appTag = event.data.cookies.app_tag;
70     
71     console.log("[" + appTag + "] Window message listener received message: [" +
72                 JSON.stringify(event.data) + "]"
73                 );
74     if ("undefined" != typeof(port) )
75     {
76       port.postMessage(event.data);
77     } else if ("undefined" != typeof(self) && 
78                "undefined" != typeof(self.port) )
79     {
80       self.port.emit("gss_request", event.data);
81     }
82 }, false);
83