summaryrefslogtreecommitdiffstats
path: root/chrome/browser/policy/user_policy_token_cache.cc
diff options
context:
space:
mode:
authorjoaodasilva@chromium.org <joaodasilva@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-07-08 15:44:40 +0000
committerjoaodasilva@chromium.org <joaodasilva@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-07-08 15:44:40 +0000
commitc94de1860d5f53b31d4178ae77f2bca40e33c9be (patch)
tree7ebb5f6b67669abbbbd04615fa994b769e3968a7 /chrome/browser/policy/user_policy_token_cache.cc
parent5cac508f9286ffdefbb3fbb4f0edb893a2b30759 (diff)
downloadchromium_src-c94de1860d5f53b31d4178ae77f2bca40e33c9be.zip
chromium_src-c94de1860d5f53b31d4178ae77f2bca40e33c9be.tar.gz
chromium_src-c94de1860d5f53b31d4178ae77f2bca40e33c9be.tar.bz2
UMA metrics for cloud policies.
BUG=chromium-os:14002 TEST=Set cloud policies using testserver, corrupt some files, check about:histograms Review URL: http://codereview.chromium.org/7105018 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@91857 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/policy/user_policy_token_cache.cc')
-rw-r--r--chrome/browser/policy/user_policy_token_cache.cc33
1 files changed, 32 insertions, 1 deletions
diff --git a/chrome/browser/policy/user_policy_token_cache.cc b/chrome/browser/policy/user_policy_token_cache.cc
index adba4a4..e2341d8 100644
--- a/chrome/browser/policy/user_policy_token_cache.cc
+++ b/chrome/browser/policy/user_policy_token_cache.cc
@@ -5,8 +5,28 @@
#include "chrome/browser/policy/user_policy_token_cache.h"
#include "base/file_util.h"
+#include "base/metrics/histogram.h"
+#include "chrome/browser/policy/enterprise_metrics.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::MetricToken sample) {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+ UMA_HISTOGRAM_ENUMERATION(policy::kMetricToken, sample,
+ policy::kMetricTokenSize);
+}
+
+void SampleUMA(policy::MetricToken sample) {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
+ BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
+ NewRunnableFunction(&SampleUMAOnUIThread, sample));
+}
+
+} // namespace
+
namespace policy {
namespace em = enterprise_management;
@@ -52,6 +72,9 @@ void UserPolicyTokenCache::LoadOnFileThread() {
device_credentials.ParseFromArray(data.c_str(), data.size())) {
device_token = device_credentials.device_token();
device_id = device_credentials.device_id();
+ SampleUMA(kMetricTokenLoadSucceeded);
+ } else {
+ SampleUMA(kMetricTokenLoadFailed);
}
}
@@ -81,16 +104,24 @@ void UserPolicyTokenCache::StoreOnFileThread(const std::string& token,
if (!success) {
LOG(WARNING) << "Failed serialize device token data, will not write "
<< cache_file_.value();
+ SampleUMA(kMetricTokenStoreFailed);
return;
}
if (!file_util::CreateDirectory(cache_file_.DirName())) {
LOG(WARNING) << "Failed to create directory "
<< cache_file_.DirName().value();
+ SampleUMA(kMetricTokenStoreFailed);
return;
}
- file_util::WriteFile(cache_file_, data.c_str(), data.length());
+ int size = data.size();
+ if (file_util::WriteFile(cache_file_, data.c_str(), size) != size) {
+ LOG(WARNING) << "Failed to write " << cache_file_.value();
+ SampleUMA(kMetricTokenStoreFailed);
+ }
+
+ SampleUMA(kMetricTokenStoreSucceeded);
}
} // namespace policy