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..81a024cbbdb2fb9ed2a00a6275b89a2e3365c7c0 |
| --- /dev/null |
| +++ b/chrome/browser/chromeos/authpolicy/auth_policy_credentials_manager.h |
| @@ -0,0 +1,111 @@ |
| +// 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 for tracking user credential status. Created for each |
| +// 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); |
| + |
| + // Call GetUserStatus if |network_state| is connected and the previous call |
| + // failed. |
| + void GetUserStatusIfConnected(const chromeos::NetworkState* network_state); |
| + |
| + Profile* profile_; |
|
xiyuan
2017/05/30 17:32:58
nit: Profile* const profile_;
Roman Sorokin (ftl)
2017/05/31 15:37:10
Unfortunately this function https://cs.chromium.or
xiyuan
2017/05/31 15:41:59
I mean "Profile* const" since |profile_| always po
Roman Sorokin (ftl)
2017/06/01 09:31:44
Ah, my bad. Thanks!
|
| + AccountId account_id_; |
| + std::string display_name_, given_name_; |
|
xiyuan
2017/05/30 17:32:58
nit: split this to declare each field on its own l
Roman Sorokin (ftl)
2017/05/31 15:37:10
Done.
|
| + bool rerun_get_status_on_error_ = false; |
| + |
| + // Stores message ids of shown notifications. Each notification is shown at |
| + // most once. |
| + std::set<int> shown_notifications_; |
|
xiyuan
2017/05/30 17:32:58
nit: #include <set>
Roman Sorokin (ftl)
2017/05/31 15:37:10
Done.
|
| + authpolicy::ErrorType last_error_ = authpolicy::ERROR_NONE; |
| + base::CancelableClosure scheduled_get_user_status_call_; |
| + |
| + base::WeakPtrFactory<AuthPolicyCredentialsManager> weak_factory_{this}; |
| + 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_ |