Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • Synzvato/decentraleyes
  • gkrishnaks/decentraleyes
  • ExE-Boss/decentraleyes
  • whtsky/decentraleyes
  • grtgarrett/decentraleyes
  • An_dz/decentraleyes
  • Alaska/decentraleyes
  • finn/decentraleyes
  • klippy/decentraleyes
9 results
Show changes
Commits on Source (2)
...@@ -21,6 +21,8 @@ var { Class } = require('sdk/core/heritage'); ...@@ -21,6 +21,8 @@ var { Class } = require('sdk/core/heritage');
var { Unknown } = require('sdk/platform/xpcom'); var { Unknown } = require('sdk/platform/xpcom');
var { Cc, Ci, Cr } = require('chrome'); var { Cc, Ci, Cr } = require('chrome');
var main = require('./main');
/** /**
* Gets and sets add-on specific preferences. * Gets and sets add-on specific preferences.
* @var {object} simplePreferences * @var {object} simplePreferences
...@@ -116,6 +118,7 @@ var Interceptor = new Class({ ...@@ -116,6 +118,7 @@ var Interceptor = new Class({
//noinspection JSUnresolvedVariable //noinspection JSUnresolvedVariable
preferences.amountInjected++; preferences.amountInjected++;
main.broadcastInjection();
}, },
/** /**
......
...@@ -17,15 +17,23 @@ ...@@ -17,15 +17,23 @@
* Imports * Imports
*/ */
var Interceptor = require('./interceptor'); var webextension = require('sdk/webextension');
var LoadWatcher = require('./load-watcher');
var preferences = require('sdk/simple-prefs').prefs; var preferences = require('sdk/simple-prefs').prefs;
var self = require('sdk/self'); var self = require('sdk/self');
var tabs = require("sdk/tabs"); var tabs = require("sdk/tabs");
var Interceptor = require('./interceptor');
var LoadWatcher = require('./load-watcher');
/** /**
* Main * Variables
*/
var webextensionPort = null;
/**
* Initializations
*/ */
var interceptor = new Interceptor(); var interceptor = new Interceptor();
...@@ -36,13 +44,40 @@ var featurelessVersions = { ...@@ -36,13 +44,40 @@ var featurelessVersions = {
'1.3.7': true '1.3.7': true
}; };
/**
* Main
*/
// Executed as soon as the add-on is loaded. // Executed as soon as the add-on is loaded.
exports.main = function (options) { exports.main = function (options) {
// Initialize the embedded WebExtension.
webextension.startup().then(({ browser }) => {
browser.runtime.onConnect.addListener(port => {
webextensionPort = port;
if (port.name === 'webextension') {
port.postMessage({
'subject': 'migrate-preferences',
'content': {
'amountInjected': preferences['amountInjected'],
'blockMissing': preferences['blockMissing'],
'domainWhitelist': preferences['domainWhitelist'],
'showReleaseNotes': preferences['showReleaseNotes']
}
});
}
});
});
// Initialize add-on state. // Initialize add-on state.
interceptor.register(); interceptor.register();
loadWatcher.register(); loadWatcher.register();
// Display the release notes if desired.
if (preferences.showReleaseNotes) { if (preferences.showReleaseNotes) {
if (options.loadReason === 'install' || (options.loadReason === 'upgrade' && !featurelessVersions[self.version])) { if (options.loadReason === 'install' || (options.loadReason === 'upgrade' && !featurelessVersions[self.version])) {
...@@ -60,3 +95,14 @@ exports.onUnload = function () { ...@@ -60,3 +95,14 @@ exports.onUnload = function () {
// Clean up add-on state. // Clean up add-on state.
interceptor.unregister(); interceptor.unregister();
}; };
// Sends injection updates to the WebExtension.
exports.broadcastInjection = function () {
if (typeof webextensionPort === 'object') {
webextensionPort.postMessage({
'subject': 'register-injection'
});
}
};
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
"homepage": "https://addons.mozilla.org/firefox/addon/decentraleyes", "homepage": "https://addons.mozilla.org/firefox/addon/decentraleyes",
"name": "decentraleyes", "name": "decentraleyes",
"id": "jid1-BoFifL9Vbdl2zQ@jetpack", "id": "jid1-BoFifL9Vbdl2zQ@jetpack",
"hasEmbeddedWebExtension": true,
"permissions": { "permissions": {
"multiprocess": true "multiprocess": true
}, },
......
/**
* Embedded WebExtension - Background Script
* Belongs to Decentraleyes.
*
* @author Thomas Rientjes
* @since 2017-08-18
* @license MPL 2.0
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/.
*/
'use strict';
/**
* Variables
*/
var webextensionPort = {};
var amountInjected = 0;
/**
* Initializations
*/
webextensionPort = browser.runtime.connect({name: 'webextension'});
/**
* Event Handlers
*/
// browser.storage.local.remove('amountInjected');
webextensionPort.onMessage.addListener((message) => {
if (message.subject === 'migrate-preferences') {
browser.storage.local.get(function (items) {
for (let preference of Object.keys(message.content)) {
if (items.hasOwnProperty(preference)) {
if (preference === 'amountInjected') {
amountInjected = items.amountInjected;
}
} else {
browser.storage.local.set({
[preference]: message.content[preference]
});
if (preference === 'amountInjected') {
amountInjected = message.content[preference];
}
}
}
});
}
if (message.subject === 'register-injection') {
if (isNaN(amountInjected)) {
chrome.storage.local.get('amountInjected', function (items) {
amountInjected = items.amountInjected;
chrome.storage.local.set({
'amountInjected': ++amountInjected
});
});
} else {
chrome.storage.local.set({
'amountInjected': ++amountInjected
});
}
}
});
{
"manifest_version": 2,
"name": "Decentraleyes Module",
"version": "1.3.9",
"author": "Thomas Rientjes",
"background": {
"scripts": [
"background.js"
]
},
"permissions": [
"storage"
]
}