Bug 1584183 - Set nsILoadInfo.requestBlockingReason in UrlClassifierCommon::SetBlockedContent, r=dimi

Differential Revision: https://phabricator.services.mozilla.com/D47243

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Honza Bambas 2019-09-27 07:50:17 +00:00
parent 69798165a4
commit c6b75b3965
4 changed files with 47 additions and 33 deletions

View File

@ -422,7 +422,7 @@ interface nsILoadInfo : nsISupports
* context.
*/
[infallible] attribute boolean skipContentSniffing;
/**
* True if this request is embedded in a context that can't be third-party
* (i.e. an iframe embedded in a cross-origin parent window). If this is
@ -1164,6 +1164,9 @@ interface nsILoadInfo : nsISupports
const uint32_t BLOCKING_REASON_CLASSIFY_TRACKING_URI = 2004;
const uint32_t BLOCKING_REASON_CLASSIFY_BLOCKED_URI = 2005;
const uint32_t BLOCKING_REASON_CLASSIFY_HARMFUL_URI = 2006;
const uint32_t BLOCKING_REASON_CLASSIFY_CRYPTOMINING_URI = 2007;
const uint32_t BLOCKING_REASON_CLASSIFY_FINGERPRINTING_URI = 2008;
const uint32_t BLOCKING_REASON_CLASSIFY_SOCIALTRACKING_URI = 2009;
const uint32_t BLOCKING_REASON_MIXED_BLOCKED = 3001;
// The general reason comes from nsCSPContext::permitsInternal(),
// which is way too generic to distinguish an exact reason.

View File

@ -182,6 +182,49 @@ nsresult UrlClassifierCommon::SetBlockedContent(nsIChannel* channel,
const nsACString& aFullHash) {
NS_ENSURE_ARG(!aList.IsEmpty());
switch (aErrorCode) {
case NS_ERROR_MALWARE_URI:
NS_SetRequestBlockingReason(
channel, nsILoadInfo::BLOCKING_REASON_CLASSIFY_MALWARE_URI);
break;
case NS_ERROR_PHISHING_URI:
NS_SetRequestBlockingReason(
channel, nsILoadInfo::BLOCKING_REASON_CLASSIFY_PHISHING_URI);
break;
case NS_ERROR_UNWANTED_URI:
NS_SetRequestBlockingReason(
channel, nsILoadInfo::BLOCKING_REASON_CLASSIFY_UNWANTED_URI);
break;
case NS_ERROR_TRACKING_URI:
NS_SetRequestBlockingReason(
channel, nsILoadInfo::BLOCKING_REASON_CLASSIFY_TRACKING_URI);
break;
case NS_ERROR_BLOCKED_URI:
NS_SetRequestBlockingReason(
channel, nsILoadInfo::BLOCKING_REASON_CLASSIFY_BLOCKED_URI);
break;
case NS_ERROR_HARMFUL_URI:
NS_SetRequestBlockingReason(
channel, nsILoadInfo::BLOCKING_REASON_CLASSIFY_HARMFUL_URI);
break;
case NS_ERROR_CRYPTOMINING_URI:
NS_SetRequestBlockingReason(
channel, nsILoadInfo::BLOCKING_REASON_CLASSIFY_CRYPTOMINING_URI);
break;
case NS_ERROR_FINGERPRINTING_URI:
NS_SetRequestBlockingReason(
channel, nsILoadInfo::BLOCKING_REASON_CLASSIFY_FINGERPRINTING_URI);
break;
case NS_ERROR_SOCIALTRACKING_URI:
NS_SetRequestBlockingReason(
channel, nsILoadInfo::BLOCKING_REASON_CLASSIFY_SOCIALTRACKING_URI);
break;
default:
MOZ_CRASH(
"Missing nsILoadInfo::BLOCKING_REASON* for the classification error");
break;
}
// Can be called in EITHER the parent or child process.
nsCOMPtr<nsIParentChannel> parentChannel;
NS_QueryNotificationCallbacks(channel, parentChannel);

View File

@ -158,9 +158,6 @@ UrlClassifierFeatureTrackingProtection::ProcessChannel(
UrlClassifierCommon::SetBlockedContent(aChannel, NS_ERROR_TRACKING_URI, list,
EmptyCString(), EmptyCString());
NS_SetRequestBlockingReason(
aChannel, nsILoadInfo::BLOCKING_REASON_CLASSIFY_TRACKING_URI);
UC_LOG(
("UrlClassifierFeatureTrackingProtection::ProcessChannel, cancelling "
"channel[%p]",

View File

@ -428,35 +428,6 @@ nsChannelClassifier::OnClassifyComplete(nsresult aErrorCode,
SendThreatHitReport(mChannel, aProvider, aList, aFullHash);
}
switch (aErrorCode) {
case NS_ERROR_MALWARE_URI:
NS_SetRequestBlockingReason(
mChannel, nsILoadInfo::BLOCKING_REASON_CLASSIFY_MALWARE_URI);
break;
case NS_ERROR_PHISHING_URI:
NS_SetRequestBlockingReason(
mChannel, nsILoadInfo::BLOCKING_REASON_CLASSIFY_PHISHING_URI);
break;
case NS_ERROR_UNWANTED_URI:
NS_SetRequestBlockingReason(
mChannel, nsILoadInfo::BLOCKING_REASON_CLASSIFY_UNWANTED_URI);
break;
case NS_ERROR_TRACKING_URI:
NS_SetRequestBlockingReason(
mChannel, nsILoadInfo::BLOCKING_REASON_CLASSIFY_TRACKING_URI);
break;
case NS_ERROR_BLOCKED_URI:
NS_SetRequestBlockingReason(
mChannel, nsILoadInfo::BLOCKING_REASON_CLASSIFY_BLOCKED_URI);
break;
case NS_ERROR_HARMFUL_URI:
NS_SetRequestBlockingReason(
mChannel, nsILoadInfo::BLOCKING_REASON_CLASSIFY_HARMFUL_URI);
break;
default:
break;
}
mChannel->Cancel(aErrorCode);
}
LOG_DEBUG(