OLD | NEW |
---|---|
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "components/subresource_filter/content/browser/content_subresource_filt er_driver_factory.h" | 5 #include "components/subresource_filter/content/browser/content_subresource_filt er_driver_factory.h" |
6 | 6 |
7 #include "base/metrics/histogram_macros.h" | 7 #include "base/metrics/histogram_macros.h" |
8 #include "base/rand_util.h" | 8 #include "base/rand_util.h" |
9 #include "base/time/time.h" | 9 #include "base/time/time.h" |
10 #include "components/subresource_filter/content/browser/subresource_filter_clien t.h" | 10 #include "components/subresource_filter/content/browser/subresource_filter_clien t.h" |
(...skipping 336 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
347 if (url.has_host() && url.SchemeIsHTTPOrHTTPS()) | 347 if (url.has_host() && url.SchemeIsHTTPOrHTTPS()) |
348 activation_list_matches_[DistillURLToHostAndPath(url)].insert(match_type); | 348 activation_list_matches_[DistillURLToHostAndPath(url)].insert(match_type); |
349 } | 349 } |
350 | 350 |
351 int ContentSubresourceFilterDriverFactory::CalculateHitPatternForActivationList( | 351 int ContentSubresourceFilterDriverFactory::CalculateHitPatternForActivationList( |
352 ActivationList activation_list) const { | 352 ActivationList activation_list) const { |
353 int hits_pattern = 0; | 353 int hits_pattern = 0; |
354 const int kInitialURLHitMask = 0x4; | 354 const int kInitialURLHitMask = 0x4; |
355 const int kRedirectURLHitMask = 0x2; | 355 const int kRedirectURLHitMask = 0x2; |
356 const int kFinalURLHitMask = 0x1; | 356 const int kFinalURLHitMask = 0x1; |
357 | |
357 if (navigation_chain_.size() > 1) { | 358 if (navigation_chain_.size() > 1) { |
358 if (DidURLMatchActivationList(navigation_chain_.back(), activation_list)) | 359 if (DidURLMatchActivationList(navigation_chain_.back(), activation_list)) |
359 hits_pattern |= kFinalURLHitMask; | 360 hits_pattern |= kFinalURLHitMask; |
360 if (DidURLMatchActivationList(navigation_chain_.front(), activation_list)) | 361 if (DidURLMatchActivationList(navigation_chain_.front(), activation_list)) |
361 hits_pattern |= kInitialURLHitMask; | 362 hits_pattern |= kInitialURLHitMask; |
362 | 363 |
363 // Examine redirects. | 364 // Examine redirects. |
364 for (size_t i = 1; i < navigation_chain_.size() - 1; ++i) { | 365 for (size_t i = 1; i < navigation_chain_.size() - 1; ++i) { |
365 if (DidURLMatchActivationList(navigation_chain_[i], activation_list)) { | 366 if (DidURLMatchActivationList(navigation_chain_[i], activation_list)) { |
366 hits_pattern |= kRedirectURLHitMask; | 367 hits_pattern |= kRedirectURLHitMask; |
367 break; | 368 break; |
368 } | 369 } |
369 } | 370 } |
370 } else { | 371 } else { |
371 if (navigation_chain_.size() && | 372 if (navigation_chain_.size() && |
372 DidURLMatchActivationList(navigation_chain_.front(), activation_list)) { | 373 DidURLMatchActivationList(navigation_chain_.front(), activation_list)) { |
373 hits_pattern = 0x8; // One url hit. | 374 hits_pattern = 0x8; // One url hit. |
374 } | 375 } |
375 } | 376 } |
376 return hits_pattern; | 377 return hits_pattern; |
377 } | 378 } |
378 | 379 |
379 void ContentSubresourceFilterDriverFactory::RecordRedirectChainMatchPattern() | 380 void ContentSubresourceFilterDriverFactory::RecordRedirectChainMatchPattern() |
380 const { | 381 const { |
381 RecordRedirectChainMatchPatternForList( | 382 RecordRedirectChainMatchPatternForList( |
382 ActivationList::SOCIAL_ENG_ADS_INTERSTITIAL); | 383 ActivationList::SOCIAL_ENG_ADS_INTERSTITIAL); |
383 RecordRedirectChainMatchPatternForList(ActivationList::PHISHING_INTERSTITIAL); | 384 RecordRedirectChainMatchPatternForList(ActivationList::PHISHING_INTERSTITIAL); |
385 RecordRedirectChainMatchPatternForList(ActivationList::SUBRESOURCE_FILTER); | |
384 } | 386 } |
385 | 387 |
386 void ContentSubresourceFilterDriverFactory:: | 388 void ContentSubresourceFilterDriverFactory:: |
387 RecordRedirectChainMatchPatternForList( | 389 RecordRedirectChainMatchPatternForList( |
388 ActivationList activation_list) const { | 390 ActivationList activation_list) const { |
389 int hits_pattern = CalculateHitPatternForActivationList(activation_list); | 391 int hits_pattern = CalculateHitPatternForActivationList(activation_list); |
390 if (!hits_pattern) | 392 if (!hits_pattern) |
391 return; | 393 return; |
392 size_t chain_size = navigation_chain_.size(); | 394 size_t chain_size = navigation_chain_.size(); |
393 switch (activation_list) { | 395 switch (activation_list) { |
394 case ActivationList::SOCIAL_ENG_ADS_INTERSTITIAL: | 396 case ActivationList::SOCIAL_ENG_ADS_INTERSTITIAL: |
395 REPORT_REDIRECT_PATTERN_FOR_SUFFIX("SocialEngineeringAdsInterstitial", | 397 REPORT_REDIRECT_PATTERN_FOR_SUFFIX("SocialEngineeringAdsInterstitial", |
396 hits_pattern, chain_size); | 398 hits_pattern, chain_size); |
397 break; | 399 break; |
398 case ActivationList::PHISHING_INTERSTITIAL: | 400 case ActivationList::PHISHING_INTERSTITIAL: |
399 REPORT_REDIRECT_PATTERN_FOR_SUFFIX("PhishingInterstital", hits_pattern, | 401 REPORT_REDIRECT_PATTERN_FOR_SUFFIX("PhishingInterstital", hits_pattern, |
400 chain_size); | 402 chain_size); |
401 break; | 403 break; |
404 case ActivationList::SUBRESOURCE_FILTER: | |
405 REPORT_REDIRECT_PATTERN_FOR_SUFFIX("SubresourceFilterOnly", hits_pattern, | |
vakh (use Gerrit instead)
2017/03/16 20:51:18
s/Only// ?
melandory
2017/03/24 15:49:27
I like "Only" in suffix, without it full histogram
| |
406 chain_size); | |
407 break; | |
402 default: | 408 default: |
403 NOTREACHED(); | 409 NOTREACHED(); |
404 break; | 410 break; |
405 } | 411 } |
406 } | 412 } |
407 | 413 |
408 } // namespace subresource_filter | 414 } // namespace subresource_filter |
OLD | NEW |