summaryrefslogtreecommitdiff
path: root/data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/ui/ui_info.js
diff options
context:
space:
mode:
Diffstat (limited to 'data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/ui/ui_info.js')
-rw-r--r--data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/ui/ui_info.js232
1 files changed, 232 insertions, 0 deletions
diff --git a/data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/ui/ui_info.js b/data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/ui/ui_info.js
new file mode 100644
index 0000000..5e0c2a8
--- /dev/null
+++ b/data/extensions/jid1-KtlZuoiikVfFew@jetpack/resources/librejs/lib/ui/ui_info.js
@@ -0,0 +1,232 @@
+/**
+ * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript.
+ * *
+ * Copyright (C) 2011, 2012, 2013, 2014 Loic J. Duros
+ *
+ * This program 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,
+ * 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/>.
+ *
+ */
+
+
+
+// page mod executing content script at every page load.
+
+var data = require("sdk/self").data;
+var pageMod = require("sdk/page-mod");
+
+var urlHandler = require("url_handler/url_handler");
+
+var pageWorker = require("sdk/page-worker");
+
+var tabs = require("sdk/tabs");
+var isComplaintTab = require("addon_management/prefchange").isComplaintTab;
+
+// contain list of recently found contact links or email addresses.
+var contactList = {};
+
+// constants. Also available in lib/ui_info.js
+const CERTAIN_EMAIL_ADDRESS_FOUND = 'certainEmailAddressFound';
+const UNCERTAIN_EMAIL_ADDRESS_FOUND = 'uncertainEmailAddresFound';
+
+// Looking for contact links
+const CERTAIN_LINK_FOUND = 'certainLinkFound';
+const PROBABLE_LINK_FOUND = 'probableLinkFound';
+const UNCERTAIN_LINK_FOUND = 'uncertainLinkFound';
+const LINK_NOT_FOUND = 'contactLinkNotFound';
+
+// Looking for identi.ca and twitter accounts.
+const TWITTER_LINK_FOUND = 'twitterLinkFound';
+const IDENTICA_LINK_FOUND = 'identicaLinkFound';
+
+// phone number and address
+const PHONE_NUMBER_FOUND = 'phoneNumberFound';
+const SNAIL_ADDRESS_FOUND = 'snailAddressFound';
+
+/**
+ * main pageMod.
+ * Find blocked script in all pages being opened.
+ * Launch the scripts that search for a complaint contact.
+ *
+ */
+
+pageMod.PageMod({
+
+ include: ['file://*','*', 'data:*', 'about:*'],
+
+ contentScriptWhen: 'end',
+
+ contentScriptFile: [
+ data.url('complain/contact_regex.js'),
+ data.url('complain/link_types.js'),
+ data.url('third_party/jquery-src.js'),
+ data.url('third_party/jquery.easing.1.3.js'),
+ data.url('complain/contact_finder.js'),
+ data.url('complain/pagemod_finder.js'),
+ data.url('script_detector/script_detector.js')
+ ],
+
+ onAttach: function onAttach(worker) {
+
+ if (worker.tab !== undefined && isComplaintTab()) {
+
+ // this is a tab.
+ if (!foundInContactList(worker.url)) {
+ // the hostname doesn't appear in the object literal.
+ // run script fetching/complaint feature if applicable.
+ tabProcess(worker);
+ } else {
+ worker.postMessage(foundInContactList(worker.url));
+ }
+ }
+
+ }
+});
+
+/**
+ * foundInContactList
+ *
+ * Provides link if contact link is found for given url, or else
+ * false.
+ */
+var foundInContactList = function (url) {
+
+ var hostname = urlHandler.getHostname(url);
+
+ if (contactList[hostname] !== undefined) {
+
+ return contactList[hostname];
+
+ } else {
+
+ return false;
+
+ }
+
+};
+
+/**
+ * tabProcess
+ * Find blocked/accepted scripts, prepare
+ * display panel and complaint panel, ...
+ *
+ */
+var tabProcess = function (worker) {
+
+ var visitedUrl = {};
+
+ // webmaster email is better than a webpage.
+ worker.emailFound = false;
+ var modUrl = '',
+ searchUrl = '';
+
+ modUrl = worker.url;
+
+ console.debug('pagemod triggered');
+
+ // send local path to complain button graphic.
+ worker.postMessage({'event': 'assets-uri', 'value': data.url('assets/')});
+ worker.postMessage({'event': 'page-url', 'value': modUrl});
+
+ worker.on('message', function (respData) {
+
+ // console.debug('worker is receiving a message', respData.event);
+
+ var pw;
+
+ worker.on('detach', function () {
+ console.debug('detaching worker');
+ if (pw) {
+ pw.destroy();
+
+ }
+ });
+ if (respData.contact !== undefined) {
+ // pass the message to the complaint display panel.
+ worker.postMessage(respData);
+ }
+
+ else if (respData.event === 'complaintSearch') {
+
+ console.debug('complaintSearch triggered');
+ console.debug('worker tab url', worker.tab.url);
+ if (!(respData.urlSearch.linkValue in visitedUrl)) {
+
+ visitedUrl[respData.urlSearch.linkValue] = 1;
+
+ respData.urlSearch.linkValue = urlHandler.addFragment(respData.urlSearch.linkValue, 'librejs=true');
+ pw = searchSecondLevelPage(this, respData.urlSearch.linkValue, this.url);
+
+ }
+ // currently not needed.
+ /*else {
+ console.debug(respData.urlSearch.linkValue, 'already visited');
+ }*/
+ }
+
+
+ });
+
+};
+
+var searchSecondLevelPage = function(
+ worker, urlToSearch, originalUrl) {
+ return;
+ var originalWorker = worker;
+
+ console.debug('url to search is', urlToSearch);
+
+ console.debug(urlToSearch, 'and', originalUrl);
+
+ if (urlHandler.haveSameHostname(urlToSearch, originalUrl)) {
+ return pageWorker.Page({
+ contentURL: urlToSearch,
+ contentScriptFile: [
+ data.url('complain/contact_regex.js'),
+ data.url('complain/link_types.js'),
+ data.url('third_party/jquery-src.js'),
+ data.url('third_party/jquery.easing.1.3.js'),
+ data.url('complain/contact_finder.js'),
+ data.url('complain/worker_finder.js')
+ ],
+ contentScriptWhen: "end",
+ onMessage: function (respData) {
+ console.debug(JSON.stringify(respData));
+ console.debug(originalWorker.url);
+ originalWorker.postMessage(respData);
+
+ if (respData.event === 'destroy') {
+ try {
+ console.debug('destroying worker', this.contentURL);
+ this.destroy();
+ } catch (e) {
+ console.debug('in worker', e);
+ }
+ }
+ }
+ });
+ }
+};
+
+
+
+
+exports.testModule = {
+
+ 'contactList': contactList,
+
+ 'foundInContactList': foundInContactList,
+
+ 'tabProcess': tabProcess
+
+};