aboutsummaryrefslogtreecommitdiff
path: root/js/firefox/background-shim.js
diff options
context:
space:
mode:
authorEinar Egilsson <einar@einaregilsson.com>2016-05-31 14:53:32 +0200
committerEinar Egilsson <einar@einaregilsson.com>2016-05-31 14:53:32 +0200
commit44dfb4ec3c4585454ebfbb7b30fe7774c5c6a877 (patch)
treef37394844b1b1960d77e6dd1ac6275d23415cc6e /js/firefox/background-shim.js
parent77f60e0af6c36009a9bb6edbea04aeace9478637 (diff)
Mostly Firefox compatible
Diffstat (limited to 'js/firefox/background-shim.js')
-rw-r--r--js/firefox/background-shim.js243
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;