/*
* This file is part of Adblock Plus ,
* Copyright (C) 2006-2017 eyeo GmbH
*
* Adblock Plus is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as
* published by the Free Software Foundation.
*
* Adblock Plus 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 Adblock Plus. If not, see .
*/
let {XPCOMUtils} = Cu.import("resource://gre/modules/XPCOMUtils.jsm", null);
let {Services} = Cu.import("resource://gre/modules/Services.jsm", null);
let {_EventTarget: EventTarget, i18n} = require("ext_common");
let {port} = require("messaging");
exports.onMessage = new EventTarget(port);
exports.i18n = i18n;
function Page(windowID)
{
this._windowID = windowID;
}
Page.prototype = {
sendMessage: function(payload)
{
port.emit("ext_message", {targetID: this._windowID, payload});
}
};
exports.Page = Page;
function PageMap()
{
this._map = new Map();
port.on("ext_disconnect", windowID => this._map.delete(windowID));
}
PageMap.prototype = {
keys: function()
{
let result = [];
for (let windowID of this._map.keys())
result.push(new Page(windowID));
return result;
},
get: function(page)
{
return this._map.get(page._windowID);
},
set: function(page, value)
{
this._map.set(page._windowID, value);
},
has: function(page)
{
return this._map.has(page._windowID);
},
delete: function(page)
{
return this._map.delete(page._windowID);
}
};
exports.PageMap = PageMap;
exports.showOptions = function()
{
require("ui").UI.openFiltersDialog();
};