Chromium Code Reviews| Index: chrome/browser/policy/cloud/cloud_policy_store.cc |
| diff --git a/chrome/browser/policy/cloud/cloud_policy_store.cc b/chrome/browser/policy/cloud/cloud_policy_store.cc |
| index 2205fb4922b1a58740848ce5c567eb1862af2b13..d7566545a721f3f5a0502678609df7e678b3cefa 100644 |
| --- a/chrome/browser/policy/cloud/cloud_policy_store.cc |
| +++ b/chrome/browser/policy/cloud/cloud_policy_store.cc |
| @@ -4,6 +4,8 @@ |
| #include "chrome/browser/policy/cloud/cloud_policy_store.h" |
| +#include "base/hash.h" |
| + |
| namespace policy { |
| CloudPolicyStore::Observer::~Observer() {} |
| @@ -11,10 +13,20 @@ CloudPolicyStore::Observer::~Observer() {} |
| CloudPolicyStore::CloudPolicyStore() |
| : status_(STATUS_OK), |
| validation_status_(CloudPolicyValidatorBase::VALIDATION_OK), |
| - is_initialized_(false) {} |
| + invalidation_version_(0), |
| + is_initialized_(false), |
| + policy_changed_(false), |
| + hash_value_(0) {} |
| CloudPolicyStore::~CloudPolicyStore() {} |
| +void CloudPolicyStore::Store( |
| + const enterprise_management::PolicyFetchResponse& policy, |
| + int64 invalidation_version) { |
| + invalidation_version_ = invalidation_version; |
| + Store(policy); |
| +} |
| + |
| void CloudPolicyStore::AddObserver(CloudPolicyStore::Observer* observer) { |
| observers_.AddObserver(observer); |
| } |
| @@ -24,6 +36,14 @@ void CloudPolicyStore::RemoveObserver(CloudPolicyStore::Observer* observer) { |
| } |
| void CloudPolicyStore::NotifyStoreLoaded() { |
| + // Determine if the policy changed by comparing the new policy's hash value |
| + // to the previous. |
| + uint32 new_hash_value = 0; |
| + if (policy_.get() && policy_->has_policy_value()) |
|
Joao da Silva
2013/07/24 15:34:07
.get() is not needed to test the policy_ scoped_pt
Steve Condie
2013/07/25 01:18:08
Done.
|
| + new_hash_value = base::Hash(policy_->policy_value()); |
|
Joao da Silva
2013/07/24 15:34:07
Note that base::Hash does a single pass over the s
|
| + policy_changed_ = new_hash_value != hash_value_; |
| + hash_value_ = new_hash_value; |
| + |
| is_initialized_ = true; |
| FOR_EACH_OBSERVER(Observer, observers_, OnStoreLoaded(this)); |
| } |
| @@ -33,4 +53,4 @@ void CloudPolicyStore::NotifyStoreError() { |
| FOR_EACH_OBSERVER(Observer, observers_, OnStoreError(this)); |
| } |
| -} // namespace |
| +} // namespace policy |