user_cloud_policy_token_forwarder_factory.cc revision a36e5920737c6adbddd3e43b760e5de8431db6e0
1// Copyright (c) 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "chrome/browser/chromeos/policy/user_cloud_policy_token_forwarder_factory.h"
6
7#include "chrome/browser/chromeos/policy/user_cloud_policy_manager_chromeos.h"
8#include "chrome/browser/chromeos/policy/user_cloud_policy_manager_factory_chromeos.h"
9#include "chrome/browser/chromeos/policy/user_cloud_policy_token_forwarder.h"
10#include "chrome/browser/profiles/profile.h"
11#include "chrome/browser/signin/profile_oauth2_token_service.h"
12#include "chrome/browser/signin/profile_oauth2_token_service_factory.h"
13#include "components/browser_context_keyed_service/browser_context_dependency_manager.h"
14
15namespace policy {
16
17// static
18UserCloudPolicyTokenForwarderFactory*
19    UserCloudPolicyTokenForwarderFactory::GetInstance() {
20  return Singleton<UserCloudPolicyTokenForwarderFactory>::get();
21}
22
23UserCloudPolicyTokenForwarderFactory::UserCloudPolicyTokenForwarderFactory()
24    : BrowserContextKeyedServiceFactory(
25        "UserCloudPolicyTokenForwarder",
26        BrowserContextDependencyManager::GetInstance()) {
27  DependsOn(ProfileOAuth2TokenServiceFactory::GetInstance());
28  DependsOn(UserCloudPolicyManagerFactoryChromeOS::GetInstance());
29}
30
31UserCloudPolicyTokenForwarderFactory::~UserCloudPolicyTokenForwarderFactory() {}
32
33BrowserContextKeyedService*
34    UserCloudPolicyTokenForwarderFactory::BuildServiceInstanceFor(
35        content::BrowserContext* context) const {
36  Profile* profile = static_cast<Profile*>(context);
37  UserCloudPolicyManagerChromeOS* manager =
38      UserCloudPolicyManagerFactoryChromeOS::GetForProfile(profile);
39  ProfileOAuth2TokenService* token_service =
40      ProfileOAuth2TokenServiceFactory::GetForProfile(profile);
41  if (!token_service || !manager)
42    return NULL;
43  return new UserCloudPolicyTokenForwarder(manager, token_service);
44}
45
46bool UserCloudPolicyTokenForwarderFactory::
47ServiceIsCreatedWithBrowserContext() const {
48  // Create this object when the profile is created so it fetches the token
49  // during startup.
50  return true;
51}
52
53bool UserCloudPolicyTokenForwarderFactory::ServiceIsNULLWhileTesting() const {
54  // This is only needed in a handful of tests that manually create the object.
55  return true;
56}
57
58}  // namespace policy
59