OLD | NEW |
1 /* | 1 /* |
2 * This file is part of Adblock Plus <https://adblockplus.org/>, | 2 * This file is part of Adblock Plus <https://adblockplus.org/>, |
3 * Copyright (C) 2006-2015 Eyeo GmbH | 3 * Copyright (C) 2006-2015 Eyeo GmbH |
4 * | 4 * |
5 * Adblock Plus is free software: you can redistribute it and/or modify | 5 * Adblock Plus is free software: you can redistribute it and/or modify |
6 * it under the terms of the GNU General Public License version 3 as | 6 * it under the terms of the GNU General Public License version 3 as |
7 * published by the Free Software Foundation. | 7 * published by the Free Software Foundation. |
8 * | 8 * |
9 * Adblock Plus is distributed in the hope that it will be useful, | 9 * Adblock Plus is distributed in the hope that it will be useful, |
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
12 * GNU General Public License for more details. | 12 * GNU General Public License for more details. |
13 * | 13 * |
14 * You should have received a copy of the GNU General Public License | 14 * You should have received a copy of the GNU General Public License |
15 * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. | 15 * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. |
16 */ | 16 */ |
17 | 17 |
18 // | 18 // |
19 // Report data template, more data will be added during data collection | 19 // Report data template, more data will be added during data collection |
20 // | 20 // |
21 | 21 |
22 let {Services} = Cu.import("resource://gre/modules/Services.jsm", {}); | 22 let {Services} = Cu.import("resource://gre/modules/Services.jsm", {}); |
23 let {FileUtils} = Cu.import("resource://gre/modules/FileUtils.jsm", {}); | 23 let {FileUtils} = Cu.import("resource://gre/modules/FileUtils.jsm", {}); |
24 let {PrivateBrowsingUtils} = Cu.import("resource://gre/modules/PrivateBrowsingUt
ils.jsm", {}); | |
25 | 24 |
26 const MILLISECONDS_IN_SECOND = 1000; | 25 const MILLISECONDS_IN_SECOND = 1000; |
27 const SECONDS_IN_MINUTE = 60; | 26 const SECONDS_IN_MINUTE = 60; |
28 const SECONDS_IN_HOUR = 60 * SECONDS_IN_MINUTE; | 27 const SECONDS_IN_HOUR = 60 * SECONDS_IN_MINUTE; |
29 const SECONDS_IN_DAY = 24 * SECONDS_IN_HOUR; | 28 const SECONDS_IN_DAY = 24 * SECONDS_IN_HOUR; |
30 | 29 |
31 let contentWindow = window.arguments[0]; | 30 let contentWindow = window.arguments[0]; |
32 let windowURI = window.arguments[1]; | 31 let windowURI = window.arguments[1]; |
33 if (typeof windowURI == "string") | 32 if (typeof windowURI == "string") |
34 windowURI = Services.newURI(windowURI, null, null); | 33 windowURI = Services.newURI(windowURI, null, null); |
35 let browser = window.arguments[2]; | 34 let browser = window.arguments[2]; |
| 35 let isPrivate = false; |
36 | 36 |
37 let reportData = new DOMParser().parseFromString("<report></report>", "text/xml"
); | 37 let reportData = new DOMParser().parseFromString("<report></report>", "text/xml"
); |
38 | 38 |
39 // Some helper functions to work with the report data | 39 // Some helper functions to work with the report data |
40 function reportElement(tag) | 40 function reportElement(tag) |
41 { | 41 { |
42 for (let child = reportData.documentElement.firstChild; child; child = child.n
extSibling) | 42 for (let child = reportData.documentElement.firstChild; child; child = child.n
extSibling) |
43 if (child.nodeType == Node.ELEMENT_NODE && child.tagName == tag) | 43 if (child.nodeType == Node.ELEMENT_NODE && child.tagName == tag) |
44 return child; | 44 return child; |
45 let element = reportData.createElement(tag); | 45 let element = reportData.createElement(tag); |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
91 let element = reportElement("platform"); | 91 let element = reportElement("platform"); |
92 element.setAttribute("name", "Gecko"); | 92 element.setAttribute("name", "Gecko"); |
93 element.setAttribute("version", Services.appinfo.platformVersion); | 93 element.setAttribute("version", Services.appinfo.platformVersion); |
94 element.setAttribute("build", Services.appinfo.platformBuildID); | 94 element.setAttribute("build", Services.appinfo.platformBuildID); |
95 }; | 95 }; |
96 { | 96 { |
97 let element = reportElement("options"); | 97 let element = reportElement("options"); |
98 appendElement(element, "option", {id: "enabled"}, Prefs.enabled); | 98 appendElement(element, "option", {id: "enabled"}, Prefs.enabled); |
99 appendElement(element, "option", {id: "objecttabs"}, Prefs.frameobjects); | 99 appendElement(element, "option", {id: "objecttabs"}, Prefs.frameobjects); |
100 appendElement(element, "option", {id: "collapse"}, !Prefs.fastcollapse); | 100 appendElement(element, "option", {id: "collapse"}, !Prefs.fastcollapse); |
101 appendElement(element, "option", {id: "privateBrowsing"}, PrivateBrowsingUtils
.isContentWindowPrivate(contentWindow)); | |
102 appendElement(element, "option", {id: "subscriptionsAutoUpdate"}, Prefs.subscr
iptions_autoupdate); | 101 appendElement(element, "option", {id: "subscriptionsAutoUpdate"}, Prefs.subscr
iptions_autoupdate); |
103 appendElement(element, "option", {id: "javascript"}, Services.prefs.getBoolPre
f("javascript.enabled")); | 102 appendElement(element, "option", {id: "javascript"}, Services.prefs.getBoolPre
f("javascript.enabled")); |
104 appendElement(element, "option", {id: "cookieBehavior"}, Services.prefs.getInt
Pref("network.cookie.cookieBehavior")); | 103 appendElement(element, "option", {id: "cookieBehavior"}, Services.prefs.getInt
Pref("network.cookie.cookieBehavior")); |
105 }; | 104 }; |
106 | 105 |
107 // | 106 // |
108 // Data collectors | 107 // Data collectors |
109 // | 108 // |
110 | 109 |
111 var reportsListDataSource = | 110 var reportsListDataSource = |
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
325 collectData: function(wnd, windowURI, browser, callback) | 324 collectData: function(wnd, windowURI, browser, callback) |
326 { | 325 { |
327 let outerWindowID = wnd.QueryInterface(Ci.nsIInterfaceRequestor) | 326 let outerWindowID = wnd.QueryInterface(Ci.nsIInterfaceRequestor) |
328 .getInterface(Ci.nsIDOMWindowUtils) | 327 .getInterface(Ci.nsIDOMWindowUtils) |
329 .outerWindowID; | 328 .outerWindowID; |
330 let dataCollector = require("dataCollector"); | 329 let dataCollector = require("dataCollector"); |
331 let screenshotWidth = screenshotDataSource.getWidth(); | 330 let screenshotWidth = screenshotDataSource.getWidth(); |
332 dataCollector.collectData(outerWindowID, screenshotWidth, data => { | 331 dataCollector.collectData(outerWindowID, screenshotWidth, data => { |
333 screenshotDataSource.setData(data && data.screenshot); | 332 screenshotDataSource.setData(data && data.screenshot); |
334 framesDataSource.setData(windowURI, data && data.opener, data && data.refe
rrer, data && data.frames); | 333 framesDataSource.setData(windowURI, data && data.opener, data && data.refe
rrer, data && data.frames); |
| 334 |
| 335 if (data && data.isPrivate) |
| 336 isPrivate = true; |
| 337 let element = reportElement("options"); |
| 338 appendElement(element, "option", {id: "privateBrowsing"}, isPrivate); |
| 339 |
335 callback(); | 340 callback(); |
336 }); | 341 }); |
337 } | 342 } |
338 } | 343 } |
339 | 344 |
340 var screenshotDataSource = | 345 var screenshotDataSource = |
341 { | 346 { |
342 imageOffset: 10, | 347 imageOffset: 10, |
343 | 348 |
344 // Fields used for user interaction | 349 // Fields used for user interaction |
(...skipping 1166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1511 | 1516 |
1512 if (success) | 1517 if (success) |
1513 { | 1518 { |
1514 try | 1519 try |
1515 { | 1520 { |
1516 let link = request.responseXML.getElementById("link").getAttribute("href")
; | 1521 let link = request.responseXML.getElementById("link").getAttribute("href")
; |
1517 let button = E("copyLink"); | 1522 let button = E("copyLink"); |
1518 button.setAttribute("url", link); | 1523 button.setAttribute("url", link); |
1519 button.removeAttribute("disabled"); | 1524 button.removeAttribute("disabled"); |
1520 | 1525 |
1521 if (!PrivateBrowsingUtils.isContentWindowPrivate(contentWindow)) | 1526 if (!isPrivate) |
1522 reportsListDataSource.addReport(framesDataSource.site, link); | 1527 reportsListDataSource.addReport(framesDataSource.site, link); |
1523 } catch (e) {} | 1528 } catch (e) {} |
1524 E("copyLinkBox").hidden = false; | 1529 E("copyLinkBox").hidden = false; |
1525 | 1530 |
1526 document.documentElement.getButton("finish").disabled = false; | 1531 document.documentElement.getButton("finish").disabled = false; |
1527 document.documentElement.getButton("cancel").disabled = true; | 1532 document.documentElement.getButton("cancel").disabled = true; |
1528 E("progressBar").activeItemComplete = true; | 1533 E("progressBar").activeItemComplete = true; |
1529 } | 1534 } |
1530 } | 1535 } |
1531 | 1536 |
(...skipping 19 matching lines...) Expand all Loading... |
1551 | 1556 |
1552 function censorURL(url) | 1557 function censorURL(url) |
1553 { | 1558 { |
1554 return url.replace(/([?;&\/#][^?;&\/#]+?=)[^?;&\/#]+/g, "$1*"); | 1559 return url.replace(/([?;&\/#][^?;&\/#]+?=)[^?;&\/#]+/g, "$1*"); |
1555 } | 1560 } |
1556 | 1561 |
1557 function encodeHTML(str) | 1562 function encodeHTML(str) |
1558 { | 1563 { |
1559 return str.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").
replace(/"/g, """); | 1564 return str.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").
replace(/"/g, """); |
1560 } | 1565 } |
OLD | NEW |