diff options
author | Ruben Rodriguez <ruben@gnu.org> | 2015-01-28 22:16:14 +0100 |
---|---|---|
committer | Ruben Rodriguez <ruben@gnu.org> | 2015-01-28 22:16:14 +0100 |
commit | 16f2defa530b36cae7da5e28b5eafef9138adba5 (patch) | |
tree | c1415ef31bf1e96da1674aec2fc2c580c87d9e08 /data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/pref_observer | |
parent | 763c090c20c60c13f9b6f50b953323a237fd778a (diff) |
Updated to v31.4.0ESR
* Search form in about:icecat now searches in default search engine
* Disabled accessibility.blockautorefresh
* Replaced references to Open Source with Free Software where applicable
* Added html5-video-everywhere v0.1.1 extension: https://github.com/lejenome/html5-video-everywhere
* Updated LibreJS to 6.0.8
Build scripts updated to use pbuilder
Diffstat (limited to 'data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/pref_observer')
-rw-r--r-- | data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/pref_observer/pref_observer.js | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/pref_observer/pref_observer.js b/data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/pref_observer/pref_observer.js new file mode 100644 index 0000000..d066c2f --- /dev/null +++ b/data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/pref_observer/pref_observer.js @@ -0,0 +1,72 @@ +/** + * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript. + * * + * Copyright (C) 2014, 2015 Nik Nyby + * + * 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. + * + * 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 GNU LibreJS. If not, see <http://www.gnu.org/licenses/>. + */ + +var {Cc, Ci} = require("chrome"); +const httpObserver = require("http_observer/http_request_observer"); + +// https://developer.mozilla.org/en-US/Add-ons/Code_snippets/Preferences#Using_preference_observers +var prefObserver = { + register: function() { + // First we'll need the preference services to look for preferences. + var prefService = Cc["@mozilla.org/preferences-service;1"] + .getService(Ci.nsIPrefService); + + // For this.branch we ask for the preferences for + // extensions.myextension. and children + this.branch = prefService.getBranch("javascript."); + + // Finally add the observer. + this.branch.addObserver("", this, false); + }, + + unregister: function() { + this.branch.removeObserver("", this); + }, + + observe: function(aSubject, aTopic, aData) { + // aSubject is the nsIPrefBranch we're observing (after appropriate QI) + // aData is the name of the pref that's been changed (relative to + // aSubject) + switch (aData) { + case "enabled": + var prefs = require('sdk/preferences/service'); + var isJavaScriptEnabled = prefs.get('javascript.enabled'); + if (!isJavaScriptEnabled) { + console.debug('JS disabled in observer'); + // 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 observer'); + httpObserver.startHttpObserver(); + } + break; + } + } +}; + +exports.register = function() { + prefObserver.register(); +}; |