Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(783)

Side by Side Diff: components/subresource_filter/content/browser/content_subresource_filter_driver_factory.cc

Issue 2814733002: Add the SocEng as a type for checking in CheckUrlForSubresourceFilter. (Closed)
Patch Set: . Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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/feature_list.h" 7 #include "base/feature_list.h"
8 #include "base/metrics/histogram_macros.h" 8 #include "base/metrics/histogram_macros.h"
9 #include "base/rand_util.h" 9 #include "base/rand_util.h"
10 #include "base/time/time.h" 10 #include "base/time/time.h"
(...skipping 22 matching lines...) Expand all
33 // Returns true with a probability given by |performance_measurement_rate| if 33 // Returns true with a probability given by |performance_measurement_rate| if
34 // ThreadTicks is supported, otherwise returns false. 34 // ThreadTicks is supported, otherwise returns false.
35 bool ShouldMeasurePerformanceForPageLoad(double performance_measurement_rate) { 35 bool ShouldMeasurePerformanceForPageLoad(double performance_measurement_rate) {
36 if (!base::ThreadTicks::IsSupported()) 36 if (!base::ThreadTicks::IsSupported())
37 return false; 37 return false;
38 return performance_measurement_rate == 1 || 38 return performance_measurement_rate == 1 ||
39 (performance_measurement_rate > 0 && 39 (performance_measurement_rate > 0 &&
40 base::RandDouble() < performance_measurement_rate); 40 base::RandDouble() < performance_measurement_rate);
41 } 41 }
42 42
43 // Records histograms about the length of redirect chains, and about the pattern 43 // Records histograms about the length of redirect chains, and about the pattern
engedy 2017/04/26 13:47:09 nit: s/about the pattern of//
melandory 2017/04/26 15:02:20 Done.
44 // of whether each URL in the chain matched the activation list. 44 // of whether each URL in the chain matched the activation list.
engedy 2017/04/26 13:47:09 nit: s/each/the last/
melandory 2017/04/26 15:02:20 Done.
45 #define REPORT_REDIRECT_PATTERN_FOR_SUFFIX(suffix, hits_pattern, chain_size) \ 45 #define REPORT_REDIRECT_PATTERN_FOR_SUFFIX(suffix, match_pattern, chain_size) \
engedy 2017/04/26 13:47:09 nit: s/match_pattern/did_match|is_match|matched/,
melandory 2017/04/26 15:02:20 Done.
46 do { \ 46 do { \
47 UMA_HISTOGRAM_ENUMERATION( \ 47 UMA_HISTOGRAM_BOOLEAN("SubresourecFilter.PageLoad.FinalURLMatch." suffix, \
48 "SubresourceFilter.PageLoad.RedirectChainMatchPattern." suffix, \ 48 match_pattern); \
49 hits_pattern, 0x10); \ 49 if (match_pattern) { \
50 UMA_HISTOGRAM_COUNTS( \ 50 UMA_HISTOGRAM_COUNTS( \
51 "SubresourceFilter.PageLoad.RedirectChainLength." suffix, chain_size); \ 51 "SubresourceFilter.PageLoad.RedirectChainLength." suffix, \
52 chain_size); \
53 }; \
52 } while (0) 54 } while (0)
53 55
54 } // namespace 56 } // namespace
55 57
56 // static 58 // static
57 void ContentSubresourceFilterDriverFactory::CreateForWebContents( 59 void ContentSubresourceFilterDriverFactory::CreateForWebContents(
58 content::WebContents* web_contents, 60 content::WebContents* web_contents,
59 std::unique_ptr<SubresourceFilterClient> client) { 61 std::unique_ptr<SubresourceFilterClient> client) {
60 if (FromWebContents(web_contents)) 62 if (FromWebContents(web_contents))
61 return; 63 return;
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after
264 266
265 void ContentSubresourceFilterDriverFactory::AddActivationListMatch( 267 void ContentSubresourceFilterDriverFactory::AddActivationListMatch(
266 const GURL& url, 268 const GURL& url,
267 ActivationList match_type) { 269 ActivationList match_type) {
268 if (match_type == ActivationList::NONE) 270 if (match_type == ActivationList::NONE)
269 return; 271 return;
270 if (url.has_host() && url.SchemeIsHTTPOrHTTPS()) 272 if (url.has_host() && url.SchemeIsHTTPOrHTTPS())
271 activation_list_matches_[DistillURLToHostAndPath(url)].insert(match_type); 273 activation_list_matches_[DistillURLToHostAndPath(url)].insert(match_type);
272 } 274 }
273 275
274 int ContentSubresourceFilterDriverFactory::CalculateHitPatternForActivationList(
275 ActivationList activation_list) const {
276 int hits_pattern = 0;
277 const int kInitialURLHitMask = 0x4;
278 const int kRedirectURLHitMask = 0x2;
279 const int kFinalURLHitMask = 0x1;
280
281 if (navigation_chain_.size() > 1) {
282 if (DidURLMatchActivationList(navigation_chain_.back(), activation_list))
283 hits_pattern |= kFinalURLHitMask;
284 if (DidURLMatchActivationList(navigation_chain_.front(), activation_list))
285 hits_pattern |= kInitialURLHitMask;
286
287 // Examine redirects.
288 for (size_t i = 1; i < navigation_chain_.size() - 1; ++i) {
289 if (DidURLMatchActivationList(navigation_chain_[i], activation_list)) {
290 hits_pattern |= kRedirectURLHitMask;
291 break;
292 }
293 }
294 } else {
295 if (navigation_chain_.size() &&
296 DidURLMatchActivationList(navigation_chain_.front(), activation_list)) {
297 hits_pattern = 0x8; // One url hit.
298 }
299 }
300 return hits_pattern;
301 }
302
303 void ContentSubresourceFilterDriverFactory::RecordRedirectChainMatchPattern() 276 void ContentSubresourceFilterDriverFactory::RecordRedirectChainMatchPattern()
304 const { 277 const {
305 RecordRedirectChainMatchPatternForList( 278 RecordRedirectChainMatchPatternForList(
306 ActivationList::SOCIAL_ENG_ADS_INTERSTITIAL); 279 ActivationList::SOCIAL_ENG_ADS_INTERSTITIAL);
307 RecordRedirectChainMatchPatternForList(ActivationList::PHISHING_INTERSTITIAL); 280 RecordRedirectChainMatchPatternForList(ActivationList::PHISHING_INTERSTITIAL);
308 RecordRedirectChainMatchPatternForList(ActivationList::SUBRESOURCE_FILTER); 281 RecordRedirectChainMatchPatternForList(ActivationList::SUBRESOURCE_FILTER);
309 } 282 }
310 283
311 void ContentSubresourceFilterDriverFactory:: 284 void ContentSubresourceFilterDriverFactory::
312 RecordRedirectChainMatchPatternForList( 285 RecordRedirectChainMatchPatternForList(
313 ActivationList activation_list) const { 286 ActivationList activation_list) const {
314 int hits_pattern = CalculateHitPatternForActivationList(activation_list); 287 if (!navigation_chain_.back().has_host() ||
engedy 2017/04/26 13:47:09 nit: Add DCHECK(!navigation_chain_.empty()); befor
melandory 2017/04/26 15:02:20 Done.
315 if (!hits_pattern) 288 !navigation_chain_.back().SchemeIsHTTPOrHTTPS()) {
316 return; 289 return;
290 }
291 bool match_pattern =
292 DidURLMatchActivationList(navigation_chain_.back(), activation_list);
317 size_t chain_size = navigation_chain_.size(); 293 size_t chain_size = navigation_chain_.size();
318 switch (activation_list) { 294 switch (activation_list) {
319 case ActivationList::SOCIAL_ENG_ADS_INTERSTITIAL: 295 case ActivationList::SOCIAL_ENG_ADS_INTERSTITIAL:
320 REPORT_REDIRECT_PATTERN_FOR_SUFFIX("SocialEngineeringAdsInterstitial", 296 REPORT_REDIRECT_PATTERN_FOR_SUFFIX("SocialEngineeringAdsInterstitial",
321 hits_pattern, chain_size); 297 match_pattern, chain_size);
322 break; 298 break;
323 case ActivationList::PHISHING_INTERSTITIAL: 299 case ActivationList::PHISHING_INTERSTITIAL:
324 REPORT_REDIRECT_PATTERN_FOR_SUFFIX("PhishingInterstital", hits_pattern, 300 REPORT_REDIRECT_PATTERN_FOR_SUFFIX("PhishingInterstital", match_pattern,
325 chain_size); 301 chain_size);
326 break; 302 break;
327 case ActivationList::SUBRESOURCE_FILTER: 303 case ActivationList::SUBRESOURCE_FILTER:
328 REPORT_REDIRECT_PATTERN_FOR_SUFFIX("SubresourceFilterOnly", hits_pattern, 304 REPORT_REDIRECT_PATTERN_FOR_SUFFIX("SubresourceFilterOnly", match_pattern,
329 chain_size); 305 chain_size);
330 break; 306 break;
331 default: 307 default:
332 NOTREACHED(); 308 NOTREACHED();
333 break; 309 break;
334 } 310 }
335 } 311 }
336 312
337 } // namespace subresource_filter 313 } // namespace subresource_filter
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698