OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/policy/device_management_policy_cache.h" | 5 #include "chrome/browser/policy/device_management_policy_cache.h" |
6 | 6 |
7 #include <limits> | 7 #include <limits> |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/file_util.h" | 10 #include "base/file_util.h" |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
97 if (timestamp > base::Time::NowFromSystemTime()) { | 97 if (timestamp > base::Time::NowFromSystemTime()) { |
98 LOG(WARNING) << "Rejected policy data from " << backing_file_path_.value() | 98 LOG(WARNING) << "Rejected policy data from " << backing_file_path_.value() |
99 << ", file is from the future."; | 99 << ", file is from the future."; |
100 return; | 100 return; |
101 } | 101 } |
102 is_device_unmanaged_ = cached_policy.unmanaged(); | 102 is_device_unmanaged_ = cached_policy.unmanaged(); |
103 | 103 |
104 // Decode and swap in the new policy information. | 104 // Decode and swap in the new policy information. |
105 scoped_ptr<DictionaryValue> value(DecodePolicy(cached_policy.policy())); | 105 scoped_ptr<DictionaryValue> value(DecodePolicy(cached_policy.policy())); |
106 { | 106 { |
107 AutoLock lock(lock_); | 107 base::AutoLock lock(lock_); |
108 if (!fresh_policy_) | 108 if (!fresh_policy_) |
109 policy_.reset(value.release()); | 109 policy_.reset(value.release()); |
110 last_policy_refresh_time_ = timestamp; | 110 last_policy_refresh_time_ = timestamp; |
111 } | 111 } |
112 } | 112 } |
113 | 113 |
114 bool DeviceManagementPolicyCache::SetPolicy( | 114 bool DeviceManagementPolicyCache::SetPolicy( |
115 const em::DevicePolicyResponse& policy) { | 115 const em::DevicePolicyResponse& policy) { |
116 is_device_unmanaged_ = false; | 116 is_device_unmanaged_ = false; |
117 DictionaryValue* value = DeviceManagementPolicyCache::DecodePolicy(policy); | 117 DictionaryValue* value = DeviceManagementPolicyCache::DecodePolicy(policy); |
118 const bool new_policy_differs = !(value->Equals(policy_.get())); | 118 const bool new_policy_differs = !(value->Equals(policy_.get())); |
119 base::Time now(base::Time::NowFromSystemTime()); | 119 base::Time now(base::Time::NowFromSystemTime()); |
120 { | 120 { |
121 AutoLock lock(lock_); | 121 base::AutoLock lock(lock_); |
122 policy_.reset(value); | 122 policy_.reset(value); |
123 fresh_policy_ = true; | 123 fresh_policy_ = true; |
124 last_policy_refresh_time_ = now; | 124 last_policy_refresh_time_ = now; |
125 } | 125 } |
126 | 126 |
127 em::DevicePolicyResponse* policy_copy = new em::DevicePolicyResponse; | 127 em::DevicePolicyResponse* policy_copy = new em::DevicePolicyResponse; |
128 policy_copy->CopyFrom(policy); | 128 policy_copy->CopyFrom(policy); |
129 BrowserThread::PostTask( | 129 BrowserThread::PostTask( |
130 BrowserThread::FILE, | 130 BrowserThread::FILE, |
131 FROM_HERE, | 131 FROM_HERE, |
132 new PersistPolicyTask(backing_file_path_, policy_copy, now, false)); | 132 new PersistPolicyTask(backing_file_path_, policy_copy, now, false)); |
133 return new_policy_differs; | 133 return new_policy_differs; |
134 } | 134 } |
135 | 135 |
136 DictionaryValue* DeviceManagementPolicyCache::GetPolicy() { | 136 DictionaryValue* DeviceManagementPolicyCache::GetPolicy() { |
137 AutoLock lock(lock_); | 137 base::AutoLock lock(lock_); |
138 return static_cast<DictionaryValue*>(policy_->DeepCopy()); | 138 return static_cast<DictionaryValue*>(policy_->DeepCopy()); |
139 } | 139 } |
140 | 140 |
141 void DeviceManagementPolicyCache::SetDeviceUnmanaged(bool is_device_unmanaged) { | 141 void DeviceManagementPolicyCache::SetDeviceUnmanaged(bool is_device_unmanaged) { |
142 if (is_device_unmanaged_ == is_device_unmanaged) | 142 if (is_device_unmanaged_ == is_device_unmanaged) |
143 return; | 143 return; |
144 | 144 |
145 is_device_unmanaged_ = is_device_unmanaged; | 145 is_device_unmanaged_ = is_device_unmanaged; |
146 base::Time now(base::Time::NowFromSystemTime()); | 146 base::Time now(base::Time::NowFromSystemTime()); |
147 DictionaryValue* empty = new DictionaryValue(); | 147 DictionaryValue* empty = new DictionaryValue(); |
148 { | 148 { |
149 AutoLock lock(lock_); | 149 base::AutoLock lock(lock_); |
150 policy_.reset(empty); | 150 policy_.reset(empty); |
151 last_policy_refresh_time_ = now; | 151 last_policy_refresh_time_ = now; |
152 } | 152 } |
153 BrowserThread::PostTask( | 153 BrowserThread::PostTask( |
154 BrowserThread::FILE, | 154 BrowserThread::FILE, |
155 FROM_HERE, | 155 FROM_HERE, |
156 new PersistPolicyTask(backing_file_path_, | 156 new PersistPolicyTask(backing_file_path_, |
157 (is_device_unmanaged ? NULL | 157 (is_device_unmanaged ? NULL |
158 : new em::DevicePolicyResponse()), | 158 : new em::DevicePolicyResponse()), |
159 now, | 159 now, |
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
269 DeviceManagementPolicyCache::DecodeValue(named_value->value()); | 269 DeviceManagementPolicyCache::DecodeValue(named_value->value()); |
270 if (decoded_value) | 270 if (decoded_value) |
271 result->Set(named_value->name(), decoded_value); | 271 result->Set(named_value->name(), decoded_value); |
272 } | 272 } |
273 } | 273 } |
274 } | 274 } |
275 return result; | 275 return result; |
276 } | 276 } |
277 | 277 |
278 } // namespace policy | 278 } // namespace policy |
OLD | NEW |