1a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
2a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)// found in the LICENSE file.
4a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
5a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "chrome/browser/policy/cloud/user_cloud_policy_invalidator_factory.h"
6a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
7f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "chrome/browser/invalidation/profile_invalidation_provider_factory.h"
8a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "chrome/browser/policy/cloud/user_cloud_policy_invalidator.h"
9a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "chrome/browser/profiles/profile.h"
10a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "components/keyed_service/content/browser_context_dependency_manager.h"
11a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#if defined(OS_CHROMEOS)
12a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "chrome/browser/chromeos/policy/user_cloud_policy_manager_chromeos.h"
13a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "chrome/browser/chromeos/policy/user_cloud_policy_manager_factory_chromeos.h"
14a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#else
15a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "chrome/browser/policy/cloud/user_cloud_policy_manager_factory.h"
165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "components/policy/core/common/cloud/user_cloud_policy_manager.h"
17a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#endif
18a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
19a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)namespace policy {
20a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
21a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)// static
22a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)UserCloudPolicyInvalidatorFactory*
23a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)    UserCloudPolicyInvalidatorFactory::GetInstance() {
24a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  return Singleton<UserCloudPolicyInvalidatorFactory>::get();
25a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)}
26a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
27a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)UserCloudPolicyInvalidatorFactory::UserCloudPolicyInvalidatorFactory()
28a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)    : BrowserContextKeyedServiceFactory(
29a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)          "UserCloudPolicyInvalidator",
30a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)          BrowserContextDependencyManager::GetInstance()) {
31f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  DependsOn(invalidation::ProfileInvalidationProviderFactory::GetInstance());
32a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#if defined(OS_CHROMEOS)
33a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  DependsOn(UserCloudPolicyManagerFactoryChromeOS::GetInstance());
34a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#else
35a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  DependsOn(UserCloudPolicyManagerFactory::GetInstance());
36a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#endif
37a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)}
38a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
39a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)UserCloudPolicyInvalidatorFactory::~UserCloudPolicyInvalidatorFactory() {}
40a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
41a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)KeyedService* UserCloudPolicyInvalidatorFactory::BuildServiceInstanceFor(
42a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    content::BrowserContext* context) const {
43a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  Profile* profile = static_cast<Profile*>(context);
44a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#if defined(OS_CHROMEOS)
45a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  CloudPolicyManager* policy_manager =
46a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)      UserCloudPolicyManagerFactoryChromeOS::GetForProfile(profile);
47a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#else
48a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  CloudPolicyManager* policy_manager =
49f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      UserCloudPolicyManagerFactory::GetForBrowserContext(context);
50a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#endif
51a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  if (!policy_manager)
52a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)    return NULL;
53a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
54a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  return new UserCloudPolicyInvalidator(profile, policy_manager);
55a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)}
56a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
57a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)bool UserCloudPolicyInvalidatorFactory::
58a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)ServiceIsCreatedWithBrowserContext() const {
59a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  // Must be automatically created to enable user policy invalidations.
60a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  return true;
61a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)}
62a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
63a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)bool UserCloudPolicyInvalidatorFactory::ServiceIsNULLWhileTesting() const {
64a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  // Not used in tests.
65a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  return true;
66a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)}
67a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
68a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)}  // namespace policy
69