updatemuffler

updatemuffler prevents NoScript and friends from bothering you with 'Successful Update' pages.
git clone https://wehaveforgeathome.hates.computer/updatemuffler.git
Log | Files | Refs | LICENSE

commit 650464b19ed1be0d99346cb1be7ff4acd826a1e0
parent ef132144d35af55e516af27732a981632f8e6336
Author: Ryan Wolf <rwolf@borderstylo.com>
Date:   Tue,  4 May 2010 02:09:22 -0700

name changed

Diffstat:
M.gitignore | 2+-
MREADME.md | 29++++++++++++++++++++++++-----
Mchrome.manifest | 6+++---
Dchrome/content/naggerstomper.js | 50--------------------------------------------------
Mchrome/content/overlay.xul | 8++++----
Achrome/content/updatemuffler.js | 50++++++++++++++++++++++++++++++++++++++++++++++++++
Adefaults/preferences/blacklist.js | 4++++
Ddefaults/preferences/naggerstomper.js | 4----
Minstall.rdf | 8++++----
Mmakefile | 4++--
10 files changed, 92 insertions(+), 73 deletions(-)

diff --git a/.gitignore b/.gitignore @@ -1 +1 @@ -naggerstomper.xpi +updatemuffler.xpi diff --git a/README.md b/README.md @@ -1,15 +1,15 @@ -Nagger Stomper +updatemuffler ============ -Nagger Stomper prevents NoScript and friends from bothering you with "Successful Update" pages by closing tabs that are opened to known nag pages. +Prevents NoScript and friends from bothering you with "Successful Update" pages by closing tabs that are opened to blacklisted pages. Installation ============ -### For Use +### For Normal Use make -Then open naggerstomper.xpi in Firefox +Then open updatemuffler.xpi in Firefox ### For Development @@ -19,10 +19,29 @@ Navigate to: ...and create a file named: - naggerstomper@pseudony.ms + updatemuffler@pseudony.ms Inside that file, write the path of this project (making sure it ends in slash). +Adding to the Blacklist +======================= + +Go to about:config + +Right click -> New -> String + +Pick + + extensions.updatemuffler.blacklist.<name of page> + +for the name, and + + ^http:\/\/regex-escaped-string-matching-annoying-page + +for the value. + +See extensions.updatemuffler.blacklist.noscript for a working example. + Thanks ====== Thanks to [retiman](http://github.com/retiman) for a great firefox extension skeleton, and for complaining loudly enough about NoScript to inspire this extension. diff --git a/chrome.manifest b/chrome.manifest @@ -1,3 +1,3 @@ -content naggerstomper chrome/content/ -content naggerstomper chrome/content/ contentaccessible=yes -overlay chrome://browser/content/browser.xul chrome://naggerstomper/content/overlay.xul +content updatemuffler chrome/content/ +content updatemuffler chrome/content/ contentaccessible=yes +overlay chrome://browser/content/browser.xul chrome://updatemuffler/content/overlay.xul diff --git a/chrome/content/naggerstomper.js b/chrome/content/naggerstomper.js @@ -1,50 +0,0 @@ -new function () { - // TODO: nice UI for adding patterns - - var getNaggers = function () { - // Get the "extensions.myext." branch - var prefService = Components.classes["@mozilla.org/preferences-service;1"]. - getService(Components.interfaces.nsIPrefService); - var prefBranch = prefService.getBranch("extensions.naggerstomper.naggers."); - var keys = prefBranch.getChildList("", {}); - return keys.map(function (key) { - return new RegExp(prefBranch.getCharPref(key)); - }); - }; - - var isNag = function (url) { - return getNaggers().some(function (regex) { return url.match(regex); }); - }; - - var closeTabIfNag = function (tab) { - var browser = gBrowser.getBrowserForTab(tab); - browser.addEventListener( - "pageshow", - function (event) { - var url = event.originalTarget.defaultView.location.href; - if (url === "about:blank") { - return; - } - if (isNag(url)) { - gBrowser.removeTab(tab); - } - browser.removeEventListener("pageshow", arguments.callee, false); - }, - false - ); - }; - - window.addEventListener( - "load", - function () { - gBrowser.tabContainer.addEventListener( - "TabOpen", - function (event) { - closeTabIfNag(event.target); - }, - false - ); - }, - false - ); -} diff --git a/chrome/content/overlay.xul b/chrome/content/overlay.xul @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="UTF-8"?> -<overlay id="naggerstomper" +<overlay id="updatemuffler" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> - <script type="application/x-javascript" src="naggerstomper.js" /> + <script type="application/x-javascript" src="updatemuffler.js" /> <!-- <menupopup id="menu_ToolsPopup"> - <menuitem label="Nagger Stomper" insertbefore="javascriptConsole" - oncommand="alert('STOMP!');"/> + <menuitem id="updatemuffler-menuitem" label="Muffle This Page" + insertbefore="javascriptConsole" oncommand="alert('TODO');"/> </menupopup> --> </overlay> diff --git a/chrome/content/updatemuffler.js b/chrome/content/updatemuffler.js @@ -0,0 +1,50 @@ +new function () { + // TODO: #updatemuffler-menuitem command handler for updating blacklist + + var getBlacklist = function () { + var prefService = Components.classes["@mozilla.org/preferences-service;1"]. + getService(Components.interfaces.nsIPrefService); + var prefBranch = prefService. + getBranch("extensions.updatemuffler.blacklist."); + var keys = prefBranch.getChildList("", {}); + return keys.map(function (key) { + return new RegExp(prefBranch.getCharPref(key)); + }); + }; + + var isBlacklisted = function (url) { + return getBlacklist().some(function (regex) { return url.match(regex); }); + }; + + var closeTabIfBlacklisted = function (tab) { + var browser = gBrowser.getBrowserForTab(tab); + browser.addEventListener( + "pageshow", + function (event) { + var url = event.originalTarget.defaultView.location.href; + if (url === "about:blank") { + return; + } + if (isBlacklisted(url)) { + gBrowser.removeTab(tab); + } + browser.removeEventListener("pageshow", arguments.callee, false); + }, + false + ); + }; + + window.addEventListener( + "load", + function () { + gBrowser.tabContainer.addEventListener( + "TabOpen", + function (event) { + closeTabIfBlacklisted(event.target); + }, + false + ); + }, + false + ); +} diff --git a/defaults/preferences/blacklist.js b/defaults/preferences/blacklist.js @@ -0,0 +1,4 @@ +pref( + "extensions.updatemuffler.blacklist.noscript", + "^http:\/\/noscript.net\/\?ver=.*&prev=.*" +); diff --git a/defaults/preferences/naggerstomper.js b/defaults/preferences/naggerstomper.js @@ -1,4 +0,0 @@ -pref( - "extensions.naggerstomper.naggers.noscript", - "^http:\/\/noscript.net\/\?ver=.*&prev=.*" -); diff --git a/install.rdf b/install.rdf @@ -2,8 +2,8 @@ <RDF xmlns:em="http://www.mozilla.org/2004/em-rdf#" xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <Description about="urn:mozilla:install-manifest"> - <em:id>naggerstomper@pseudony.ms</em:id> - <em:name>Nagger Stomper</em:name> + <em:id>updatemuffler@pseudony.ms</em:id> + <em:name>updatemuffler</em:name> <em:version>0.0.2</em:version> <em:type>2</em:type> <em:targetApplication> @@ -14,7 +14,7 @@ </Description> </em:targetApplication> <em:creator>Ryan Wolf</em:creator> - <em:description>Nagger Stomper prevents NoScript and friends from bothering you with "Successful Update" pages.</em:description> - <em:homepageURL>http://hampsterdance.com/</em:homepageURL> + <em:description>Prevent NoScript and friends from bothering you with "Successful Update" pages.</em:description> + <em:homepageURL>http://github.com/thebigbad/updatemuffler</em:homepageURL> </Description> </RDF> diff --git a/makefile b/makefile @@ -1,5 +1,5 @@ package : - zip naggerstomper.xpi chrome/ defaults/ chrome.manifest install.rdf + zip updatemuffler.xpi chrome/ defaults/ chrome.manifest install.rdf clean : - rm naggerstomper.xpi + rm updatemuffler.xpi