OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 // Most of this code is copied from: | 5 // Most of this code is copied from: |
6 // src/chrome/browser/policy/asynchronous_policy_loader.{h,cc} | 6 // src/chrome/browser/policy/asynchronous_policy_loader.{h,cc} |
7 | 7 |
8 #include "remoting/host/policy_hack/policy_watcher.h" | 8 #include "remoting/host/policy_hack/policy_watcher.h" |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
271 new policy::PolicyServiceImpl(providers)); | 271 new policy::PolicyServiceImpl(providers)); |
272 | 272 |
273 policy::PolicyService* borrowed_policy_service = policy_service.get(); | 273 policy::PolicyService* borrowed_policy_service = policy_service.get(); |
274 return make_scoped_ptr(new PolicyWatcher( | 274 return make_scoped_ptr(new PolicyWatcher( |
275 policy_service_task_runner, borrowed_policy_service, | 275 policy_service_task_runner, borrowed_policy_service, |
276 policy_service.Pass(), policy_provider.Pass(), schema_registry.Pass())); | 276 policy_service.Pass(), policy_provider.Pass(), schema_registry.Pass())); |
277 } | 277 } |
278 | 278 |
279 scoped_ptr<PolicyWatcher> PolicyWatcher::Create( | 279 scoped_ptr<PolicyWatcher> PolicyWatcher::Create( |
280 policy::PolicyService* policy_service, | 280 policy::PolicyService* policy_service, |
281 const scoped_refptr<base::SingleThreadTaskRunner>& network_task_runner) { | 281 const scoped_refptr<base::SingleThreadTaskRunner>& current_task_runner, |
282 const scoped_refptr<base::SingleThreadTaskRunner>& io_task_runner) { | |
283 DCHECK(current_task_runner->BelongsToCurrentThread()); | |
Łukasz Anforowicz
2015/01/30 05:35:55
It might be possible to avoid explicitly passing c
Sergey Ulanov
2015/01/30 19:33:45
base::ThreadTaskRunnerHandle::Get() is the preferr
| |
284 | |
282 #if defined(OS_CHROMEOS) | 285 #if defined(OS_CHROMEOS) |
286 // On Chrome OS the PolicyService is owned by the browser. | |
283 DCHECK(policy_service); | 287 DCHECK(policy_service); |
284 return make_scoped_ptr( | 288 return make_scoped_ptr( |
285 new PolicyWatcher(content::BrowserThread::GetMessageLoopProxyForThread( | 289 new PolicyWatcher(content::BrowserThread::GetMessageLoopProxyForThread( |
286 content::BrowserThread::UI), | 290 content::BrowserThread::UI), |
Łukasz Anforowicz
2015/01/30 05:35:55
This call to GetMessageLoopProxyForThread should p
Sergey Ulanov
2015/01/30 19:33:45
removed current_task_runner
| |
287 policy_service, nullptr, nullptr, nullptr)); | 291 policy_service, nullptr, nullptr, nullptr)); |
288 #elif defined(OS_WIN) | 292 #else // !defined(OS_CHROMEOS) |
289 DCHECK(!policy_service); | 293 DCHECK(!policy_service); |
290 // Always read the Chrome policies (even on Chromium) so that policy | 294 |
291 // enforcement can't be bypassed by running Chromium. | 295 // Create platform-specific PolicyLoader. Always read the Chrome policies |
292 // Note that this comment applies to all of Win/Mac/Posix branches below. | 296 // (even on Chromium) so that policy enforcement can't be bypassed by running |
293 static const wchar_t kRegistryKey[] = L"SOFTWARE\\Policies\\Google\\Chrome"; | 297 // Chromium. |
294 return PolicyWatcher::CreateFromPolicyLoader( | 298 scoped_ptr<policy::AsyncPolicyLoader> policy_loader; |
295 network_task_runner, | 299 #if defined(OS_WIN) |
296 policy::PolicyLoaderWin::Create(network_task_runner, kRegistryKey)); | 300 policy_loader = policy::PolicyLoaderWin::Create( |
301 io_task_runner, L"SOFTWARE\\Policies\\Google\\Chrome"); | |
297 #elif defined(OS_MACOSX) | 302 #elif defined(OS_MACOSX) |
298 CFStringRef bundle_id = CFSTR("com.google.Chrome"); | 303 CFStringRef bundle_id = CFSTR("com.google.Chrome"); |
299 DCHECK(!policy_service); | 304 policy_loader.reset(new policy::PolicyLoaderMac( |
300 return PolicyWatcher::CreateFromPolicyLoader( | 305 io_task_runner, |
301 network_task_runner, | 306 policy::PolicyLoaderMac::GetManagedPolicyPath(bundle_id), |
302 make_scoped_ptr(new policy::PolicyLoaderMac( | 307 new MacPreferences(), bundle_id)); |
303 network_task_runner, | |
304 policy::PolicyLoaderMac::GetManagedPolicyPath(bundle_id), | |
305 new MacPreferences(), bundle_id))); | |
306 #elif defined(OS_POSIX) && !defined(OS_ANDROID) | 308 #elif defined(OS_POSIX) && !defined(OS_ANDROID) |
307 DCHECK(!policy_service); | 309 policy_loader.reset(new policy::ConfigDirPolicyLoader( |
308 static const base::FilePath::CharType kPolicyDir[] = | 310 io_task_runner, |
309 FILE_PATH_LITERAL("/etc/opt/chrome/policies"); | 311 base::FilePath(FILE_PATH_LITERAL("/etc/opt/chrome/policies")), |
310 return PolicyWatcher::CreateFromPolicyLoader( | 312 policy::POLICY_SCOPE_MACHINE)); |
311 network_task_runner, make_scoped_ptr(new policy::ConfigDirPolicyLoader( | |
312 network_task_runner, base::FilePath(kPolicyDir), | |
313 policy::POLICY_SCOPE_MACHINE))); | |
314 #else | 313 #else |
315 #error OS that is not yet supported by PolicyWatcher code. | 314 #error OS that is not yet supported by PolicyWatcher code. |
316 #endif | 315 #endif |
316 | |
317 return PolicyWatcher::CreateFromPolicyLoader(current_task_runner, | |
318 policy_loader.Pass()); | |
319 #endif // !(OS_CHROMEOS) | |
317 } | 320 } |
318 | 321 |
319 } // namespace policy_hack | 322 } // namespace policy_hack |
320 } // namespace remoting | 323 } // namespace remoting |
OLD | NEW |