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
|
/*
* This file is part of Adblock Plus <https://adblockplus.org/>,
* Copyright (C) 2006-2015 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 <http://www.gnu.org/licenses/>.
*/
(function(global)
{
const Ci = Components.interfaces;
const Cu = Components.utils;
if (!global.ext)
global.ext = {};
/* Message passing */
global.ext.onMessage = new global.ext._EventTarget();
global.ext.backgroundPage = new global.ext._MessageProxy(
window.QueryInterface(Ci.nsIInterfaceRequestor)
.getInterface(Ci.nsIDocShell)
.QueryInterface(Ci.nsIInterfaceRequestor)
.getInterface(Ci.nsIContentFrameMessageManager),
global.ext.onMessage);
window.addEventListener("unload", function()
{
global.ext.backgroundPage._disconnect();
}, false);
/* i18n */
global.ext.i18n = (function()
{
var Services = Cu.import("resource://gre/modules/Services.jsm", null).Services;
var pageName = location.pathname.replace(/.*\//, "").replace(/\..*?$/, "");
// Randomize URI to work around bug 719376
var stringBundle = Services.strings.createBundle("chrome://adblockplus/locale/" + pageName +
".properties?" + Math.random());
function getI18nMessage(key)
{
return {
"message": stringBundle.GetStringFromName(key)
};
}
function getText(message, args)
{
var text = message.message;
var placeholders = message.placeholders;
if (!args || !placeholders)
return text;
for (var key in placeholders)
{
var content = placeholders[key].content;
if (!content)
continue;
var index = parseInt(content.slice(1), 10);
if (isNaN(index))
continue;
var replacement = args[index - 1];
if (typeof replacement === "undefined")
continue;
text = text.split("$" + key + "$").join(replacement);
}
return text;
}
return {
getMessage: function(key, args)
{
try{
var message = getI18nMessage(key);
return getText(message, args);
}
catch(e)
{
// Don't report errors for special strings, these are expected to be
// missing.
if (key[0] != "@")
Cu.reportError(e);
return "";
}
}
};
})();
})(this);
|