OLD | NEW |
| (Empty) |
1 <!DOCTYPE html> | |
2 | |
3 <html> | |
4 <head> | |
5 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | |
6 <title>Adblock Plus Errors</title> | |
7 <style type="text/css"> | |
8 .warning, .error | |
9 { | |
10 border: 1px dashed black; | |
11 margin: 5px; | |
12 padding: 2px; | |
13 white-space: pre-wrap; | |
14 } | |
15 | |
16 .error | |
17 { | |
18 background-color: #fff0f0; | |
19 } | |
20 | |
21 .warning | |
22 { | |
23 background-color: #ffffe0; | |
24 } | |
25 | |
26 button | |
27 { | |
28 float: right; | |
29 } | |
30 </style> | |
31 </head> | |
32 <body> | |
33 <button onclick="window.location.reload();">Refresh</button> | |
34 <button onclick="clearErrors();">Clear errors</button> | |
35 | |
36 <script type="application/x-javascript;version=1.7"> | |
37 let id = null; | |
38 try { | |
39 let {addonVersion, addonID} = require("info"); | |
40 | |
41 let text = "You are running Adblock Plus " + addonVersion; | |
42 text += "."; | |
43 document.write("<p>" + text + "</p>"); | |
44 | |
45 id = addonID.replace(/[\{\}]/g, ""); | |
46 } catch (e) {} | |
47 | |
48 // See https://bugzilla.mozilla.org/show_bug.cgi?id=664695 - starting with | |
49 // Gecko 19 this function returns the result, before that it wrote to a | |
50 // parameter. | |
51 let outparam = {}; | |
52 let messages = Components.classes["@mozilla.org/consoleservice;1"] | |
53 .getService(Components.interfaces.nsIConsoleService) | |
54 .getMessageArray(outparam, {}); | |
55 messages = messages || outparam.value || []; | |
56 messages = messages.filter(function(message) | |
57 { | |
58 return (message instanceof Components.interfaces.nsIScriptError && | |
59 !/^https?:/i.test(message.sourceName) && | |
60 (/adblock/i.test(message.errorMessage) || /adblock/i.test(message.sour
ceName) || | |
61 id && (message.errorMessage.indexOf(id) >= 0 || message.sourceName &&
message.sourceName.indexOf(id) >= 0))); | |
62 }); | |
63 | |
64 if (messages.length) | |
65 { | |
66 document.write("<p>Errors related to Adblock Plus:</p>"); | |
67 | |
68 for (let message of messages) | |
69 { | |
70 let type = (message.flags & Components.interfaces.nsIScriptError.warning
Flag ? "warning" : "error"); | |
71 let html = "<b>" + (type == "warning" ? "Warning:" : "Error:") + "</b><b
r>"; | |
72 html += encodeHTML(message.errorMessage) + "<br><br>"; | |
73 if (message.sourceLine) | |
74 html += "Source line: " + encodeHTML(message.sourceLine) + "<br>"; | |
75 if (message.sourceName) | |
76 html += "Location: " + encodeHTML(message.sourceName) + " line " + mes
sage.lineNumber + "<br>"; | |
77 html = html.replace(/(<br>)+$/, ""); | |
78 document.write("<div class='" + type + "'>" + | |
79 html + | |
80 "</div>"); | |
81 } | |
82 } | |
83 else | |
84 { | |
85 document.write("<p>No errors found.</p>"); | |
86 } | |
87 | |
88 function require(module) | |
89 { | |
90 let {Services} = Components.utils.import("resource://gre/modules/Services.
jsm"); | |
91 let result = {}; | |
92 result.wrappedJSObject = result; | |
93 Services.obs.notifyObservers(result, "adblockplus-require", module); | |
94 return result.exports; | |
95 } | |
96 | |
97 function encodeHTML(string) | |
98 { | |
99 return string.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, "
>"); | |
100 } | |
101 | |
102 function clearErrors() | |
103 { | |
104 Components.classes["@mozilla.org/consoleservice;1"] | |
105 .getService(Components.interfaces.nsIConsoleService) | |
106 .reset(); | |
107 window.location.reload(); | |
108 } | |
109 </script> | |
110 </body> | |
111 </html> | |
OLD | NEW |