summaryrefslogtreecommitdiff
path: root/data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/main.js
diff options
context:
space:
mode:
Diffstat (limited to 'data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/main.js')
-rw-r--r--data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/main.js201
1 files changed, 30 insertions, 171 deletions
diff --git a/data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/main.js b/data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/main.js
index 3038eae..ac280a4 100644
--- a/data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/main.js
+++ b/data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/main.js
@@ -2,211 +2,70 @@
* GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript.
* *
* Copyright (C) 2011, 2012, 2013, 2014 Loic J. Duros
+ * Copyright (C) 2014, 2015 Nik Nyby
*
- * This program is free software: you can redistribute it and/or modify
+ * This file is part of GNU LibreJS.
+ *
+ * GNU LibreJS is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
- * This program is distributed in the hope that it will be useful,
+ * GNU LibreJS 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 this program. If not, see <http://www.gnu.org/licenses/>.
- *
+ * along with GNU LibreJS. If not, see <http://www.gnu.org/licenses/>.
*/
// Uncomment the following to start debugging, or do it from about:config.
// var name = "extensions.jid1-KtlZuoiikVfFew@jetpack.sdk.console.logLevel";
// require("sdk/preferences/service").set(name, "all");
-const jsAnalyzer = require("js_checker/js_checker");
-
-var { ToggleButton } = require('sdk/ui/button/toggle');
-const panel = require("sdk/panel");
-
-const pageWorker = require("sdk/page-worker");
-
-const data = require("sdk/self").data;
-const httpObserver = require("http_observer/http_request_observer");
-
const { Cc, Ci } = require("chrome");
-const { getMostRecentBrowserWindow } = require('sdk/window/utils');
-const jetpackID = require("sdk/self").id;
-const tabs = require("sdk/tabs");
-//const prefs = require("preferences/preferences");
-const simpleStorage = require("sdk/simple-storage");
-const addonManage = require("addon_management/install_uninstall");
-var removedScripts = require("script_entries/removed_scripts").removedScripts;
-var acceptedScripts = require("script_entries/accepted_scripts").acceptedScripts;
-const dryRunScripts = require("script_entries/dryrun_scripts").dryRunScripts;
+const librejsStorage = require("settings/storage").librejsStorage;
+let addonManage = require("addon_management/install_uninstall");
+let httpObserver = require("http_observer/http_request_observer");
+let prefObserver = require("pref_observer/pref_observer");
+let prefChange = require("addon_management/prefchange");
+let uiInfo = require("ui/ui_info");
+let scriptPanel = require("ui/script_panel.js");
-const types = require("js_checker/constant_types");
+require('ui');
-// manage preference whitelist.
-const prefChange = require("addon_management/prefchange");
// set whitelist at startup.
prefChange.init();
-
-var allowedRef = require("http_observer/allowed_referrers").allowedReferrers;
-
-var urlHandler = require("url_handler/url_handler");
-
var widgetIsOn = false;
-const librejsStorage = require("settings/storage").librejsStorage;
// read storage file.
var cachedResult = librejsStorage.init();
librejsStorage.generateCacheFromDB();
-
-var uiInfo = require("ui/ui_info");
-var scriptPanel = require("ui/script_panel.js");
-const removeHashCallback = require("js_checker/js_checker").removeHashCallback;
-var panelContent = function () {
-
- let panel = this;
- var message, externalEntries,
- externalScripts, urlTabIndex, tabData;
-
- tabs.activeTab.attach({
- contentScriptFile: [data.url('third_party/jquery-src.js'),
- data.url('script_detector/script_detector.js')],
- contentScriptWhen: 'ready',
-
- onMessage: function (respData) {
- var url = urlHandler.removeFragment(tabs.activeTab.url);
- scriptsData = {'removed': removedScripts.getScripts(url),
- 'accepted': acceptedScripts.getScripts(url),
- 'dryRun': dryRunScripts.getScripts(url)};
- panel.postMessage({'pageURL': url,
- 'urlData': scriptsData,
- 'isAllowed': allowedRef.urlInAllowedReferrers(url)});
- }
-
- });
-
-};
-
-// page mod was here.
-
exports.main = function(options, callbacks) {
if (options.loadReason === 'enable' ||
- options.loadReason === 'install') {
+ options.loadReason === 'install'
+ ) {
addonManage.onLoad();
}
};
-var mainPanel = panel.Panel({
- contentURL: data.url('display_panel/content/display-panel.html'),
- width: 800,
- height: 500,
- contentScriptFile: [
- data.url('third_party/jquery-src.js'),
- data.url('display_panel/main_panel.js')
- ],
- onShow: panelContent,
- onHide: removePanelContent
-});
-
-var toggleButton = ToggleButton({
- id: 'librejs-toggle-switch',
- label: 'LibreJS',
- icon: {
- '16': './widget/images/librejs.png',
- '32': './widget/images/librejs.png',
- '64': './widget/images/librejs.png'
- },
- contentScriptFile: [data.url('widget/widget.js')],
- contentScriptWhen: 'end',
- panel: mainPanel,
- onChange: handleChange
-});
-
-var getWidgetElem = function () {
- let { document } = getMostRecentBrowserWindow();
- var name = "widget:" + jetpackID + '-librejs-toggle-switch';
- var widgetElem = document.getElementById(name);
- return widgetElem;
-};
-
-function handleChange(state) {
- if (state.checked) {
- mainPanel.show({
- position: toggleButton
- });
- }
-}
-
-function removePanelContent() {
- toggleButton.state('window', { checked: false });
-}
-
-mainPanel.port.on('complainButtonClicked', function () {
- mainPanel.hide();
-});
-
-mainPanel.port.on('allowAllClicked', function (url) {
- url = urlHandler.removeFragment(url);
- allowedRef.addPage(url);
- tabs.activeTab.reload();
-});
-
-mainPanel.port.on('disallowAllClicked', function (url) {
- console.debug('url is', url);
- url = urlHandler.removeFragment(url);
- console.debug('before clear, url is in allowedRef', allowedRef.urlInAllowedReferrers(url));
- allowedRef.clearSinglePageEntry(url);
- console.debug('after clear, url is in allowedRef', allowedRef.urlInAllowedReferrers(url));
- mainPanel.hide();
- tabs.activeTab.reload();
-});
-
-mainPanel.port.on('openInTab', function (text) {
- var str = generateDataURI(text);
- tabs.open(str);
-});
-
-var generateDataURI = function (encodedText) {
- return "data:text/html;charset=UTF-8;base64," + encodedText;
-};
-
exports.onUnload = addonManage.onUnload;
exports.onLoad = addonManage.onLoad;
-// move to sub-module later
-const scriptsCached = require("script_entries/scripts_cache").scriptsCached;
-mainPanel.port.on('whitelistByHash', function (hash, url, name, reason) {
- console.debug("hash is", hash);
- url = urlHandler.removeFragment(url);
- /* var cached_result = scriptsCached.isCached(hash);
- console.log("cached_result is", cached_result);
- if (cached_results) {
- reason = cached_result['reason'];
- }*/
- scriptsCached.addEntryByHash(hash, types.whitelisted(reason), {}, true, url);
-});
-
-mainPanel.port.on('removeFromWhitelistByHash', function (hash) {
- scriptsCached.removeEntryByHash(hash);
- removeHashCallback(hash);
-});
-const settings_tab = require("settings/settings_tab");
-var menuitem = require("menuitems").Menuitem({
- id: 'librejs_settings',
- menuid: "menu_ToolsPopup",
- label: "LibreJS",
- onCommand: function() {
- settings_tab.settingsManager.open();
- },
- insertbefore: "menu_pageInfo"
-});
-
-mainPanel.port.on('openSesame', function () {
- // open the settings tab.
- settings_tab.settingsManager.open();
-});
-
+var prefs = require('sdk/preferences/service');
+var isJavaScriptEnabled = prefs.get('javascript.enabled');
+if (!isJavaScriptEnabled) {
+ console.debug('JS disabled in add-on init');
+ // remove all http notifications
+ httpObserver.removeHttpObserver();
+ // TODO: the narcissus worker could also be stopped at this
+ // point, but I'm not doing that right now because I don't
+ // know how to re-enable it.
+ //narcissusWorker.stopWorker();
+} else {
+ console.debug('JS enabled in add-on init');
+}
+prefObserver.register();