Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Side by Side Diff: chrome/content/ui/sendReport.js

Issue 29333316: Issue 3486 - Issue reporter: check whether window is private in the content process (Closed)
Patch Set: Created Jan. 7, 2016, 7:30 p.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | lib/child/dataCollector.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
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, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;"). replace(/"/g, "&quot;"); 1564 return str.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;"). replace(/"/g, "&quot;");
1560 } 1565 }
OLDNEW
« no previous file with comments | « no previous file | lib/child/dataCollector.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld