| Index: chrome/browser/policy/device_policy_cache.cc
|
| diff --git a/chrome/browser/policy/device_policy_cache.cc b/chrome/browser/policy/device_policy_cache.cc
|
| index de6894034aff2f0dadfeccda9aef1f49c528017c..2deddb92b035c485c5c608f54d362a4fa6944d33 100644
|
| --- a/chrome/browser/policy/device_policy_cache.cc
|
| +++ b/chrome/browser/policy/device_policy_cache.cc
|
| @@ -7,6 +7,7 @@
|
| #include "base/basictypes.h"
|
| #include "base/compiler_specific.h"
|
| #include "base/logging.h"
|
| +#include "base/metrics/histogram.h"
|
| #include "base/task.h"
|
| #include "base/values.h"
|
| #include "chrome/browser/chromeos/cros_settings_names.h"
|
| @@ -15,6 +16,7 @@
|
| #include "chrome/browser/policy/configuration_policy_pref_store.h"
|
| #include "chrome/browser/policy/device_policy_identity_strategy.h"
|
| #include "chrome/browser/policy/enterprise_install_attributes.h"
|
| +#include "chrome/browser/policy/enterprise_metrics.h"
|
| #include "chrome/browser/policy/policy_map.h"
|
| #include "chrome/browser/policy/proto/device_management_backend.pb.h"
|
| #include "chrome/browser/policy/proto/device_management_constants.h"
|
| @@ -134,6 +136,8 @@ DevicePolicyCache::~DevicePolicyCache() {
|
| }
|
|
|
| void DevicePolicyCache::Load() {
|
| + UMA_HISTOGRAM_ENUMERATION(kMetricPolicy, kMetricPolicyLoadRequested,
|
| + kMetricPolicySize);
|
| signed_settings_helper_->StartRetrievePolicyOp(this);
|
| }
|
|
|
| @@ -144,6 +148,9 @@ void DevicePolicyCache::SetPolicy(const em::PolicyFetchResponse& policy) {
|
| std::string registration_user(install_attributes_->GetRegistrationUser());
|
| if (registration_user.empty()) {
|
| LOG(WARNING) << "Refusing to accept policy on non-enterprise device.";
|
| + UMA_HISTOGRAM_ENUMERATION(kMetricPolicy,
|
| + kMetricPolicyFetchNonEnterpriseDevice,
|
| + kMetricPolicySize);
|
| InformNotifier(CloudPolicySubsystem::LOCAL_ERROR,
|
| CloudPolicySubsystem::POLICY_LOCAL_ERROR);
|
| return;
|
| @@ -153,6 +160,8 @@ void DevicePolicyCache::SetPolicy(const em::PolicyFetchResponse& policy) {
|
| em::PolicyData policy_data;
|
| if (!policy_data.ParseFromString(policy.policy_data())) {
|
| LOG(WARNING) << "Invalid policy protobuf";
|
| + UMA_HISTOGRAM_ENUMERATION(kMetricPolicy, kMetricPolicyFetchInvalidPolicy,
|
| + kMetricPolicySize);
|
| InformNotifier(CloudPolicySubsystem::LOCAL_ERROR,
|
| CloudPolicySubsystem::POLICY_LOCAL_ERROR);
|
| return;
|
| @@ -161,6 +170,8 @@ void DevicePolicyCache::SetPolicy(const em::PolicyFetchResponse& policy) {
|
| if (registration_user != policy_data.username()) {
|
| LOG(WARNING) << "Refusing policy blob for " << policy_data.username()
|
| << " which doesn't match " << registration_user;
|
| + UMA_HISTOGRAM_ENUMERATION(kMetricPolicy, kMetricPolicyFetchUserMismatch,
|
| + kMetricPolicySize);
|
| InformNotifier(CloudPolicySubsystem::LOCAL_ERROR,
|
| CloudPolicySubsystem::POLICY_LOCAL_ERROR);
|
| return;
|
| @@ -169,6 +180,8 @@ void DevicePolicyCache::SetPolicy(const em::PolicyFetchResponse& policy) {
|
| set_last_policy_refresh_time(base::Time::NowFromSystemTime());
|
|
|
| // Start a store operation.
|
| + UMA_HISTOGRAM_ENUMERATION(kMetricPolicy, kMetricPolicyStoreRequested,
|
| + kMetricPolicySize);
|
| new StorePolicyOperation(signed_settings_helper_,
|
| policy,
|
| callback_factory_.NewCallback(
|
| @@ -200,6 +213,8 @@ void DevicePolicyCache::OnRetrievePolicyCompleted(
|
| em::PolicyData policy_data;
|
| if (!policy_data.ParseFromString(policy.policy_data())) {
|
| LOG(WARNING) << "Failed to parse PolicyData protobuf.";
|
| + UMA_HISTOGRAM_ENUMERATION(kMetricPolicy, kMetricPolicyLoadFailed,
|
| + kMetricPolicySize);
|
| InformNotifier(CloudPolicySubsystem::LOCAL_ERROR,
|
| CloudPolicySubsystem::POLICY_LOCAL_ERROR);
|
| return;
|
| @@ -215,6 +230,8 @@ void DevicePolicyCache::OnRetrievePolicyCompleted(
|
| return;
|
| }
|
| if (!policy_data.has_username() || !policy_data.has_device_id()) {
|
| + UMA_HISTOGRAM_ENUMERATION(kMetricPolicy, kMetricPolicyLoadFailed,
|
| + kMetricPolicySize);
|
| InformNotifier(CloudPolicySubsystem::LOCAL_ERROR,
|
| CloudPolicySubsystem::POLICY_LOCAL_ERROR);
|
| return;
|
| @@ -227,15 +244,23 @@ void DevicePolicyCache::OnRetrievePolicyCompleted(
|
| } else { // In other words, starting_up_ == false.
|
| if (code != chromeos::SignedSettings::SUCCESS) {
|
| if (code == chromeos::SignedSettings::BAD_SIGNATURE) {
|
| + UMA_HISTOGRAM_ENUMERATION(kMetricPolicy, kMetricPolicyFetchBadSignature,
|
| + kMetricPolicySize);
|
| InformNotifier(CloudPolicySubsystem::LOCAL_ERROR,
|
| CloudPolicySubsystem::SIGNATURE_MISMATCH);
|
| } else {
|
| + UMA_HISTOGRAM_ENUMERATION(kMetricPolicy, kMetricPolicyFetchOtherFailed,
|
| + kMetricPolicySize);
|
| InformNotifier(CloudPolicySubsystem::LOCAL_ERROR,
|
| CloudPolicySubsystem::POLICY_LOCAL_ERROR);
|
| }
|
| return;
|
| }
|
| - SetPolicyInternal(policy, NULL, false);
|
| + bool ok = SetPolicyInternal(policy, NULL, false);
|
| + if (ok) {
|
| + UMA_HISTOGRAM_ENUMERATION(kMetricPolicy, kMetricPolicyFetchOK,
|
| + kMetricPolicySize);
|
| + }
|
| }
|
| }
|
|
|
| @@ -255,10 +280,16 @@ void DevicePolicyCache::PolicyStoreOpCompleted(
|
| chromeos::SignedSettings::ReturnCode code) {
|
| DCHECK(CalledOnValidThread());
|
| if (code != chromeos::SignedSettings::SUCCESS) {
|
| + UMA_HISTOGRAM_ENUMERATION(kMetricPolicy, kMetricPolicyStoreFailed,
|
| + kMetricPolicySize);
|
| if (code == chromeos::SignedSettings::BAD_SIGNATURE) {
|
| + UMA_HISTOGRAM_ENUMERATION(kMetricPolicy, kMetricPolicyFetchBadSignature,
|
| + kMetricPolicySize);
|
| InformNotifier(CloudPolicySubsystem::LOCAL_ERROR,
|
| CloudPolicySubsystem::SIGNATURE_MISMATCH);
|
| } else {
|
| + UMA_HISTOGRAM_ENUMERATION(kMetricPolicy, kMetricPolicyFetchOtherFailed,
|
| + kMetricPolicySize);
|
| InformNotifier(CloudPolicySubsystem::LOCAL_ERROR,
|
| CloudPolicySubsystem::POLICY_LOCAL_ERROR);
|
| }
|
|
|