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