Revert "Revert "Make the metrics library respect the policy settings instead of the consent file.""
This reverts commit aa91d046ac27a9bdc96e6cd9438741d98f1cef66
Change-Id: I1c84fb86d6eb56a5a8e88136c98104394be697b2
Reviewed-on: http://gerrit.chromium.org/gerrit/4614
Reviewed-by: Darin Petkov <petkov@chromium.org>
Reviewed-by: Ken Mixter <kmixter@chromium.org>
Tested-by: Ken Mixter <kmixter@chromium.org>
diff --git a/metrics/metrics_library.cc b/metrics/metrics_library.cc
index d2c1b0f..ae6c8e0 100644
--- a/metrics/metrics_library.cc
+++ b/metrics/metrics_library.cc
@@ -13,6 +13,7 @@
#include <cstring>
#include "base/eintr_wrapper.h" // HANDLE_EINTR macro, no libbase required.
+#include "policy/device_policy.h"
#define READ_WRITE_ALL_FILE_FLAGS \
(S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH)
@@ -60,7 +61,8 @@
MetricsLibrary::MetricsLibrary()
: uma_events_file_(NULL),
- consent_file_(kConsentFile) {}
+ consent_file_(kConsentFile),
+ policy_provider_(NULL) {}
// We take buffer and buffer_size as parameters in order to simplify testing
// of various alignments of the |device_name| with |buffer_size|.
@@ -130,13 +132,21 @@
}
bool MetricsLibrary::AreMetricsEnabled() {
- static struct stat stat_buffer;
time_t this_check_time = time(NULL);
+ if (!policy_provider_.get())
+ policy_provider_.reset(new policy::PolicyProvider());
+ else
+ policy_provider_->Reload();
+
+ // We initialize with the default value which is false and will be preserved
+ // if the policy is not set.
+ bool enabled = false;
+ if (policy_provider_->device_policy_is_loaded())
+ policy_provider_->GetDevicePolicy().GetMetricsEnabled(&enabled);
if (this_check_time != cached_enabled_time_) {
cached_enabled_time_ = this_check_time;
- if (stat(consent_file_, &stat_buffer) >= 0 &&
- !IsGuestMode())
+ if (enabled && !IsGuestMode())
cached_enabled_ = true;
else
cached_enabled_ = false;
@@ -283,3 +293,7 @@
// Send the message.
return SendMessageToChrome(message_length, message);
}
+
+void MetricsLibrary::SetPolicyProvider(policy::PolicyProvider* provider) {
+ policy_provider_.reset(provider);
+}