/**
 * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript.
 * *
 * Copyright (C) 2011, 2012 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/>.
 *
 */

/**
 * The following module is intended to perform tasks when the
 * add-on is enabled and disabled.
 */ 

const {Cc, Ci, Cu, Cm, Cr} = require("chrome");

const httpObserver = require("http_observer/http_request_observer");

const jsLoadObserver = require("js_load_observer/js_load_observer");

const narcissusWorker = require("narcissus_parser/narcissus_worker");

const caching = require("http_observer/caching");

const prompt = Cc["@mozilla.org/embedcomp/prompt-service;1"].
                                    getService(Ci.nsIPromptService);


const tabs = require('tabs');

/**
 * Stop the httpObserver when the add-on
 * is disabled or removed.
 */
exports.onUnload = function(reason) {

 if (reason == "disable" || 
     reason == "shutdown" ||
     reason == "upgrade" ||
     reason == "downgrade") {
     // console.log("disable");
     // 
     // remove all http notifications
     httpObserver.removeHttpObserver();

     // remove dom script loaded observer
     jsLoadObserver.removeJsLoadObserver();

     // remove worker.
     narcissusWorker.stopWorker();
 }

};

exports.onLoad = function () {
    try {
    var clearCache = prompt.confirm(null, "LibreJS installation", "In order for LibreJS to work properly, you should clear the browser cache.\nIf you have tabs and windows opened prior to installing LibreJS, you will have to refresh them for their JavaScript to be analyzed and blocked. Press OK to clear the browser cache.");
    if (clearCache) {
	caching.clearAllCache();
    }
    } catch (e) {
	console.log(e);
    }
};