| Index: components/subresource_filter/content/browser/content_subresource_filter_driver_factory.cc
|
| diff --git a/components/subresource_filter/content/browser/content_subresource_filter_driver_factory.cc b/components/subresource_filter/content/browser/content_subresource_filter_driver_factory.cc
|
| index c6052e11c19b741f8d7e8657fd7648cb46c44e4f..04c57ac305dbed448a24defcfc917208636fe810 100644
|
| --- a/components/subresource_filter/content/browser/content_subresource_filter_driver_factory.cc
|
| +++ b/components/subresource_filter/content/browser/content_subresource_filter_driver_factory.cc
|
| @@ -41,15 +41,17 @@ bool ShouldMeasurePerformanceForPageLoad(double performance_measurement_rate) {
|
| base::RandDouble() < performance_measurement_rate);
|
| }
|
|
|
| -// Records histograms about the length of redirect chains, and about the pattern
|
| -// of whether each URL in the chain matched the activation list.
|
| -#define REPORT_REDIRECT_PATTERN_FOR_SUFFIX(suffix, hits_pattern, chain_size) \
|
| - do { \
|
| - UMA_HISTOGRAM_ENUMERATION( \
|
| - "SubresourceFilter.PageLoad.RedirectChainMatchPattern." suffix, \
|
| - hits_pattern, 0x10); \
|
| - UMA_HISTOGRAM_COUNTS( \
|
| - "SubresourceFilter.PageLoad.RedirectChainLength." suffix, chain_size); \
|
| +// Records histograms about the pattern of redirect chains, and about the
|
| +// pattern of whether the last URL in the chain matched the activation list.
|
| +#define REPORT_REDIRECT_PATTERN_FOR_SUFFIX(suffix, is_matched, chain_size) \
|
| + do { \
|
| + UMA_HISTOGRAM_BOOLEAN("SubresourceFilter.PageLoad.FinalURLMatch." suffix, \
|
| + is_matched); \
|
| + if (is_matched) { \
|
| + UMA_HISTOGRAM_COUNTS( \
|
| + "SubresourceFilter.PageLoad.RedirectChainLength." suffix, \
|
| + chain_size); \
|
| + }; \
|
| } while (0)
|
|
|
| } // namespace
|
| @@ -278,35 +280,6 @@ void ContentSubresourceFilterDriverFactory::AddActivationListMatch(
|
| activation_list_matches_[DistillURLToHostAndPath(url)].insert(match_type);
|
| }
|
|
|
| -int ContentSubresourceFilterDriverFactory::CalculateHitPatternForActivationList(
|
| - ActivationList activation_list) const {
|
| - int hits_pattern = 0;
|
| - const int kInitialURLHitMask = 0x4;
|
| - const int kRedirectURLHitMask = 0x2;
|
| - const int kFinalURLHitMask = 0x1;
|
| -
|
| - if (navigation_chain_.size() > 1) {
|
| - if (DidURLMatchActivationList(navigation_chain_.back(), activation_list))
|
| - hits_pattern |= kFinalURLHitMask;
|
| - if (DidURLMatchActivationList(navigation_chain_.front(), activation_list))
|
| - hits_pattern |= kInitialURLHitMask;
|
| -
|
| - // Examine redirects.
|
| - for (size_t i = 1; i < navigation_chain_.size() - 1; ++i) {
|
| - if (DidURLMatchActivationList(navigation_chain_[i], activation_list)) {
|
| - hits_pattern |= kRedirectURLHitMask;
|
| - break;
|
| - }
|
| - }
|
| - } else {
|
| - if (navigation_chain_.size() &&
|
| - DidURLMatchActivationList(navigation_chain_.front(), activation_list)) {
|
| - hits_pattern = 0x8; // One url hit.
|
| - }
|
| - }
|
| - return hits_pattern;
|
| -}
|
| -
|
| void ContentSubresourceFilterDriverFactory::RecordRedirectChainMatchPattern()
|
| const {
|
| RecordRedirectChainMatchPatternForList(
|
| @@ -318,21 +291,25 @@ void ContentSubresourceFilterDriverFactory::RecordRedirectChainMatchPattern()
|
| void ContentSubresourceFilterDriverFactory::
|
| RecordRedirectChainMatchPatternForList(
|
| ActivationList activation_list) const {
|
| - int hits_pattern = CalculateHitPatternForActivationList(activation_list);
|
| - if (!hits_pattern)
|
| + DCHECK(!navigation_chain_.empty());
|
| + if (!navigation_chain_.back().has_host() ||
|
| + !navigation_chain_.back().SchemeIsHTTPOrHTTPS()) {
|
| return;
|
| + }
|
| + bool is_matched =
|
| + DidURLMatchActivationList(navigation_chain_.back(), activation_list);
|
| size_t chain_size = navigation_chain_.size();
|
| switch (activation_list) {
|
| case ActivationList::SOCIAL_ENG_ADS_INTERSTITIAL:
|
| REPORT_REDIRECT_PATTERN_FOR_SUFFIX("SocialEngineeringAdsInterstitial",
|
| - hits_pattern, chain_size);
|
| + is_matched, chain_size);
|
| break;
|
| case ActivationList::PHISHING_INTERSTITIAL:
|
| - REPORT_REDIRECT_PATTERN_FOR_SUFFIX("PhishingInterstital", hits_pattern,
|
| + REPORT_REDIRECT_PATTERN_FOR_SUFFIX("PhishingInterstital", is_matched,
|
| chain_size);
|
| break;
|
| case ActivationList::SUBRESOURCE_FILTER:
|
| - REPORT_REDIRECT_PATTERN_FOR_SUFFIX("SubresourceFilterOnly", hits_pattern,
|
| + REPORT_REDIRECT_PATTERN_FOR_SUFFIX("SubresourceFilterOnly", is_matched,
|
| chain_size);
|
| break;
|
| default:
|
|
|