diff options
Diffstat (limited to 'data/extensions/spyblock@gnu.org/webextension')
4 files changed, 166 insertions, 0 deletions
diff --git a/data/extensions/spyblock@gnu.org/webextension/.eslintrc.json b/data/extensions/spyblock@gnu.org/webextension/.eslintrc.json new file mode 100644 index 0000000..ea12297 --- /dev/null +++ b/data/extensions/spyblock@gnu.org/webextension/.eslintrc.json @@ -0,0 +1,7 @@ +{ + "extends": "eslint-config-eyeo", + "root": true, + "env": { + "webextensions": true + } +} diff --git a/data/extensions/spyblock@gnu.org/webextension/background.js b/data/extensions/spyblock@gnu.org/webextension/background.js new file mode 100644 index 0000000..88feb91 --- /dev/null +++ b/data/extensions/spyblock@gnu.org/webextension/background.js @@ -0,0 +1,41 @@ +/* + * This file is part of Adblock Plus <https://adblockplus.org/>, + * Copyright (C) 2006-2017 eyeo GmbH + * + * Adblock Plus is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 3 as + * published by the Free Software Foundation. + * + * Adblock Plus is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. + */ + +"use strict"; + +/* global IO */ + +let port = browser.runtime.connect(); + +port.onMessage.addListener(message => +{ + IO[message.method](...message.args).then(result => + { + port.postMessage({ + id: message.id, + success: true, + result + }); + }).catch(error => + { + port.postMessage({ + id: message.id, + success: false, + result: String(error) + }); + }); +}); diff --git a/data/extensions/spyblock@gnu.org/webextension/io.js b/data/extensions/spyblock@gnu.org/webextension/io.js new file mode 100644 index 0000000..adfee2f --- /dev/null +++ b/data/extensions/spyblock@gnu.org/webextension/io.js @@ -0,0 +1,109 @@ +/* + * This file is part of Adblock Plus <https://adblockplus.org/>, + * Copyright (C) 2006-2017 eyeo GmbH + * + * Adblock Plus is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 3 as + * published by the Free Software Foundation. + * + * Adblock Plus is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. + */ + +"use strict"; + +(function(exports) +{ + const keyPrefix = "file:"; + + function fileToKey(fileName) + { + return keyPrefix + fileName; + } + + function loadFile(file) + { + let key = fileToKey(file); + + return browser.storage.local.get(key).then(items => + { + if (items.hasOwnProperty(key)) + return items[key]; + + throw "NoSuchFile"; + }); + } + + function saveFile(file, data) + { + return browser.storage.local.set({ + [fileToKey(file)]: { + content: Array.from(data), + lastModified: Date.now() + } + }); + } + + function removeFile(file) + { + return browser.storage.local.remove(fileToKey(file)); + } + + exports.IO = + { + readFromFile(file) + { + return loadFile(file).then(entry => + { + return entry.content; + }); + }, + + writeToFile(file, data) + { + return saveFile(file, data); + }, + + copyFile(fromFile, toFile) + { + return loadFile(fromFile).then(entry => + { + return saveFile(toFile, entry.content); + }); + }, + + renameFile(fromFile, newName) + { + return loadFile(fromFile).then(entry => + { + return browser.storage.local.set({ + [fileToKey(newName)]: entry + }); + }).then(() => + { + return removeFile(fromFile); + }); + }, + + removeFile(file) + { + return removeFile(file); + }, + + statFile(file) + { + return loadFile(file).then(entry => + { + return { + exists: true, + lastModified: entry.lastModified + }; + }); + } + }; +})(this); diff --git a/data/extensions/spyblock@gnu.org/webextension/manifest.json b/data/extensions/spyblock@gnu.org/webextension/manifest.json new file mode 100644 index 0000000..46575e7 --- /dev/null +++ b/data/extensions/spyblock@gnu.org/webextension/manifest.json @@ -0,0 +1,9 @@ +{ + "manifest_version": 2, + "name": "Web Extensions I/O backend", + "version": "1.0", + "permissions": ["storage"], + "background": { + "scripts": ["background.js", "io.js"] + } +} |