diff options
Diffstat (limited to 'comm/suite/browser/safeBrowsingOverlay.js')
-rw-r--r-- | comm/suite/browser/safeBrowsingOverlay.js | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/comm/suite/browser/safeBrowsingOverlay.js b/comm/suite/browser/safeBrowsingOverlay.js new file mode 100644 index 0000000000..3e92234472 --- /dev/null +++ b/comm/suite/browser/safeBrowsingOverlay.js @@ -0,0 +1,75 @@ +/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +var gSafeBrowsing = { + initMenuItems: function initMenuItems() { + // A blocked page will have a specific about:blocked content documentURI. + var docURI = content.document.documentURI; + + // "reason" isn't currently used but it's here to make porting + // from Firefox easier and may also be useful in the future + // for further testing and setting menu items. + let reason; + + // Show/hide the appropriate menu item. + // Initially allow report url and disallow reporting phishing error. + document.getElementById("reportPhishing").hidden = false; + document.getElementById("reportPhishingError").hidden = true; + + if (docURI.startsWith("about:blocked")) { + // It's blocked so don't allow reporting again. + document.getElementById("reportPhishing").hidden = true; + // Test for blocked page. + if (/e=malwareBlocked/.test(docURI)) { + reason = "malware"; + } else if (/e=unwantedBlocked/.test(docURI)) { + reason = "unwanted"; + } else if (/e=deceptiveBlocked/.test(docURI)) { + reason = "phishing"; + document.getElementById("reportPhishingError").hidden = false; + } + } + + var broadcaster = document.getElementById("safeBrowsingBroadcaster"); + var uri = getBrowser().currentURI; + if (uri && (uri.schemeIs("http") || uri.schemeIs("https"))) + broadcaster.removeAttribute("disabled"); + else + broadcaster.setAttribute("disabled", true); + }, + + /** + * Used to report a phishing page or a false positive + * + * @param name + * String One of "PhishMistake", "MalwareMistake", or "Phish" + * @param info + * Information about the reasons for blocking the resource. + * In the case false positive, it may contain SafeBrowsing + * matching list and provider of the list + * @return String the report phishing URL. + */ + getReportURL(name, info) { + let reportInfo = info; + if (!reportInfo) { + let pageUri = getBrowser().currentURI.clone(); + + // Remove the query to avoid including potentially sensitive data + if (pageUri instanceof Ci.nsIURL) { + pageUri = pageUri.mutate().setQuery("").finalize(); + } + + reportInfo = { uri: pageUri.asciiSpec }; + } + return SafeBrowsing.getReportURL(name, reportInfo); + }, + + initOverlay: function initOverlay(aEvent) { + var popup = document.getElementById("helpPopup"); + popup.addEventListener("popupshowing", gSafeBrowsing.initMenuItems); + } +} + +window.addEventListener("load", gSafeBrowsing.initOverlay); |