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_ |