From 3adcb7ae1654928a8a86de4cf329dcd912bcbb33 Mon Sep 17 00:00:00 2001 From: Einar Egilsson Date: Thu, 24 Sep 2015 11:25:45 +0000 Subject: 3.0.1. Fix Firefox disabling issues, simplify the chrome api shim, make things a bit more robust --- js/firefox/background-shim.js | 31 +++++++++++++++++++++++-------- js/firefox/content-script-proxy.js | 38 -------------------------------------- js/firefox/extension-storage.jsm | 4 ++++ js/firefox/page-shim.js | 27 +++++++++++---------------- 4 files changed, 38 insertions(+), 62 deletions(-) delete mode 100644 js/firefox/content-script-proxy.js (limited to 'js/firefox') diff --git a/js/firefox/background-shim.js b/js/firefox/background-shim.js index 5598920..d43d662 100644 --- a/js/firefox/background-shim.js +++ b/js/firefox/background-shim.js @@ -106,6 +106,10 @@ var chrome = { } }, + clearCache : function() { + ExtensionStorage.clearCache(); + }, + onChanged : { addListener : function(listener) { ExtensionStorage.addOnChangedListener(extensionId, listener); @@ -136,7 +140,11 @@ var panel = panels.Panel({ width: 200, height: 110, contentURL: makeUrl('popup.html'), - contentScriptFile : makeUrl('js/firefox/content-script-proxy.js'), + contentScriptFile : [ + makeUrl('js/firefox/page-shim.js'), + makeUrl('js/angular.min.js'), + makeUrl('js/popup.js') + ], onHide: function() { button.state('window', {checked: false}); } @@ -145,9 +153,6 @@ var panel = panels.Panel({ function attachedPage(worker) { function sendReply(originalMessage, reply) { var msg = {messageId:originalMessage.messageId, payload:reply}; - if (typeof log == 'undefined') { - Cu.reportError('LOG IS DEAD DEAD DEAD'); - } log('background sending message: ' + JSON.stringify(msg)); worker.port.emit('message', msg); } @@ -210,10 +215,20 @@ function attachedPage(worker) { attachedPage(panel); pageMod.PageMod({ - include: makeUrl('redirector.html'), - contentScriptFile: makeUrl('js/firefox/content-script-proxy.js'), - contentScriptWhen: 'start', - onAttach : attachedPage + include: makeUrl('redirector.html'), + contentScriptFile: [ + makeUrl("js/firefox/page-shim.js"), + makeUrl("js/angular.min.js"), + makeUrl("js/redirect.js"), + makeUrl("js/app.js"), + makeUrl("js/controllers/redirectorpage.js"), + makeUrl("js/controllers/editredirect.js"), + makeUrl("js/controllers/deleteredirect.js"), + makeUrl("js/controllers/importexport.js"), + makeUrl("js/controllers/listredirects.js") + ], + contentScriptWhen: 'start', + onAttach : attachedPage }); diff --git a/js/firefox/content-script-proxy.js b/js/firefox/content-script-proxy.js deleted file mode 100644 index c56de29..0000000 --- a/js/firefox/content-script-proxy.js +++ /dev/null @@ -1,38 +0,0 @@ -// This file listens to messages - -function log(msg) { - self.port.emit('log', msg); -} - -function receiveWindowMessage(message) { - if (message.data.sender !== 'page') { - return; - } - - if (message.data.logMessage) { - //Special handling for log messages. - log(message.data.logMessage); - return; - } - - log('proxy got page message: ' + JSON.stringify(message.data)); - - //Forward the message to the background script - self.port.emit('message', message.data); -} - -window.addEventListener('message', receiveWindowMessage); - -function receiveMessage(message) { - log('proxy got chrome message: ' + JSON.stringify(message)); - window.postMessage(message, '*'); -} -self.port.on('message', receiveMessage); - -function cleanup() { - window.removeEventListener('message', receiveWindowMessage); - self.port.removeListener('message', receiveMessage); - self.port.removeListener('detach', cleanup); -} - -self.port.on('detach', cleanup); diff --git a/js/firefox/extension-storage.jsm b/js/firefox/extension-storage.jsm index 02c59a3..f102b6f 100644 --- a/js/firefox/extension-storage.jsm +++ b/js/firefox/extension-storage.jsm @@ -36,6 +36,10 @@ this.ExtensionStorage = { return Path.join(this.extensionDir, extensionId, "storage.js"); }, + clearCache : function() { + this.cache = new Map(); + }, + read(extensionId) { if (this.cache.has(extensionId)) { return this.cache.get(extensionId); diff --git a/js/firefox/page-shim.js b/js/firefox/page-shim.js index dd2361b..6496910 100644 --- a/js/firefox/page-shim.js +++ b/js/firefox/page-shim.js @@ -1,32 +1,27 @@ (function() { - //Communication functions for - - if (typeof chrome !== 'undefined') { - return; - } function log(msg) { - window.postMessage({sender:'page', logMessage: msg}, '*'); + self.port.emit('log', msg); } + var parts = location.pathname.split('/'); + var urlName = parts[parts.length-1]; var messageId = 1; var callbacks = {}; function send(type, message, callback) { var id = messageId++; - window.postMessage({sender:'page', url:location.href, messageId:id, messageType:type, payload:message}, '*'); - callbacks[id] = callback; + self.port.emit('message', {url:urlName, messageId:id, messageType:type, payload:message}); + callbacks[id] = callback || function(){}; } - window.addEventListener('message', function(message) { - if (message.data.sender == 'page') { - return; //Ignore messages we sent ourselves - } - log('page got message: ' + JSON.stringify(message.data)); + + self.port.on('message', function(message) { + log('page got message: ' + JSON.stringify(message)); - var callback = callbacks[message.data.messageId]; + var callback = callbacks[message.messageId]; if (callback) { - callback(message.data.payload); - delete callbacks[message.data.messageId]; + callback(message.payload); + delete callbacks[message.messageId]; } }); -- cgit v1.2.3