Skip to content

Commit

Permalink
#367 FF bootstrap
Browse files Browse the repository at this point in the history
  • Loading branch information
Mizzick committed Oct 4, 2016
1 parent 00b6ef0 commit 91de8bd
Show file tree
Hide file tree
Showing 4 changed files with 349 additions and 12 deletions.
4 changes: 2 additions & 2 deletions Extension/browser/firefox/background.html
Expand Up @@ -3,7 +3,7 @@
<head>

<script type="text/javascript" src="lib/utils/language.js"></script>
<script type="text/javascript" src="lib/content-script/common-script.js"></script>
<!--<script type="text/javascript" src="lib/content-script/common-script.js"></script>-->
<script type="text/javascript" src="lib/background-page.js"></script>

<!--<script type="text/javascript" src="require.js"></script>-->
Expand All @@ -26,7 +26,7 @@
<!--<script type="text/javascript" src="lib/utils/notifier.js"></script>-->
<!--<script type="text/javascript" src="lib/utils/frames.js"></script>-->
<!--<script type="text/javascript" src="lib/utils/page-stats.js"></script>-->
<!--<script type="text/javascript" src="lib/utils/csp-utils.js"></script>-->
<!--&lt;!&ndash;<script type="text/javascript" src="lib/utils/csp-utils.js"></script>&ndash;&gt;-->

<!--<script type="text/javascript" src="lib/filter/rules/shortcuts-lookup-table.js"></script>-->
<!--<script type="text/javascript" src="lib/filter/rules/simple-regex.js"></script>-->
Expand Down
33 changes: 26 additions & 7 deletions Extension/browser/firefox/bootstrap.js
Expand Up @@ -22,12 +22,10 @@

/******************************************************************************/

const {classes: Cc, interfaces: Ci} = Components;

// Accessing the context of the background page:
// var win = Services.appShell.hiddenDOMWindow.document.querySelector('iframe[src*=adguard]').contentWindow;

var bgProcess;
var bgProcess = null;
var version;
const hostName = 'adguard';
const restartListener = {
Expand All @@ -37,23 +35,35 @@ const restartListener = {
},

receiveMessage: function () {
console.log('restart message received');

shutdown();
startup();
}
};

