forked from mirrors/gecko-dev
Unfortunately, when onLocationChange is fired for an attack site for the about:blocked error page that we display, content.document has not been updated with the loaded error document, so content.document.documentURI will appear to be the previous page that had been loaded. In this patch, we update the parent's cache of documentURI in onStateChange as well, since this seems to be fired after the error page has been loaded. MozReview-Commit-ID: 1yLAw0JTEC6 --HG-- extra : rebase_source : 4f6f850fbe9c0b1f8ae3d6e2eaa42ef52a1e55c4
51 lines
1.9 KiB
JavaScript
51 lines
1.9 KiB
JavaScript
/* 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/. */
|
|
|
|
// Note: this file is not shipped (through jar.mn)
|
|
// if MOZ_SAFE_BROWSING is not defined.
|
|
|
|
var gSafeBrowsing = {
|
|
|
|
setReportPhishingMenu: function() {
|
|
// In order to detect whether or not we're at the phishing warning
|
|
// page, we have to check the documentURI instead of the currentURI.
|
|
// This is because when the DocShell loads an error page, the
|
|
// currentURI stays at the original target, while the documentURI
|
|
// will point to the internal error page we loaded instead.
|
|
var docURI = gBrowser.selectedBrowser.documentURI;
|
|
var isPhishingPage =
|
|
docURI && docURI.spec.startsWith("about:blocked?e=phishingBlocked");
|
|
|
|
// Show/hide the appropriate menu item.
|
|
document.getElementById("menu_HelpPopup_reportPhishingtoolmenu")
|
|
.hidden = isPhishingPage;
|
|
document.getElementById("menu_HelpPopup_reportPhishingErrortoolmenu")
|
|
.hidden = !isPhishingPage;
|
|
|
|
var broadcasterId = isPhishingPage
|
|
? "reportPhishingErrorBroadcaster"
|
|
: "reportPhishingBroadcaster";
|
|
|
|
var broadcaster = document.getElementById(broadcasterId);
|
|
if (!broadcaster)
|
|
return;
|
|
|
|
// Now look at the currentURI to learn which page we were trying
|
|
// to browse to.
|
|
let uri = gBrowser.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 "Phish", "Error", "Malware" or "MalwareError"
|
|
* @return String the report phishing URL.
|
|
*/
|
|
getReportURL: function(name) {
|
|
return SafeBrowsing.getReportURL(name, gBrowser.currentURI);
|
|
}
|
|
}
|