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