Определить вкладку, которая сделала запрос в Firefox Addon SDK

Я использую Firefox Addon SDK для создания чего-то, что отслеживает и отображает HTTP-трафик в браузере. Аналогично HTTPFox или Live HTTP Headers . Меня интересует, какая вкладка в браузере (если есть) сгенерировала запрос

Используя службу наблюдателя , я отслеживаю события «http-on-explore-response». У меня есть следующий код для идентификации nsIDomWindow, сгенерировавшего запрос:


const observer = require("observer-service"),
    {Ci} = require("chrome");

function getTabFromChannel(channel) {
    try {
        var noteCB= channel.notificationCallbacks ? channel.notificationCallbacks : channel.loadGroup.notificationCallbacks;

        if (!noteCB) { return null; }

        var domWin = noteCB.getInterface(Ci.nsIDOMWindow);
        return domWin.top;
    } catch (e) {
        dump(e + "\n");
        return null;
    }
}

function logHTTPTraffic(sub, data) {
    sub.QueryInterface(Ci.nsIHttpChannel);
    var ab = getTabFromChannel(sub);
    console.log(tab);
}

observer.add("http-on-examine-response", logHTTPTraffic);

В основном заимствовано из документации о том, как идентифицировать браузер, сгенерировавший запрос . Некоторые также взяты из надстройки Google PageSpeed ​​ Firefox.

Есть ли рекомендуемый или предпочтительный способ перехода от объекта nsIDOMWindow domWin к элементу вкладки в модуле SDK tabs ?

I ' Я подумал о чем-то хакерском, например, сканировании списка вкладок для одного с URL-адресом, который соответствует URL-адресу для domWin, но тогда мне нужно беспокоиться о нескольких вкладках с одинаковым URL-адресом.

5
задан Wladimir Palant 12 November 2011 в 07:27
поделиться