diff options
author | Einar Egilsson <einar@einaregilsson.com> | 2016-05-31 14:53:32 +0200 |
---|---|---|
committer | Einar Egilsson <einar@einaregilsson.com> | 2016-05-31 14:53:32 +0200 |
commit | 44dfb4ec3c4585454ebfbb7b30fe7774c5c6a877 (patch) | |
tree | f37394844b1b1960d77e6dd1ac6275d23415cc6e /js/firefox/background-shim.js | |
parent | 77f60e0af6c36009a9bb6edbea04aeace9478637 (diff) |
Mostly Firefox compatible
Diffstat (limited to 'js/firefox/background-shim.js')
-rw-r--r-- | js/firefox/background-shim.js | 243 |
1 files changed, 0 insertions, 243 deletions
diff --git a/js/firefox/background-shim.js b/js/firefox/background-shim.js deleted file mode 100644 index d937104..0000000 --- a/js/firefox/background-shim.js +++ /dev/null @@ -1,243 +0,0 @@ -var self = require('sdk/self'); -var tabs = require('sdk/tabs'); - -const {Cu} = require('chrome'); - -function log(msg) { - console.log(msg); -} - -function migrateFromOlderVersion() { - const { pathFor } = require('sdk/system'); - const path = require('sdk/fs/path'); - const file = require('sdk/io/file'); - - var oldRedirectsFile = path.join(pathFor('ProfD'), 'Redirector.rjson'); - if (!file.exists(oldRedirectsFile)) { - return; - } - - var extensionId = require('sdk/self').id; - var newFolder = path.join(pathFor('ProfD'), 'browser-extension-data', extensionId); - file.mkpath(newFolder); - var newFile = path.join(newFolder, 'storage.js'); - - if (file.exists(newFile)) { - return; - } - - - var textReader = file.open(oldRedirectsFile, 'r'); - var jsonData = JSON.parse(textReader.read()); - textReader.close(); - var Redirect = require('../redirect').Redirect; - var newData = {redirects:[]}; - for (var r of jsonData.redirects) { - var redirect = new Redirect(r); - redirect.updateExampleResult(); - newData.redirects.push(redirect.toObject()); - } - - Cu.import("resource://gre/modules/Services.jsm"); - - var enabled = true; - try { - enabled = Services.prefs.getBoolPref('extensions.redirector.enabled'); - } catch(e) {} - newData.disabled = !enabled; - - //Kill old prefs: - var oldPrefs = ['enabled', 'debugEnabled', 'enableShortcutKey', 'version', 'defaultDir']; - for (var p of oldPrefs) { - try { - Services.prefs.deleteBranch('extensions.redirector.' + p); - } catch(e) { - } - } - - - var textWriter = file.open(newFile, 'w'); - textWriter.write(JSON.stringify(newData)); - textWriter.close(); - - file.remove(oldRedirectsFile); -} - -migrateFromOlderVersion(); - -function makeUrl(relativeUrl) { - return self.data.url(relativeUrl).replace('/data/', '/'); -} - -Cu.import('resource://gre/modules/ExtensionStorage.jsm'); - -//Create the browser action: -var { ToggleButton } = require("sdk/ui/button/toggle"); -var panels = require("sdk/panel"); - -var button = ToggleButton({ - id: "redirector", - label: "Redirector", - icon: { - "16": makeUrl("images/icon-active-16.png"), - "32": makeUrl("images/icon-active-32.png"), - "48": makeUrl("images/icon-active-48.png"), - "64": makeUrl("images/icon-active-64.png") - }, - onChange: function(state) { - if (state.checked) { - panel.show({position: button}); - } - } -}); - -var extensionId = require('sdk/self').id; - -var chrome = { - webRequest : Cu.import('resource://gre/modules/WebRequest.jsm', {}), - - storage : { - local : { - get : function(query, callback) { - ExtensionStorage.get(extensionId, query).then(callback || function(){}); - }, - set : function(data, callback) { - ExtensionStorage.set(extensionId, data).then(callback || function(){}); - } - }, - - clearCache : function() { - ExtensionStorage.cache.clear(); - }, - - onChanged : { - addListener : function(listener) { - ExtensionStorage.addOnChangedListener(extensionId, listener); - }, - removeListener : function(listener) { - ExtensionStorage.removeOnChangedListener(extensionId, listener); - } - } - }, - - runtime : { - }, - - browserAction : { - setIcon : function(data, callback) { - var icon = {}; - for (var s of ['16','32','48', '64']) { - icon[s] = makeUrl(data.path['19'].replace('19', s)); - } - button.icon = icon; - } - } -}; - -var pageMod = require("sdk/page-mod"); - -var panel = panels.Panel({ - width: 200, - height: 110, - contentURL: makeUrl('popup.html'), - contentScriptFile : [ - makeUrl('js/firefox/page-shim.js'), - makeUrl('js/angular.min.js'), - makeUrl('js/popup.js') - ], - onHide: function() { - button.state('window', {checked: false}); - } -}); - -function attachedPage(worker) { - function sendReply(originalMessage, reply) { - var msg = {messageId:originalMessage.messageId, payload:reply}; - log('background sending message: ' + JSON.stringify(msg)); - worker.port.emit('message', msg); - } - - //We proxy all logging over here so we can control it with one switch - worker.port.on('log', log); - - function receive(message) { - log('background got message: ' + JSON.stringify(message)); - - if (message.messageType == 'storage.get') { - chrome.storage.local.get(message.payload, function(data) { - sendReply(message, data); - }); - } else if (message.messageType == 'storage.set') { - chrome.storage.local.set(message.payload, function(data) { - sendReply(message, data); - }); - } else if (message.messageType == 'manifest.get') { - var p = require('package.json'); - sendReply(message, p); - } else if (message.messageType == 'log.enabled') { - if (!message.payload.enabled) { - log('Logging has been disabled for Redirector'); - } - log.enabled = message.payload.enabled; - if (log.enabled) { - log('Logging has been enabled for Redirector'); - } - } else if (message.messageType == 'tabs.query') { - var result = []; - var windows = require("sdk/windows").browserWindows; - - for (let tab of windows.activeWindow.tabs) { - if (tab.url == message.payload.url) { - result.push({id:tab.id, url:tab.url}); - } - } - sendReply(message, result); - } else if (message.messageType == 'tabs.update') { - for (let tab of tabs) { - if (tab.id == message.payload.tabId) { - tab.activate(); - panel.hide(); - sendReply(message, tab); - } - } - sendReply(message, null); - } else if (message.messageType == 'tabs.create') { - tabs.open(message.payload.url); - panel.hide(); - sendReply(message, null); - } - } - worker.port.on('message', receive); - - worker.on('detach', function() { - worker.port.removeListener('message', receive); - worker.port.removeListener('log', log); - }); -} - -attachedPage(panel); - -pageMod.PageMod({ - 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 -}); - - -exports.chrome = chrome; - -//Get redirect.js, which is included in the background page in webextensions. -exports.Redirect = require('../redirect').Redirect; - -exports.log = log; |