mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-13 21:35:39 +00:00
Bug 1375277 - Move Safe Browsing UI events to a separate telemetry probe. r=francois
MozReview-Commit-ID: KDAklsznekw --HG-- extra : rebase_source : 20d81369b18b12d9b5f6670d92bf3c7215c8c9a9 extra : intermediate-source : a2d99a6b07bb015f0bdc5c1687e250086ed09a5c extra : source : 5460dbfebee4f99580b306a9b0ec754b890f5959
This commit is contained in:
parent
af3b11c151
commit
a93f3d2ba4
@ -3146,9 +3146,12 @@ var BrowserOnClick = {
|
||||
} 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("SECURITY_UI");
|
||||
let nsISecTel = Ci.nsISecurityUITelemetry;
|
||||
let secHistogram = Services.telemetry.getHistogramById("URLCLASSIFIER_UI_EVENTS");
|
||||
let nsISecTel = Ci.IUrlClassifierUITelemetry;
|
||||
bucketName += isTopFrame ? "TOP_" : "FRAME_";
|
||||
switch (elementId) {
|
||||
case "getMeOutButton":
|
||||
|
@ -220,6 +220,7 @@
|
||||
#include "mozilla/dom/PerformanceNavigation.h"
|
||||
#include "mozilla/dom/ScriptSettings.h"
|
||||
#include "mozilla/Encoding.h"
|
||||
#include "IUrlClassifierUITelemetry.h"
|
||||
|
||||
#ifdef MOZ_TOOLKIT_SEARCH
|
||||
#include "nsIBrowserSearchService.h"
|
||||
@ -5144,25 +5145,27 @@ nsDocShell::DisplayLoadError(nsresult aError, nsIURI* aURI,
|
||||
if (NS_ERROR_PHISHING_URI == aError) {
|
||||
sendTelemetry = true;
|
||||
error = "deceptiveBlocked";
|
||||
bucketId = IsFrame() ? nsISecurityUITelemetry::WARNING_PHISHING_PAGE_FRAME
|
||||
: nsISecurityUITelemetry::WARNING_PHISHING_PAGE_TOP;
|
||||
bucketId = IsFrame() ? IUrlClassifierUITelemetry::WARNING_PHISHING_PAGE_FRAME
|
||||
: IUrlClassifierUITelemetry::WARNING_PHISHING_PAGE_TOP;
|
||||
} else if (NS_ERROR_MALWARE_URI == aError) {
|
||||
sendTelemetry = true;
|
||||
error = "malwareBlocked";
|
||||
bucketId = IsFrame() ? nsISecurityUITelemetry::WARNING_MALWARE_PAGE_FRAME
|
||||
: nsISecurityUITelemetry::WARNING_MALWARE_PAGE_TOP;
|
||||
bucketId = IsFrame() ? IUrlClassifierUITelemetry::WARNING_MALWARE_PAGE_FRAME
|
||||
: IUrlClassifierUITelemetry::WARNING_MALWARE_PAGE_TOP;
|
||||
} else if (NS_ERROR_UNWANTED_URI == aError) {
|
||||
sendTelemetry = true;
|
||||
error = "unwantedBlocked";
|
||||
bucketId = IsFrame() ? nsISecurityUITelemetry::WARNING_UNWANTED_PAGE_FRAME
|
||||
: nsISecurityUITelemetry::WARNING_UNWANTED_PAGE_TOP;
|
||||
bucketId = IsFrame() ? IUrlClassifierUITelemetry::WARNING_UNWANTED_PAGE_FRAME
|
||||
: IUrlClassifierUITelemetry::WARNING_UNWANTED_PAGE_TOP;
|
||||
} else if (NS_ERROR_HARMFUL_URI == aError) {
|
||||
sendTelemetry = true;
|
||||
error = "harmfulBlocked";
|
||||
// telemetry will be added in the next patch.
|
||||
bucketId = IsFrame() ? IUrlClassifierUITelemetry::WARNING_HARMFUL_PAGE_FRAME
|
||||
: IUrlClassifierUITelemetry::WARNING_HARMFUL_PAGE_TOP;
|
||||
}
|
||||
|
||||
if (sendTelemetry && errorPage.EqualsIgnoreCase("blocked")) {
|
||||
Telemetry::Accumulate(Telemetry::SECURITY_UI, bucketId);
|
||||
Telemetry::Accumulate(Telemetry::URLCLASSIFIER_UI_EVENTS, bucketId);
|
||||
}
|
||||
|
||||
cssClass.AssignLiteral("blacklist");
|
||||
|
@ -4850,6 +4850,7 @@ var ErrorPageEventHandler = {
|
||||
// First check whether it's malware, phishing or unwanted, so that we
|
||||
// can use the right strings/links
|
||||
let bucketName = "";
|
||||
const probe = "URLCLASSIFIER_UI_EVENTS";
|
||||
let sendTelemetry = false;
|
||||
if (errorDoc.documentURI.includes("e=malwareBlocked")) {
|
||||
sendTelemetry = true;
|
||||
@ -4860,6 +4861,9 @@ var ErrorPageEventHandler = {
|
||||
} else if (errorDoc.documentURI.includes("e=unwantedBlocked")) {
|
||||
sendTelemetry = true;
|
||||
bucketName = "WARNING_UNWANTED_PAGE_";
|
||||
} else if (errorDoc.documentURI.includes("e=harmfulBlocked")) {
|
||||
sendTelemetry = true;
|
||||
bucketName = "WARNING_HARMFUL_PAGE_";
|
||||
}
|
||||
let nsISecTel = Ci.nsISecurityUITelemetry;
|
||||
let isIframe = (errorDoc.defaultView.parent === errorDoc.defaultView);
|
||||
@ -4869,14 +4873,14 @@ var ErrorPageEventHandler = {
|
||||
|
||||
if (target == errorDoc.getElementById("getMeOutButton")) {
|
||||
if (sendTelemetry) {
|
||||
Telemetry.addData("SECURITY_UI", nsISecTel[bucketName + "GET_ME_OUT_OF_HERE"]);
|
||||
Telemetry.addData(probe, nsISecTel[bucketName + "GET_ME_OUT_OF_HERE"]);
|
||||
}
|
||||
errorDoc.location = "about:home";
|
||||
} else if (target == errorDoc.getElementById("reportButton")) {
|
||||
// We log even if malware/phishing info URL couldn't be found:
|
||||
// the measurement is for how many users clicked the WHY BLOCKED button
|
||||
if (sendTelemetry) {
|
||||
Telemetry.addData("SECURITY_UI", nsISecTel[bucketName + "WHY_BLOCKED"]);
|
||||
Telemetry.addData(probe, nsISecTel[bucketName + "WHY_BLOCKED"]);
|
||||
}
|
||||
|
||||
// This is the "Why is this site blocked" button. We redirect
|
||||
@ -4886,7 +4890,7 @@ var ErrorPageEventHandler = {
|
||||
} else if (target == errorDoc.getElementById("ignoreWarningButton") &&
|
||||
Services.prefs.getBoolPref("browser.safebrowsing.allowOverride")) {
|
||||
if (sendTelemetry) {
|
||||
Telemetry.addData("SECURITY_UI", nsISecTel[bucketName + "IGNORE_WARNING"]);
|
||||
Telemetry.addData(probe, nsISecTel[bucketName + "IGNORE_WARNING"]);
|
||||
}
|
||||
|
||||
// Allow users to override and continue through to the site,
|
||||
|
@ -96,25 +96,25 @@ const uint32_t WARNING_GEOLOCATION_REQUEST_NEVER_SHARE = 49;
|
||||
// It would be nice to measure the two cases of user clicking
|
||||
// "not now", and user closing the popup. This is currently not implemented.
|
||||
|
||||
const uint32_t WARNING_MALWARE_PAGE_TOP = 52;
|
||||
const uint32_t WARNING_MALWARE_PAGE_TOP_WHY_BLOCKED = 53;
|
||||
const uint32_t WARNING_MALWARE_PAGE_TOP_GET_ME_OUT_OF_HERE = 54;
|
||||
const uint32_t WARNING_MALWARE_PAGE_TOP_IGNORE_WARNING = 55;
|
||||
// const uint32_t WARNING_MALWARE_PAGE_TOP = 52;
|
||||
// const uint32_t WARNING_MALWARE_PAGE_TOP_WHY_BLOCKED = 53;
|
||||
// const uint32_t WARNING_MALWARE_PAGE_TOP_GET_ME_OUT_OF_HERE = 54;
|
||||
// const uint32_t WARNING_MALWARE_PAGE_TOP_IGNORE_WARNING = 55;
|
||||
|
||||
const uint32_t WARNING_PHISHING_PAGE_TOP = 56;
|
||||
const uint32_t WARNING_PHISHING_PAGE_TOP_WHY_BLOCKED = 57;
|
||||
const uint32_t WARNING_PHISHING_PAGE_TOP_GET_ME_OUT_OF_HERE = 58;
|
||||
const uint32_t WARNING_PHISHING_PAGE_TOP_IGNORE_WARNING = 59;
|
||||
// const uint32_t WARNING_PHISHING_PAGE_TOP = 56;
|
||||
// const uint32_t WARNING_PHISHING_PAGE_TOP_WHY_BLOCKED = 57;
|
||||
// const uint32_t WARNING_PHISHING_PAGE_TOP_GET_ME_OUT_OF_HERE = 58;
|
||||
// const uint32_t WARNING_PHISHING_PAGE_TOP_IGNORE_WARNING = 59;
|
||||
|
||||
const uint32_t WARNING_MALWARE_PAGE_FRAME = 60;
|
||||
const uint32_t WARNING_MALWARE_PAGE_FRAME_WHY_BLOCKED = 61;
|
||||
const uint32_t WARNING_MALWARE_PAGE_FRAME_GET_ME_OUT_OF_HERE = 62;
|
||||
const uint32_t WARNING_MALWARE_PAGE_FRAME_IGNORE_WARNING = 63;
|
||||
// const uint32_t WARNING_MALWARE_PAGE_FRAME = 60;
|
||||
// const uint32_t WARNING_MALWARE_PAGE_FRAME_WHY_BLOCKED = 61;
|
||||
// const uint32_t WARNING_MALWARE_PAGE_FRAME_GET_ME_OUT_OF_HERE = 62;
|
||||
// const uint32_t WARNING_MALWARE_PAGE_FRAME_IGNORE_WARNING = 63;
|
||||
|
||||
const uint32_t WARNING_PHISHING_PAGE_FRAME = 64;
|
||||
const uint32_t WARNING_PHISHING_PAGE_FRAME_WHY_BLOCKED = 65;
|
||||
const uint32_t WARNING_PHISHING_PAGE_FRAME_GET_ME_OUT_OF_HERE = 66;
|
||||
const uint32_t WARNING_PHISHING_PAGE_FRAME_IGNORE_WARNING = 67;
|
||||
// const uint32_t WARNING_PHISHING_PAGE_FRAME = 64;
|
||||
// const uint32_t WARNING_PHISHING_PAGE_FRAME_WHY_BLOCKED = 65;
|
||||
// const uint32_t WARNING_PHISHING_PAGE_FRAME_GET_ME_OUT_OF_HERE = 66;
|
||||
// const uint32_t WARNING_PHISHING_PAGE_FRAME_IGNORE_WARNING = 67;
|
||||
|
||||
const uint32_t WARNING_BAD_CERT_TOP = 68;
|
||||
const uint32_t WARNING_BAD_CERT_TOP_STS = 69;
|
||||
@ -136,15 +136,15 @@ const uint32_t WARNING_BAD_CERT_TOP_CONFIRM_ADD_EXCEPTION_FLAG_DOMAIN = 2;
|
||||
const uint32_t WARNING_BAD_CERT_TOP_CONFIRM_ADD_EXCEPTION_FLAG_TIME = 4;
|
||||
|
||||
// Another Safe Browsing list (like malware & phishing above)
|
||||
const uint32_t WARNING_UNWANTED_PAGE_TOP = 92;
|
||||
const uint32_t WARNING_UNWANTED_PAGE_TOP_WHY_BLOCKED = 93;
|
||||
const uint32_t WARNING_UNWANTED_PAGE_TOP_GET_ME_OUT_OF_HERE = 94;
|
||||
const uint32_t WARNING_UNWANTED_PAGE_TOP_IGNORE_WARNING = 95;
|
||||
const uint32_t WARNING_UNWANTED_PAGE_FRAME = 96;
|
||||
const uint32_t WARNING_UNWANTED_PAGE_FRAME_WHY_BLOCKED = 97;
|
||||
const uint32_t WARNING_UNWANTED_PAGE_FRAME_GET_ME_OUT_OF_HERE = 98;
|
||||
const uint32_t WARNING_UNWANTED_PAGE_FRAME_IGNORE_WARNING = 99;
|
||||
// const uint32_t WARNING_UNWANTED_PAGE_TOP = 92;
|
||||
// const uint32_t WARNING_UNWANTED_PAGE_TOP_WHY_BLOCKED = 93;
|
||||
// const uint32_t WARNING_UNWANTED_PAGE_TOP_GET_ME_OUT_OF_HERE = 94;
|
||||
// const uint32_t WARNING_UNWANTED_PAGE_TOP_IGNORE_WARNING = 95;
|
||||
// const uint32_t WARNING_UNWANTED_PAGE_FRAME = 96;
|
||||
// const uint32_t WARNING_UNWANTED_PAGE_FRAME_WHY_BLOCKED = 97;
|
||||
// const uint32_t WARNING_UNWANTED_PAGE_FRAME_GET_ME_OUT_OF_HERE = 98;
|
||||
// const uint32_t WARNING_UNWANTED_PAGE_FRAME_IGNORE_WARNING = 99;
|
||||
|
||||
// This uses up buckets till 99 (including)
|
||||
// We only have buckets up to 100.
|
||||
// All the buckets are used so the safebrowsing-related buckets were
|
||||
// moved under URLCLASSIFIER_UI_EVENTS probe. See bug 1375277 for more information.
|
||||
};
|
||||
|
@ -13682,5 +13682,14 @@
|
||||
"n_buckets": 100,
|
||||
"releaseChannelCollection": "opt-out",
|
||||
"description": "The amount of time spend(ms) for users who view VR content in OpenVR."
|
||||
},
|
||||
"URLCLASSIFIER_UI_EVENTS": {
|
||||
"record_in_processes": ["main", "content"],
|
||||
"alert_emails": ["seceng-telemetry@mozilla.com", "francois@mozilla.com"],
|
||||
"bug_numbers": [1375277],
|
||||
"expires_in_version": "never",
|
||||
"kind": "enumerated",
|
||||
"n_values": 64,
|
||||
"description": "URL CLassifier-related (aka Safe Browsing) UI events. See nsIUrlClassifierUITelemetry.idl for the specific values."
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,49 @@
|
||||
/* -*- Mode: C++; 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/. */
|
||||
|
||||
#include "nsISupports.idl"
|
||||
|
||||
[scriptable, uuid(a6c62ce5-3a95-41bb-b0f1-8cd4f4ca00e3)]
|
||||
|
||||
interface IUrlClassifierUITelemetry : nsISupports {
|
||||
|
||||
const uint32_t WARNING_MALWARE_PAGE_TOP = 1;
|
||||
const uint32_t WARNING_MALWARE_PAGE_TOP_WHY_BLOCKED = 2;
|
||||
const uint32_t WARNING_MALWARE_PAGE_TOP_GET_ME_OUT_OF_HERE = 3;
|
||||
const uint32_t WARNING_MALWARE_PAGE_TOP_IGNORE_WARNING = 4;
|
||||
const uint32_t WARNING_MALWARE_PAGE_FRAME = 5;
|
||||
const uint32_t WARNING_MALWARE_PAGE_FRAME_WHY_BLOCKED = 6;
|
||||
const uint32_t WARNING_MALWARE_PAGE_FRAME_GET_ME_OUT_OF_HERE = 7;
|
||||
const uint32_t WARNING_MALWARE_PAGE_FRAME_IGNORE_WARNING = 8;
|
||||
|
||||
const uint32_t WARNING_PHISHING_PAGE_TOP = 9;
|
||||
const uint32_t WARNING_PHISHING_PAGE_TOP_WHY_BLOCKED = 10;
|
||||
const uint32_t WARNING_PHISHING_PAGE_TOP_GET_ME_OUT_OF_HERE = 11;
|
||||
const uint32_t WARNING_PHISHING_PAGE_TOP_IGNORE_WARNING = 12;
|
||||
const uint32_t WARNING_PHISHING_PAGE_FRAME = 13;
|
||||
const uint32_t WARNING_PHISHING_PAGE_FRAME_WHY_BLOCKED = 14;
|
||||
const uint32_t WARNING_PHISHING_PAGE_FRAME_GET_ME_OUT_OF_HERE = 15;
|
||||
const uint32_t WARNING_PHISHING_PAGE_FRAME_IGNORE_WARNING = 16;
|
||||
|
||||
const uint32_t WARNING_UNWANTED_PAGE_TOP = 17;
|
||||
const uint32_t WARNING_UNWANTED_PAGE_TOP_WHY_BLOCKED = 18;
|
||||
const uint32_t WARNING_UNWANTED_PAGE_TOP_GET_ME_OUT_OF_HERE = 19;
|
||||
const uint32_t WARNING_UNWANTED_PAGE_TOP_IGNORE_WARNING = 20;
|
||||
const uint32_t WARNING_UNWANTED_PAGE_FRAME = 21;
|
||||
const uint32_t WARNING_UNWANTED_PAGE_FRAME_WHY_BLOCKED = 22;
|
||||
const uint32_t WARNING_UNWANTED_PAGE_FRAME_GET_ME_OUT_OF_HERE = 23;
|
||||
const uint32_t WARNING_UNWANTED_PAGE_FRAME_IGNORE_WARNING = 24;
|
||||
|
||||
const uint32_t WARNING_HARMFUL_PAGE_TOP = 25;
|
||||
const uint32_t WARNING_HARMFUL_PAGE_TOP_WHY_BLOCKED = 26;
|
||||
const uint32_t WARNING_HARMFUL_PAGE_TOP_GET_ME_OUT_OF_HERE = 27;
|
||||
const uint32_t WARNING_HARMFUL_PAGE_TOP_IGNORE_WARNING = 28;
|
||||
const uint32_t WARNING_HARMFUL_PAGE_FRAME = 29;
|
||||
const uint32_t WARNING_HARMFUL_PAGE_FRAME_WHY_BLOCKED = 30;
|
||||
const uint32_t WARNING_HARMFUL_PAGE_FRAME_GET_ME_OUT_OF_HERE = 31;
|
||||
const uint32_t WARNING_HARMFUL_PAGE_FRAME_IGNORE_WARNING = 32;
|
||||
|
||||
};
|
@ -10,6 +10,7 @@ with Files('**'):
|
||||
TEST_DIRS += ['tests']
|
||||
|
||||
XPIDL_SOURCES += [
|
||||
'IUrlClassifierUITelemetry.idl',
|
||||
'nsIUrlClassifierDBService.idl',
|
||||
'nsIUrlClassifierHashCompleter.idl',
|
||||
'nsIUrlClassifierInfo.idl',
|
||||
|
Loading…
Reference in New Issue
Block a user