user_cloud_policy_token_forwarder.h revision a1401311d1ab56c4ed0a474bd38c108f75cb0cd9
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#ifndef CHROME_BROWSER_CHROMEOS_POLICY_USER_CLOUD_POLICY_TOKEN_FORWARDER_H_ 6#define CHROME_BROWSER_CHROMEOS_POLICY_USER_CLOUD_POLICY_TOKEN_FORWARDER_H_ 7 8#include "base/basictypes.h" 9#include "components/keyed_service/core/keyed_service.h" 10#include "components/policy/core/common/cloud/cloud_policy_service.h" 11#include "google_apis/gaia/oauth2_token_service.h" 12 13class ProfileOAuth2TokenService; 14class SigninManagerBase; 15 16namespace policy { 17 18class UserCloudPolicyManagerChromeOS; 19 20// A PKS that observes a ProfileOAuth2TokenService and mints the policy access 21// token for the UserCloudPolicyManagerChromeOS, when the token service becomes 22// ready. This service decouples the UserCloudPolicyManagerChromeOS from 23// depending directly on the ProfileOAuth2TokenService, since it is initialized 24// much earlier. 25class UserCloudPolicyTokenForwarder : public KeyedService, 26 public OAuth2TokenService::Observer, 27 public OAuth2TokenService::Consumer, 28 public CloudPolicyService::Observer { 29 public: 30 // The factory of this PKS depends on the factories of these two arguments, 31 // so this object will be Shutdown() first and these pointers can be used 32 // until that point. 33 UserCloudPolicyTokenForwarder(UserCloudPolicyManagerChromeOS* manager, 34 ProfileOAuth2TokenService* token_service, 35 SigninManagerBase* signin_manager); 36 virtual ~UserCloudPolicyTokenForwarder(); 37 38 // KeyedService: 39 virtual void Shutdown() OVERRIDE; 40 41 // OAuth2TokenService::Observer: 42 virtual void OnRefreshTokenAvailable(const std::string& account_id) OVERRIDE; 43 44 // OAuth2TokenService::Consumer: 45 virtual void OnGetTokenSuccess(const OAuth2TokenService::Request* request, 46 const std::string& access_token, 47 const base::Time& expiration_time) OVERRIDE; 48 virtual void OnGetTokenFailure(const OAuth2TokenService::Request* request, 49 const GoogleServiceAuthError& error) OVERRIDE; 50 51 // CloudPolicyService::Observer: 52 virtual void OnInitializationCompleted(CloudPolicyService* service) OVERRIDE; 53 54 private: 55 void Initialize(); 56 57 void RequestAccessToken(); 58 59 UserCloudPolicyManagerChromeOS* manager_; 60 ProfileOAuth2TokenService* token_service_; 61 SigninManagerBase* signin_manager_; 62 scoped_ptr<OAuth2TokenService::Request> request_; 63 64 DISALLOW_COPY_AND_ASSIGN(UserCloudPolicyTokenForwarder); 65}; 66 67} // namespace policy 68 69#endif // CHROME_BROWSER_CHROMEOS_POLICY_USER_CLOUD_POLICY_TOKEN_FORWARDER_H_ 70