Chromium Code Reviews| Index: chrome/browser/chromeos/authpolicy/auth_policy_credentials_manager.h | 
| diff --git a/chrome/browser/chromeos/authpolicy/auth_policy_credentials_manager.h b/chrome/browser/chromeos/authpolicy/auth_policy_credentials_manager.h | 
| new file mode 100644 | 
| index 0000000000000000000000000000000000000000..40a704fa765f53ac8cf8928cbda3a57323a4a84d | 
| --- /dev/null | 
| +++ b/chrome/browser/chromeos/authpolicy/auth_policy_credentials_manager.h | 
| @@ -0,0 +1,105 @@ | 
| +// Copyright 2017 The Chromium Authors. All rights reserved. | 
| +// Use of this source code is governed by a BSD-style license that can be | 
| +// found in the LICENSE file. | 
| + | 
| +#ifndef CHROME_BROWSER_CHROMEOS_AUTHPOLICY_AUTH_POLICY_CREDENTIALS_MANAGER_H_ | 
| +#define CHROME_BROWSER_CHROMEOS_AUTHPOLICY_AUTH_POLICY_CREDENTIALS_MANAGER_H_ | 
| + | 
| +#include "base/cancelable_callback.h" | 
| +#include "base/memory/weak_ptr.h" | 
| +#include "chromeos/dbus/authpolicy/active_directory_info.pb.h" | 
| +#include "chromeos/network/network_state_handler_observer.h" | 
| +#include "components/keyed_service/content/browser_context_keyed_service_factory.h" | 
| +#include "components/keyed_service/core/keyed_service.h" | 
| +#include "components/signin/core/account_id/account_id.h" | 
| +#include "third_party/cros_system_api/dbus/service_constants.h" | 
| + | 
| +class Profile; | 
| + | 
| +namespace authpolicy { | 
| +class ActiveDirectoryUserStatus; | 
| +} | 
| + | 
| +namespace base { | 
| +template <typename T> | 
| +struct DefaultSingletonTraits; | 
| +} // namespace base | 
| + | 
| +// A service responsible to track user credential status. Created for each | 
| 
 
ljusten (tachyonic)
2017/05/19 16:06:13
"for tracking" - "to" can only be used with a pers
 
Roman Sorokin (ftl)
2017/05/22 12:35:27
Done.
 
 | 
| +// Active Directory user profile. | 
| +class AuthPolicyCredentialsManager | 
| + : public KeyedService, | 
| + public chromeos::NetworkStateHandlerObserver { | 
| + public: | 
| + explicit AuthPolicyCredentialsManager(Profile* profile); | 
| + ~AuthPolicyCredentialsManager() override; | 
| + | 
| + // KeyedService overrides. | 
| + void Shutdown() override; | 
| + | 
| + // chromeos::NetworkStateHandlerObserver overrides. | 
| + void DefaultNetworkChanged(const chromeos::NetworkState* network) override; | 
| + void NetworkConnectionStateChanged( | 
| + const chromeos::NetworkState* network) override; | 
| + void OnShuttingDown() override; | 
| + | 
| + private: | 
| + // Calls AuthPolicyClient::GetUserStatus method. | 
| + void GetUserStatus(); | 
| + // See AuthPolicyClient::GetUserStatusCallback. | 
| + void OnGetUserStatusCallback( | 
| + authpolicy::ErrorType error, | 
| + const authpolicy::ActiveDirectoryUserStatus& user_status); | 
| + // Post delayed task to call GetUserStatus in the future. | 
| + void ScheduleGetUserStatus(); | 
| + | 
| + // Add itself as network observer. | 
| + void StartObserveNetwork(); | 
| + // Remove itself as network observer. | 
| + void StopObserveNetwork(); | 
| + | 
| + // Update display and given name in case it has changed. | 
| + void UpdateDisplayAndGivenName( | 
| + const authpolicy::ActiveDirectoryAccountInfo& account_info); | 
| + | 
| + // Shows user notification to sign out/sign in. | 
| + void ShowNotification(int message_id) const; | 
| + | 
| + // Call GetUserStatus if |network_state| is connected and previous call | 
| 
 
ljusten (tachyonic)
2017/05/19 16:06:13
*the* previous call
 
Roman Sorokin (ftl)
2017/05/22 12:35:27
Done.
 
 | 
| + // failed. | 
| + void GetUserStatusIfConnected(const chromeos::NetworkState* network_state); | 
| + | 
| + Profile* profile_; | 
| + AccountId account_id_; | 
| + std::string display_name_, given_name_; | 
| + bool should_call_get_status_again_ = false; | 
| + authpolicy::ErrorType last_error_ = authpolicy::ERROR_UNKNOWN; | 
| + base::CancelableClosure scheduled_get_user_status_call_; | 
| + | 
| + base::WeakPtrFactory<AuthPolicyCredentialsManager> weak_factory_; | 
| + DISALLOW_COPY_AND_ASSIGN(AuthPolicyCredentialsManager); | 
| +}; | 
| + | 
| +// Singleton that owns all AuthPolicyCredentialsManagers and associates them | 
| +// with BrowserContexts. | 
| +class AuthPolicyCredentialsManagerFactory | 
| + : public BrowserContextKeyedServiceFactory { | 
| + public: | 
| + static AuthPolicyCredentialsManagerFactory* GetInstance(); | 
| + | 
| + static void BuildForProfileIfActiveDirectory(Profile* profile); | 
| + | 
| + private: | 
| + friend struct base::DefaultSingletonTraits< | 
| + AuthPolicyCredentialsManagerFactory>; | 
| + | 
| + AuthPolicyCredentialsManagerFactory(); | 
| + ~AuthPolicyCredentialsManagerFactory() override; | 
| + | 
| + KeyedService* BuildServiceInstanceFor( | 
| + content::BrowserContext* context) const override; | 
| + | 
| + DISALLOW_COPY_AND_ASSIGN(AuthPolicyCredentialsManagerFactory); | 
| +}; | 
| + | 
| +#endif // CHROME_BROWSER_CHROMEOS_AUTHPOLICY_AUTH_POLICY_CREDENTIALS_MANAGER_H_ |