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.
5 #ifndef CHROME_BROWSER_CHROMEOS_POLICY_USER_CLOUD_POLICY_TOKEN_FORWARDER_H_
6 #define CHROME_BROWSER_CHROMEOS_POLICY_USER_CLOUD_POLICY_TOKEN_FORWARDER_H_
8 #include "base/basictypes.h"
9 #include "chrome/browser/policy/cloud/cloud_policy_service.h"
10 #include "components/browser_context_keyed_service/browser_context_keyed_service.h"
11 #include "google_apis/gaia/oauth2_token_service.h"
13 class ProfileOAuth2TokenService
;
17 class UserCloudPolicyManagerChromeOS
;
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
24 class UserCloudPolicyTokenForwarder
: public BrowserContextKeyedService
,
25 public OAuth2TokenService::Observer
,
26 public OAuth2TokenService::Consumer
,
27 public CloudPolicyService::Observer
{
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
32 UserCloudPolicyTokenForwarder(UserCloudPolicyManagerChromeOS
* manager
,
33 ProfileOAuth2TokenService
* token_service
);
34 virtual ~UserCloudPolicyTokenForwarder();
36 // BrowserContextKeyedService:
37 virtual void Shutdown() OVERRIDE
;
39 // OAuth2TokenService::Observer:
40 virtual void OnRefreshTokenAvailable(const std::string
& account_id
) OVERRIDE
;
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
;
49 // CloudPolicyService::Observer:
50 virtual void OnInitializationCompleted(CloudPolicyService
* service
) OVERRIDE
;
55 void RequestAccessToken();
57 UserCloudPolicyManagerChromeOS
* manager_
;
58 ProfileOAuth2TokenService
* token_service_
;
59 scoped_ptr
<OAuth2TokenService::Request
> request_
;
61 DISALLOW_COPY_AND_ASSIGN(UserCloudPolicyTokenForwarder
);
66 #endif // CHROME_BROWSER_CHROMEOS_POLICY_USER_CLOUD_POLICY_TOKEN_FORWARDER_H_