function startup(data, reason) {
console.log('App startup');

if (data !== undefined) {
version = data.version;
}

console.log('App version:' + version);
console.log(bgProcess);

// Already started?
if (bgProcess !== null) {
console.log('App is already started');
return;
}

var appShell = Cc['@mozilla.org/appshell/appShellService;1']
.getService(Ci.nsIAppShellService);
var appShell = Components.classes['@mozilla.org/appshell/appShellService;1']
.getService(Components.interfaces.nsIAppShellService);

console.log(appShell);

console.log('App startup 2');

var isReady = function () {
var hiddenDoc;
Expand Down Expand Up @@ -91,9 +101,12 @@ function startup(data, reason) {
};

if (isReady()) {
console.log('App is ready');
return;
}

console.log('App startup 3');

// https://github.com/gorhill/uBlock/issues/749
// Poll until the proper environment is set up -- or give up eventually.
// We poll frequently early on but relax poll delay as time pass.
Expand All @@ -103,8 +116,8 @@ function startup(data, reason) {
// https://trac.torproject.org/projects/tor/ticket/19438
// Try for a longer period.
var tryMax = 600011;
var timer = Cc['@mozilla.org/timer;1']
.createInstance(Ci.nsITimer);
var timer = Components.classes['@mozilla.org/timer;1']
.createInstance(Components.interfaces.nsITimer);

var checkLater = function () {
trySum += tryDelay;
Expand Down Expand Up @@ -134,6 +147,8 @@ function startup(data, reason) {
}

function shutdown(data, reason) {
console.log('App shutdown');

if (reason === APP_SHUTDOWN) {
return;
}
Expand All @@ -155,6 +170,8 @@ function shutdown(data, reason) {
* On addon install
*/
function install() {
console.log('App install');

// https://bugzil.la/719376
Components.classes['@mozilla.org/intl/stringbundle;1']
.getService(Components.interfaces.nsIStringBundleService)
Expand All @@ -168,6 +185,8 @@ function install() {
* @param reason
*/
function uninstall(data, reason) {
console.log('App uninstall');

if (reason !== ADDON_UNINSTALL) {
return;
}
Expand Down
230 changes: 227 additions & 3 deletions Extension/browser/firefox/lib/background-page.js
Expand Up @@ -14,9 +14,233 @@
* You should have received a copy of the GNU Lesser General Public License
* along with Adguard Browser Extension. If not, see <http://www.gnu.org/licenses/>.
*/
/* global chrome, Prefs, Log, BaseEvent, RequestTypes, Utils, OnMessageEvent, SendMessageFunction */
/* global Components, Prefs, Log, BaseEvent, RequestTypes, Utils, OnMessageEvent, SendMessageFunction */

//const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
const {Services} = Components.utils.import('resource://gre/modules/Services.jsm', null);

var console = null;
// PaleMoon doesn't support new devtools path
try {
console = Components.utils.import('resource://gre/modules/Console.jsm', {}).console;
} catch (ex) {
console = Components.utils.import('resource://gre/modules/devtools/Console.jsm', {}).console;
}


console.log('Initializing background-page');


var ext = ext || {};

console.log('Initializing i18n');
var i18n = (function () {

// Randomize URI to work around bug 719376
var stringBundle = Services.strings.createBundle('chrome://adguard/locale/messages.properties?' + Math.random());

function getText(text, args) {
if (!text) {
return "";
}
if (args && args.length > 0) {
text = text.replace(/\$(\d+)/g, function (match, number) {
return typeof args[number - 1] != "undefined" ? args[number - 1] : match;
});
}
return text;
}

return {
getMessage: function (key, args) {
try {
return getText(stringBundle.GetStringFromName(key), args);
} catch (ex) {
// Key not found, simply return it as a translation
return key;
}
}
};
})();

(function () {
console.log('test');
})();
//try {
//
// var {Log} = loadAdguardModule('./utils/log');
// var {FS} = loadAdguardModule('./utils/file-storage');
// var {LS} = loadAdguardModule('./utils/local-storage');
// if (options.loadReason == 'install' || options.loadReason == 'downgrade') {
// LS.clean();
// FS.removeAdguardDir();
// }
//
// // In case of firefox browser we move application data from simple-storage to prefs.
// // So we need move app-version to prefs for properly update
// var appVersion = simpleStorage.storage['app-version'];
// if (appVersion) {
// LS.setItem('app-version', appVersion);
// delete simpleStorage.storage['app-version'];
// }
//
// var SdkPanel = null;
// // PaleMoon (25) and fennec doesn't support sdk/panel
// try {
// SdkPanel = require('sdk/panel').Panel;
// } catch (ex) {
// Log.info("Module sdk/panel is not supported");
// }
//
// var SdkContextMenu = null;
// try {
// SdkContextMenu = require('sdk/context-menu');
// } catch (ex) {
// Log.info("Module sdk/context-menu is not supported");
// }
//
// //load module 'sdk/ui/button/toggle'. This module supported from 29 version
// var SdkButton;
// try {
// SdkButton = require('sdk/ui/button/toggle').ToggleButton;
// } catch (ex) {
// Log.info('Module sdk/ui/button/toggle is not supported');
// }
//
// var {Prefs} = loadAdguardModule('./prefs');
// var {AntiBannerFiltersId} = loadAdguardModule('./utils/common');
// var {Utils} = loadAdguardModule('./utils/browser-utils');
// var {TabsMap} = loadAdguardModule('./tabsMap');
// var {FramesMap} = loadAdguardModule('./utils/frames');
// var {AdguardApplication} = loadAdguardModule('./filter/integration');
// var {filterRulesHitCount} = loadAdguardModule('./filter/filters-hit');
// var {FilteringLog} = loadAdguardModule('./filter/filtering-log');
// var {WebRequestService}= loadAdguardModule('./filter/request-blocking');
// var {AntiBannerService} = loadAdguardModule('./filter/antibanner');
// var {ElemHide} = loadAdguardModule('./elemHide');
// var {WebRequestImpl} = loadAdguardModule('./contentPolicy');
// var {InterceptHandler} = loadAdguardModule('./elemHideIntercepter');
// var {UI} = loadAdguardModule('./ui');
// var {ContentMessageHandler}= loadAdguardModule('./content-message-handler');
// var {contentScripts} = loadAdguardModule('./contentScripts');
//
// // These require-calls are needed for proper build by cfx.
// // It does nothing in case of "jpm"-packed add-on
// require('./prefs');
// require('./elemHide');
// require('./tabsMap');
// require('./contentPolicy');
// require('./elemHideIntercepter');
// require('./content-message-handler');
// require('./ui');
// require('./utils/frames');
// require('./utils/common');
// require('./utils/browser-utils');
// require('./utils/user-settings');
// require('./filter/integration');
// require('./filter/filtering-log');
//
// Log.info('Starting adguard addon...');
//
// var antiBannerService = new AntiBannerService();
// var framesMap = new FramesMap(antiBannerService, TabsMap);
// var adguardApplication = new AdguardApplication(framesMap);
// var filteringLog = new FilteringLog(TabsMap, framesMap, UI);
// var webRequestService = new WebRequestService(framesMap, antiBannerService, filteringLog, adguardApplication);
//
// WebRequestImpl.init(antiBannerService, adguardApplication, ElemHide, framesMap, filteringLog, webRequestService);
// ElemHide.init(framesMap, antiBannerService, webRequestService);
// InterceptHandler.init(framesMap, antiBannerService);
// filterRulesHitCount.setAntiBannerService(antiBannerService);
//
// // Initialize content-message handler
// var contentMessageHandler = new ContentMessageHandler();
// contentMessageHandler.init(antiBannerService, webRequestService, framesMap, adguardApplication, filteringLog, UI);
// contentMessageHandler.setSendMessageToSender(function (worker, message) {
// contentScripts.sendMessageToWorker(worker, message);
// });
// contentScripts.init(contentMessageHandler);
//
// // Initialize overlay toolbar button
// UI.init(antiBannerService, framesMap, filteringLog, adguardApplication, SdkPanel, SdkContextMenu, SdkButton);
//
// var AdguardModules = {
//
// antiBannerService: antiBannerService,
// framesMap: framesMap,
// filteringLog: filteringLog,
// Prefs: Prefs,
// UI: UI,
// i18n: i18n,
// Utils: Utils,
// AntiBannerFiltersId: AntiBannerFiltersId,
// //for popup script
// tabs: tabs
// };
//
// /**
// * Observer for loaded adguard modules.
// * This observer is used for scripts on "chrome" pages to get access to Adguard modules.
// * Look at loadAdguardModule method in modules.js file.
// */
// var RequireObserver = {
//
// LOAD_MODULE_TOPIC: "adguard-load-module",
//
// observe: function (subject, topic, data) {
// if (topic == RequireObserver.LOAD_MODULE_TOPIC) {
// var service = AdguardModules[data];
// if (!service) {
// throw 'Module "' + data + '" is undefined';
// }
// subject.wrappedJSObject.exports = service;
// }
// },
//
// QueryInterface: XPCOMUtils.generateQI([Ci.nsISupportsWeakReference, Ci.nsIObserver])
// };
// Services.obs.addObserver(RequireObserver, RequireObserver.LOAD_MODULE_TOPIC, true);
// // Remove observer on unload
// unload.when(function () {
// Services.obs.removeObserver(RequireObserver, RequireObserver.LOAD_MODULE_TOPIC);
// });
//
// var antiBannerCallback = function (runInfo) {
// if (runInfo.isFirstRun) {
// // Show filters download page on first run of addon
// UI.openFiltersDownloadPage();
// }
// };
// antiBannerService.init({
// runCallback: antiBannerCallback
// });
//} catch (ex) {
// console.log(ex);
// throw ex;
//}
//
//// Cleanup stored frames
//tabs.on('close', function (tab) {
// framesMap.removeFrame(tab);
//});
//
//// Language detect on tab ready event
//tabs.on('ready', function (tab) {
// antiBannerService.checkTabLanguage(tab.id, tab.url);
//});
//
//// Initialize filtering log
//filteringLog.synchronizeOpenTabs();
//tabs.on('open', function (tab) {
// filteringLog.addTab(tab);
// framesMap.checkTabIncognitoMode(tab);
//});
//tabs.on('close', function (tab) {
// filteringLog.removeTab(tab);
//});
//tabs.on('ready', function (tab) {
// filteringLog.updateTab(tab);
//});

console.log('Initializing background-page..OK');

})();

0 comments on commit 91de8bd

Please sign in to comment.