diff --git a/platform/chromium/vapi-client.js b/platform/chromium/vapi-client.js index 5e0d84253..eafc1a0a2 100644 --- a/platform/chromium/vapi-client.js +++ b/platform/chromium/vapi-client.js @@ -167,6 +167,8 @@ vAPI.messaging = { } }; +/******************************************************************************/ + // No need to have vAPI client linger around after shutdown if // we are not a top window (because element picker can still // be injected in top window). diff --git a/platform/firefox/vapi-client.js b/platform/firefox/vapi-client.js index 2d35b2e12..5f37ce23d 100644 --- a/platform/firefox/vapi-client.js +++ b/platform/firefox/vapi-client.js @@ -38,6 +38,29 @@ vAPI.sessionId = String.fromCharCode(Date.now() % 25 + 97) + /******************************************************************************/ +vAPI.shutdown = (function() { + var jobs = []; + + var add = function(job) { + jobs.push(job); + }; + + var exec = function() { + //console.debug('Shutting down...'); + var job; + while ( job = jobs.pop() ) { + job(); + } + }; + + return { + add: add, + exec: exec + }; +})(); + +/******************************************************************************/ + var messagingConnector = function(response) { if ( !response ) { return; @@ -168,6 +191,15 @@ window.addEventListener('pageshow', vAPI.messaging.toggleListener, true); /******************************************************************************/ +// No need to have vAPI client linger around after shutdown if +// we are not a top window (because element picker can still +// be injected in top window). +if ( window !== window.top ) { + // Can anything be done? +} + +/******************************************************************************/ + })(this); /******************************************************************************/ diff --git a/platform/safari/vapi-client.js b/platform/safari/vapi-client.js index 374968fc2..d8f488a78 100644 --- a/platform/safari/vapi-client.js +++ b/platform/safari/vapi-client.js @@ -39,6 +39,27 @@ vAPI.sessionId = String.fromCharCode(Date.now() % 25 + 97) + Math.random().toString(36).slice(2); /******************************************************************************/ + vAPI.shutdown = (function() { + var jobs = []; + + var add = function(job) { + jobs.push(job); + }; + + var exec = function() { + //console.debug('Shutting down...'); + var job; + while ( job = jobs.pop() ) { + job(); + } + }; + + return { + add: add, + exec: exec + }; + })(); + /******************************************************************************/ var messagingConnector = function(response) { if(!response) { return;