aboutsummaryrefslogtreecommitdiffstats
path: root/lib/main.js
blob: bf3451461b4dac55fd7ac6fad65c4a458f4415fd (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
/*jslint rhino: true, forin: true, onevar: false, browser: true, evil: true, laxbreak: true, undef: true, nomen: true, eqeqeq: false, bitwise: true, maxerr: 1000, immed: false, white: false, plusplus: false, regexp: false, undef: false */
// Released under the MIT/X11 license
// http://www.opensource.org/licenses/mit-license.php
//
// Links to read through
// http://ehsanakhgari.org/blog/2010-01-07/bugzilla-tweaks-enhanced
// http://hg.mozilla.org/users/ehsan.akhgari_gmail.com/extensions/file/tip/bugzillatweaks
// http://hg.mozilla.org/users/ehsan.akhgari_gmail.com/extensions/file/ecfa0f028b81/bugzillatweaks/lib/main.js
// http://hg.mozilla.org/users/avarma_mozilla.com/atul-packages/file/42ac1e99a107/packages\
//     /facebook-acquaintances/lib/main.js#l11
// http://ehsanakhgari.org/blog/2010-05-31/my-experience-jetpack-sdk#comment-1253
//
"use strict";
var browser = require("tab-browser");
var self = require("self");
var Request = require("request").Request;
var pageMod = require("page-mod");
var libbz = require("libbugzilla");
var tabs = require("tabs");
var logger = require("logger");

var config = {};

function isOurPage(window, matchingURLs) {
    var url = window.location.href;

    // like ["regexp-url1", "regexp-url2"]
    return matchingURLs.some(function (element,i,a) {
        return new RegExp(element).test(url);
    });
}

/**
 *
 */
function skipThisPage(doc) {
    var stemURL = "https://HOSTNAME/show_bug.cgi?id=";
    var titleElems = doc.getElementsByTagName("title");
    var titleStr = titleElems[0].textContent;
    var REArr = new RegExp("[bB]ug\\s+([0-9]+)").exec(titleStr);
    var hostname = doc.location.hostname;
    if (REArr) {
        var bugNo = REArr[1];
        doc.location = stemURL.replace("HOSTNAME",hostname) + bugNo;
    }
}

var messageHandler = exports.messageHandler = function messageHandler(worker, msg) {
    console.log("messageHandler: msg = " + msg.toSource());
    switch (msg.cmd) {
        case "LogMessage":
            console.log(msg.data);
            break;
        case "ExecCmd":
            libbz.executeCommand(msg.data); 
            break;
        case "AddLogRecord":
            logger.addLogRecord(msg.data); 
            break;
        case "GenerateTS":
            logger.generateTimeSheet();
            break;
        case "ClearTS":
            logger.clearTimeSheet();
            break;
        case "ImportTS":
            logger.importTimeSheet();
            break;
        case "GetInstalledPackages":
            // send message with packages back
            console.log("msg = " + msg.toSource());
            libbz.getInstalledPackages(msg.data, config, function (pkgsMsg) {
                worker.postMessage(pkgsMsg);
            });
            break;
        case "GetClipboard":
            libbz.getClipboard(msg.data, function (clipboard) {
                worker.postMessage(clipboard);
            });
            break;
        case "ChangeJSONURL":
            libbz.changeJSONURL();
            break;
        case "OpenURLinNewTab":
            libbz.openURLinNewTab(msg.data);
            break;
        case "testReady":
            // we ignore it here, interesting only in unit test
            break;
        default:
            console.error(msg.toSource());
    }
};

var contentScriptLibraries = {
    "bugzilla.redhat.com": [
        self.data.url("util.js"),
        self.data.url("color.js"),
        self.data.url("bzpage.js")
//        self.data.url("rhbzpage.js")
    ]
};

libbz.initialize(config, function () {
    pageMod.PageMod({
        include: [
            "https://bugzilla.redhat.com/show_bug.cgi?id=*"
        ],
        contentScriptWhen: 'ready',
        contentScriptFile: contentScriptLibraries["bugzilla.redhat.com"],
        onAttach: function onAttach(worker, msg) {
            console.log("worker: " + worker);
            worker.on('message', function (msg) {
                messageHandler(worker, msg);
            });
        }
    });
});

tabs.open("https://bugzilla.redhat.com/show_bug.cgi?id=673153");