X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=chrome%2Fapp%2Fnavigator.gss.js;h=b011894d7a8a65ab47cf90ba99c2a6aae77e65e9;hb=43cde1dd57380a2a2795b97855ec385ccba020fd;hp=d65b8100ba262778b1464363491f702603e9fad7;hpb=3b404a0554b7e796e333a09edd62febbedaaffb5;p=gssweb.git diff --git a/chrome/app/navigator.gss.js b/chrome/app/navigator.gss.js index d65b810..b011894 100644 --- a/chrome/app/navigator.gss.js +++ b/chrome/app/navigator.gss.js @@ -2,32 +2,49 @@ console.log('Loading navigator.gss.js - #5'); /* This file gets injected into the web page verbatim */ -navigator.gss_import_name = function(name, mech, nonce, callbackFn){ - console.log("Name: " + name); - console.log("Mech: " + mech); +navigator.gss_callbacks = {}; + +/* +navigator.generateNonce = function() { + // TODO: Make sure that we don't have a collision! + // Random integer in the range [0..(2^32-1)] + return Math.floor(Math.random() * ( 4294967295 )) ; +} +*/ + +navigator.gss_import_name = function(name, mech, callbackFn, appTag){ + var nonce = navigator.generateNonce(); + navigator.gss_callbacks[nonce] = callbackFn; /* Listen for a message back from the content script */ window.addEventListener( "message", function(event) { - var nonce; + var app_tag; var name; + var callback; + var nonce; - if (event.data.command != "gss_import_name" || + if (event.data.method != "gss_import_name" || (typeof(event.data.return_values) == "undefined") ) { return; } + var nonce = event.data.cookies.navigator_gss_tag; + event.data.cookies.navigator_gss_tag = undefined; + callback = navigator.gss_callbacks[nonce]; + navigator.gss_callbacks[nonce] = undefined; + // Extract the data from the returned JSON name = event.data.return_values.gss_name; - nonce = event.data.nonce; + app_tag = event.data.cookies.app_tag; major = event.data.return_values.major_status; minor = event.data.return_values.minor_status; // Invoke the callback with the extracted data - callbackFn(name, nonce, major, minor); + callback(name, major, minor, app_tag); } ); @@ -41,7 +58,11 @@ navigator.gss_import_name = function(name, mech, nonce, callbackFn){ "input_name": name, "input_name_type": mech }, - "nonce": nonce + "cookies": + { + "navigator_gss_tag": nonce, + "app_tag": appTag + } }, "*"); };