Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(692)

Side by Side Diff: chrome/browser/policy/config_dir_policy_provider.cc

Issue 3660002: Rename ChromeThread to BrowserThread Part13: (Closed) Base URL: git://git.chromium.org/chromium.git
Patch Set: Created 10 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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/config_dir_policy_provider.h" 5 #include "chrome/browser/policy/config_dir_policy_provider.h"
6 6
7 #include <set> 7 #include <set>
8 8
9 #include "base/file_util.h" 9 #include "base/file_util.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 27 matching lines...) Expand all
38 config_dir_(config_dir), 38 config_dir_(config_dir),
39 reload_task_(NULL), 39 reload_task_(NULL),
40 settle_interval_seconds_(settle_interval_seconds), 40 settle_interval_seconds_(settle_interval_seconds),
41 reload_interval_minutes_(reload_interval_minutes) { 41 reload_interval_minutes_(reload_interval_minutes) {
42 // Force an initial load, so GetPolicy() works. 42 // Force an initial load, so GetPolicy() works.
43 policy_.reset(Load()); 43 policy_.reset(Load());
44 DCHECK(policy_.get()); 44 DCHECK(policy_.get());
45 } 45 }
46 46
47 void PolicyDirLoader::Stop() { 47 void PolicyDirLoader::Stop() {
48 if (!ChromeThread::CurrentlyOn(ChromeThread::FILE)) { 48 if (!BrowserThread::CurrentlyOn(BrowserThread::FILE)) {
49 ChromeThread::PostTask(ChromeThread::FILE, FROM_HERE, 49 BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE,
50 NewRunnableMethod(this, &PolicyDirLoader::Stop)); 50 NewRunnableMethod(this, &PolicyDirLoader::Stop));
51 return; 51 return;
52 } 52 }
53 53
54 if (reload_task_) { 54 if (reload_task_) {
55 reload_task_->Cancel(); 55 reload_task_->Cancel();
56 reload_task_ = NULL; 56 reload_task_ = NULL;
57 } 57 }
58 } 58 }
59 59
60 void PolicyDirLoader::Reload() { 60 void PolicyDirLoader::Reload() {
61 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::FILE)); 61 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
62 62
63 // Check the directory time in order to see whether a reload is required. 63 // Check the directory time in order to see whether a reload is required.
64 base::TimeDelta delay; 64 base::TimeDelta delay;
65 base::Time now = base::Time::Now(); 65 base::Time now = base::Time::Now();
66 if (!IsSafeToReloadPolicy(now, &delay)) { 66 if (!IsSafeToReloadPolicy(now, &delay)) {
67 ScheduleReloadTask(delay); 67 ScheduleReloadTask(delay);
68 return; 68 return;
69 } 69 }
70 70
71 // Load the policy definitions. 71 // Load the policy definitions.
(...skipping 24 matching lines...) Expand all
96 // that'll make us recheck after a reasonable interval. 96 // that'll make us recheck after a reasonable interval.
97 ScheduleReloadTask(base::TimeDelta::FromMinutes(reload_interval_minutes_)); 97 ScheduleReloadTask(base::TimeDelta::FromMinutes(reload_interval_minutes_));
98 } 98 }
99 99
100 DictionaryValue* PolicyDirLoader::GetPolicy() { 100 DictionaryValue* PolicyDirLoader::GetPolicy() {
101 AutoLock lock(lock_); 101 AutoLock lock(lock_);
102 return static_cast<DictionaryValue*>(policy_->DeepCopy()); 102 return static_cast<DictionaryValue*>(policy_->DeepCopy());
103 } 103 }
104 104
105 void PolicyDirLoader::OnFilePathChanged(const FilePath& path) { 105 void PolicyDirLoader::OnFilePathChanged(const FilePath& path) {
106 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::FILE)); 106 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
107 Reload(); 107 Reload();
108 } 108 }
109 109
110 void PolicyDirLoader::OnError() { 110 void PolicyDirLoader::OnError() {
111 LOG(ERROR) << "FileWatcher on " << config_dir_.value() << " failed."; 111 LOG(ERROR) << "FileWatcher on " << config_dir_.value() << " failed.";
112 } 112 }
113 113
114 DictionaryValue* PolicyDirLoader::Load() { 114 DictionaryValue* PolicyDirLoader::Load() {
115 // Enumerate the files and sort them lexicographically. 115 // Enumerate the files and sort them lexicographically.
116 std::set<FilePath> files; 116 std::set<FilePath> files;
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
170 base::TimeDelta age = now - last_modification_clock_; 170 base::TimeDelta age = now - last_modification_clock_;
171 if (age < settleInterval) { 171 if (age < settleInterval) {
172 *delay = settleInterval - age; 172 *delay = settleInterval - age;
173 return false; 173 return false;
174 } 174 }
175 175
176 return true; 176 return true;
177 } 177 }
178 178
179 void PolicyDirLoader::ScheduleReloadTask(const base::TimeDelta& delay) { 179 void PolicyDirLoader::ScheduleReloadTask(const base::TimeDelta& delay) {
180 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::FILE)); 180 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
181 181
182 if (reload_task_) 182 if (reload_task_)
183 reload_task_->Cancel(); 183 reload_task_->Cancel();
184 184
185 reload_task_ = NewRunnableMethod(this, &PolicyDirLoader::ReloadFromTask); 185 reload_task_ = NewRunnableMethod(this, &PolicyDirLoader::ReloadFromTask);
186 ChromeThread::PostDelayedTask(ChromeThread::FILE, FROM_HERE, reload_task_, 186 BrowserThread::PostDelayedTask(BrowserThread::FILE, FROM_HERE, reload_task_,
187 delay.InMilliseconds()); 187 delay.InMilliseconds());
188 } 188 }
189 189
190 void PolicyDirLoader::NotifyPolicyChanged() { 190 void PolicyDirLoader::NotifyPolicyChanged() {
191 DCHECK_EQ(origin_loop_, MessageLoop::current()); 191 DCHECK_EQ(origin_loop_, MessageLoop::current());
192 if (provider_) 192 if (provider_)
193 provider_->NotifyStoreOfPolicyChange(); 193 provider_->NotifyStoreOfPolicyChange();
194 } 194 }
195 195
196 void PolicyDirLoader::ReloadFromTask() { 196 void PolicyDirLoader::ReloadFromTask() {
197 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::FILE)); 197 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
198 198
199 // Drop the reference to the reload task, since the task might be the only 199 // Drop the reference to the reload task, since the task might be the only
200 // referer that keeps us alive, so we should not Cancel() it. 200 // referer that keeps us alive, so we should not Cancel() it.
201 reload_task_ = NULL; 201 reload_task_ = NULL;
202 202
203 Reload(); 203 Reload();
204 } 204 }
205 205
206 // PolicyDirWatcher implementation: 206 // PolicyDirWatcher implementation:
207 207
208 void PolicyDirWatcher::Init(PolicyDirLoader* loader) { 208 void PolicyDirWatcher::Init(PolicyDirLoader* loader) {
209 // Initialization can happen early when the file thread is not yet available. 209 // Initialization can happen early when the file thread is not yet available.
210 // So post a task to ourselves on the UI thread which will run after threading 210 // So post a task to ourselves on the UI thread which will run after threading
211 // is up and schedule watch initialization on the file thread. 211 // is up and schedule watch initialization on the file thread.
212 ChromeThread::PostTask(ChromeThread::UI, FROM_HERE, 212 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
213 NewRunnableMethod(this, 213 NewRunnableMethod(this,
214 &PolicyDirWatcher::InitWatcher, 214 &PolicyDirWatcher::InitWatcher,
215 scoped_refptr<PolicyDirLoader>(loader))); 215 scoped_refptr<PolicyDirLoader>(loader)));
216 } 216 }
217 217
218 void PolicyDirWatcher::InitWatcher( 218 void PolicyDirWatcher::InitWatcher(
219 const scoped_refptr<PolicyDirLoader>& loader) { 219 const scoped_refptr<PolicyDirLoader>& loader) {
220 if (!ChromeThread::CurrentlyOn(ChromeThread::FILE)) { 220 if (!BrowserThread::CurrentlyOn(BrowserThread::FILE)) {
221 ChromeThread::PostTask(ChromeThread::FILE, FROM_HERE, 221 BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE,
222 NewRunnableMethod(this, &PolicyDirWatcher::InitWatcher, loader)); 222 NewRunnableMethod(this, &PolicyDirWatcher::InitWatcher, loader));
223 return; 223 return;
224 } 224 }
225 225
226 if (!watcher_.Watch(loader->config_dir(), loader.get())) 226 if (!watcher_.Watch(loader->config_dir(), loader.get()))
227 loader->OnError(); 227 loader->OnError();
228 228
229 // There might have been changes to the directory in the time between 229 // There might have been changes to the directory in the time between
230 // construction of the loader and initialization of the watcher. Call reload 230 // construction of the loader and initialization of the watcher. Call reload
231 // to detect if that is the case. 231 // to detect if that is the case.
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
265 Value* value; 265 Value* value;
266 if (policies->Get(entry.name, &value) && value->IsType(entry.value_type)) 266 if (policies->Get(entry.name, &value) && value->IsType(entry.value_type))
267 store->Apply(entry.policy_type, value->DeepCopy()); 267 store->Apply(entry.policy_type, value->DeepCopy());
268 } 268 }
269 269
270 // TODO(mnissler): Handle preference overrides once |ConfigurationPolicyStore| 270 // TODO(mnissler): Handle preference overrides once |ConfigurationPolicyStore|
271 // supports it. 271 // supports it.
272 } 272 }
273 273
274 } // namespace policy 274 } // namespace policy
OLDNEW
« no previous file with comments | « chrome/browser/metrics/histogram_synchronizer.cc ('k') | chrome/browser/policy/config_dir_policy_provider_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698