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

Unified Diff: chrome/browser/policy/user_policy_disk_cache.cc

Issue 7105018: UMA metrics for cloud policies. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed comments, rebased Created 9 years, 6 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
Index: chrome/browser/policy/user_policy_disk_cache.cc
diff --git a/chrome/browser/policy/user_policy_disk_cache.cc b/chrome/browser/policy/user_policy_disk_cache.cc
index 08c2ba734a33449dd96fa408d58fb6850d5645b5..295a689b368fddf15db697a775f22fcd873c9639 100644
--- a/chrome/browser/policy/user_policy_disk_cache.cc
+++ b/chrome/browser/policy/user_policy_disk_cache.cc
@@ -4,11 +4,31 @@
#include "base/file_util.h"
#include "base/logging.h"
+#include "base/metrics/histogram.h"
#include "base/task.h"
+#include "chrome/browser/policy/enterprise_metrics.h"
#include "chrome/browser/policy/proto/device_management_local.pb.h"
#include "chrome/browser/policy/user_policy_disk_cache.h"
#include "content/browser/browser_thread.h"
+namespace {
+
+// Other places can sample on the same UMA counter, so make sure they all do
+// it on the same thread (UI).
+void SampleUMAOnUIThread(policy::MetricPolicy sample) {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+ UMA_HISTOGRAM_ENUMERATION(policy::kMetricPolicy, sample,
+ policy::kMetricPolicySize);
+}
+
+void SampleUMA(policy::MetricPolicy sample) {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
+ BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
+ NewRunnableFunction(&SampleUMAOnUIThread, sample));
+}
+
+} // namespace
+
namespace policy {
UserPolicyDiskCache::Delegate::~Delegate() {}
@@ -21,6 +41,8 @@ UserPolicyDiskCache::UserPolicyDiskCache(
void UserPolicyDiskCache::Load() {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+ UMA_HISTOGRAM_ENUMERATION(kMetricPolicy, kMetricPolicyLoadRequested,
+ kMetricPolicySize);
BrowserThread::PostTask(
BrowserThread::FILE, FROM_HERE,
NewRunnableMethod(this, &UserPolicyDiskCache::LoadOnFileThread));
@@ -29,6 +51,8 @@ void UserPolicyDiskCache::Load() {
void UserPolicyDiskCache::Store(
const em::CachedCloudPolicyResponse& policy) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+ UMA_HISTOGRAM_ENUMERATION(kMetricPolicy, kMetricPolicyStoreRequested,
+ kMetricPolicySize);
BrowserThread::PostTask(
BrowserThread::FILE, FROM_HERE,
NewRunnableMethod(this, &UserPolicyDiskCache::StoreOnFileThread, policy));
@@ -46,6 +70,7 @@ void UserPolicyDiskCache::LoadOnFileThread() {
if (!file_util::ReadFileToString(backing_file_path_, &data)) {
LOG(WARNING) << "Failed to read policy data from "
<< backing_file_path_.value();
+ SampleUMA(kMetricPolicyLoadFailed);
return;
}
@@ -54,6 +79,7 @@ void UserPolicyDiskCache::LoadOnFileThread() {
if (!cached_response.ParseFromArray(data.c_str(), data.size())) {
LOG(WARNING) << "Failed to parse policy data read from "
<< backing_file_path_.value();
+ SampleUMA(kMetricPolicyLoadFailed);
return;
}
@@ -78,18 +104,21 @@ void UserPolicyDiskCache::StoreOnFileThread(
std::string data;
if (!policy.SerializeToString(&data)) {
LOG(WARNING) << "Failed to serialize policy data";
+ SampleUMA(kMetricPolicyStoreFailed);
return;
}
if (!file_util::CreateDirectory(backing_file_path_.DirName())) {
LOG(WARNING) << "Failed to create directory "
<< backing_file_path_.DirName().value();
+ SampleUMA(kMetricPolicyStoreFailed);
return;
}
int size = data.size();
if (file_util::WriteFile(backing_file_path_, data.c_str(), size) != size) {
LOG(WARNING) << "Failed to write " << backing_file_path_.value();
+ SampleUMA(kMetricPolicyStoreFailed);
return;
}
}

Powered by Google App Engine
This is Rietveld 408576698