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

Unified Diff: chrome/browser/supervised_user/supervised_user_resource_throttle.cc

Issue 1043113002: Supervised users: Add histogram to record filtering results (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: sparse histogram Created 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | chrome/browser/supervised_user/supervised_user_url_filter.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/supervised_user/supervised_user_resource_throttle.cc
diff --git a/chrome/browser/supervised_user/supervised_user_resource_throttle.cc b/chrome/browser/supervised_user/supervised_user_resource_throttle.cc
index 1224a78b644cf8095bf52e83267a9de0b5ab6e3e..55b329f497d00531b9c1facf2eebafaeff3efc45 100644
--- a/chrome/browser/supervised_user/supervised_user_resource_throttle.cc
+++ b/chrome/browser/supervised_user/supervised_user_resource_throttle.cc
@@ -5,7 +5,7 @@
#include "chrome/browser/supervised_user/supervised_user_resource_throttle.h"
#include "base/bind.h"
-#include "base/metrics/histogram.h"
+#include "base/metrics/sparse_histogram.h"
#include "chrome/browser/supervised_user/supervised_user_interstitial.h"
#include "chrome/browser/supervised_user/supervised_user_navigation_observer.h"
#include "chrome/browser/supervised_user/supervised_user_url_filter.h"
@@ -28,14 +28,16 @@ enum {
FILTERING_BEHAVIOR_ALLOW_UNCERTAIN,
FILTERING_BEHAVIOR_BLOCK_BLACKLIST,
FILTERING_BEHAVIOR_BLOCK_SAFESITES,
- FILTERING_BEHAVIOR_MAX = FILTERING_BEHAVIOR_BLOCK_SAFESITES
+ FILTERING_BEHAVIOR_BLOCK_MANUAL,
+ FILTERING_BEHAVIOR_BLOCK_DEFAULT,
+ FILTERING_BEHAVIOR_MAX = FILTERING_BEHAVIOR_BLOCK_DEFAULT
};
const int kHistogramFilteringBehaviorSpacing = 100;
const int kHistogramPageTransitionMaxKnownValue =
static_cast<int>(ui::PAGE_TRANSITION_KEYWORD_GENERATED);
const int kHistogramPageTransitionFallbackValue =
kHistogramFilteringBehaviorSpacing - 1;
-const int kHistogramMax = 500;
+const int kHistogramMax = 700;
static_assert(kHistogramPageTransitionMaxKnownValue <
kHistogramPageTransitionFallbackValue,
@@ -54,12 +56,17 @@ int GetHistogramValueForFilteringBehavior(
return uncertain ? FILTERING_BEHAVIOR_ALLOW_UNCERTAIN
: FILTERING_BEHAVIOR_ALLOW;
case SupervisedUserURLFilter::BLOCK:
- if (reason == SupervisedUserURLFilter::BLACKLIST)
- return FILTERING_BEHAVIOR_BLOCK_BLACKLIST;
- else if (reason == SupervisedUserURLFilter::ASYNC_CHECKER)
- return FILTERING_BEHAVIOR_BLOCK_SAFESITES;
- // Fall through.
- default:
+ switch (reason) {
+ case SupervisedUserURLFilter::BLACKLIST:
+ return FILTERING_BEHAVIOR_BLOCK_BLACKLIST;
+ case SupervisedUserURLFilter::ASYNC_CHECKER:
+ return FILTERING_BEHAVIOR_BLOCK_SAFESITES;
+ case SupervisedUserURLFilter::MANUAL:
+ return FILTERING_BEHAVIOR_BLOCK_MANUAL;
+ case SupervisedUserURLFilter::DEFAULT:
+ return FILTERING_BEHAVIOR_BLOCK_DEFAULT;
+ }
+ case SupervisedUserURLFilter::INVALID:
NOTREACHED();
}
return 0;
@@ -75,19 +82,23 @@ int GetHistogramValueForTransitionType(ui::PageTransition transition_type) {
}
void RecordFilterResultEvent(
+ bool safesites_histogram,
SupervisedUserURLFilter::FilteringBehavior behavior,
SupervisedUserURLFilter::FilteringBehaviorReason reason,
bool uncertain,
ui::PageTransition transition_type) {
- DCHECK(reason == SupervisedUserURLFilter::ASYNC_CHECKER ||
- reason == SupervisedUserURLFilter::BLACKLIST);
int value =
GetHistogramValueForFilteringBehavior(behavior, reason, uncertain) *
kHistogramFilteringBehaviorSpacing +
GetHistogramValueForTransitionType(transition_type);
DCHECK_LT(value, kHistogramMax);
- UMA_HISTOGRAM_ENUMERATION("ManagedUsers.SafetyFilter",
- value, kHistogramMax);
+ // Note: We can't pass in the histogram name as a parameter to this function
+ // because of how the macro works (look up the histogram on the first
+ // invocation and cache it in a static variable).
+ if (safesites_histogram)
+ UMA_HISTOGRAM_SPARSE_SLOWLY("ManagedUsers.SafetyFilter", value);
+ else
+ UMA_HISTOGRAM_SPARSE_SLOWLY("ManagedUsers.FilteringResult", value);
}
} // namespace
@@ -100,7 +111,7 @@ SupervisedUserResourceThrottle::SupervisedUserResourceThrottle(
is_main_frame_(is_main_frame),
url_filter_(url_filter),
deferred_(false),
- behavior_(SupervisedUserURLFilter::HISTOGRAM_BOUNDING_VALUE),
+ behavior_(SupervisedUserURLFilter::INVALID),
weak_ptr_factory_(this) {}
SupervisedUserResourceThrottle::~SupervisedUserResourceThrottle() {}
@@ -113,18 +124,17 @@ void SupervisedUserResourceThrottle::ShowInterstitialIfNeeded(bool is_redirect,
return;
deferred_ = false;
- DCHECK_EQ(SupervisedUserURLFilter::HISTOGRAM_BOUNDING_VALUE, behavior_);
+ DCHECK_EQ(SupervisedUserURLFilter::INVALID, behavior_);
bool got_result = url_filter_->GetFilteringBehaviorForURLWithAsyncChecks(
url,
base::Bind(&SupervisedUserResourceThrottle::OnCheckDone,
weak_ptr_factory_.GetWeakPtr(), url));
- DCHECK_EQ(got_result,
- (behavior_ != SupervisedUserURLFilter::HISTOGRAM_BOUNDING_VALUE));
+ DCHECK_EQ(got_result, behavior_ != SupervisedUserURLFilter::INVALID);
// If we got a "not blocked" result synchronously, don't defer.
*defer = deferred_ = !got_result ||
(behavior_ == SupervisedUserURLFilter::BLOCK);
if (got_result)
- behavior_ = SupervisedUserURLFilter::HISTOGRAM_BOUNDING_VALUE;
+ behavior_ = SupervisedUserURLFilter::INVALID;
}
void SupervisedUserResourceThrottle::ShowInterstitial(
@@ -159,19 +169,22 @@ void SupervisedUserResourceThrottle::OnCheckDone(
SupervisedUserURLFilter::FilteringBehavior behavior,
SupervisedUserURLFilter::FilteringBehaviorReason reason,
bool uncertain) {
- DCHECK_EQ(SupervisedUserURLFilter::HISTOGRAM_BOUNDING_VALUE, behavior_);
+ DCHECK_EQ(SupervisedUserURLFilter::INVALID, behavior_);
// If we got a result synchronously, pass it back to ShowInterstitialIfNeeded.
if (!deferred_)
behavior_ = behavior;
- // If both the static blacklist and SafeSites are enabled, record UMA events.
+ ui::PageTransition transition =
+ content::ResourceRequestInfo::ForRequest(request_)->GetPageTransition();
+
+ RecordFilterResultEvent(false, behavior, reason, uncertain, transition);
+
+ // If both the static blacklist and the async checker are enabled, also record
+ // SafeSites-only UMA events.
if (url_filter_->HasBlacklist() && url_filter_->HasAsyncURLChecker() &&
(reason == SupervisedUserURLFilter::ASYNC_CHECKER ||
reason == SupervisedUserURLFilter::BLACKLIST)) {
- const content::ResourceRequestInfo* info =
- content::ResourceRequestInfo::ForRequest(request_);
- RecordFilterResultEvent(behavior, reason, uncertain,
- info->GetPageTransition());
+ RecordFilterResultEvent(true, behavior, reason, uncertain, transition);
}
if (behavior == SupervisedUserURLFilter::BLOCK)
« no previous file with comments | « no previous file | chrome/browser/supervised_user/supervised_user_url_filter.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698