summaryrefslogtreecommitdiffstats
path: root/browser/actors/BlockedSiteParent.sys.mjs
diff options
context:
space:
mode:
Diffstat (limited to 'browser/actors/BlockedSiteParent.sys.mjs')
-rw-r--r--browser/actors/BlockedSiteParent.sys.mjs70
1 files changed, 70 insertions, 0 deletions
diff --git a/browser/actors/BlockedSiteParent.sys.mjs b/browser/actors/BlockedSiteParent.sys.mjs
new file mode 100644
index 0000000000..25d90ce2be
--- /dev/null
+++ b/browser/actors/BlockedSiteParent.sys.mjs
@@ -0,0 +1,70 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 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/. */
+
+export class BlockedSiteParent extends JSWindowActorParent {
+ receiveMessage(msg) {
+ switch (msg.name) {
+ case "Browser:SiteBlockedError":
+ this._onAboutBlocked(
+ msg.data.elementId,
+ msg.data.reason,
+ this.browsingContext === this.browsingContext.top,
+ msg.data.blockedInfo
+ );
+ break;
+ }
+ }
+
+ _onAboutBlocked(elementId, reason, isTopFrame, blockedInfo) {
+ let browser = this.browsingContext.top.embedderElement;
+ if (!browser) {
+ return;
+ }
+ let { BrowserOnClick } = browser.ownerGlobal;
+ // Depending on what page we are displaying here (malware/phishing/unwanted)
+ // use the right strings and links for each.
+ let bucketName = "";
+ let sendTelemetry = false;
+ if (reason === "malware") {
+ sendTelemetry = true;
+ bucketName = "WARNING_MALWARE_PAGE_";
+ } else if (reason === "phishing") {
+ sendTelemetry = true;
+ bucketName = "WARNING_PHISHING_PAGE_";
+ } else if (reason === "unwanted") {
+ sendTelemetry = true;
+ bucketName = "WARNING_UNWANTED_PAGE_";
+ } else if (reason === "harmful") {
+ sendTelemetry = true;
+ bucketName = "WARNING_HARMFUL_PAGE_";
+ }
+ let secHistogram = Services.telemetry.getHistogramById(
+ "URLCLASSIFIER_UI_EVENTS"
+ );
+ let nsISecTel = Ci.IUrlClassifierUITelemetry;
+ bucketName += isTopFrame ? "TOP_" : "FRAME_";
+
+ switch (elementId) {
+ case "goBackButton":
+ if (sendTelemetry) {
+ secHistogram.add(nsISecTel[bucketName + "GET_ME_OUT_OF_HERE"]);
+ }
+ browser.ownerGlobal.getMeOutOfHere(this.browsingContext);
+ break;
+ case "ignore_warning_link":
+ if (Services.prefs.getBoolPref("browser.safebrowsing.allowOverride")) {
+ if (sendTelemetry) {
+ secHistogram.add(nsISecTel[bucketName + "IGNORE_WARNING"]);
+ }
+ BrowserOnClick.ignoreWarningLink(
+ reason,
+ blockedInfo,
+ this.browsingContext
+ );
+ }
+ break;
+ }
+ }
+}