Commit 855f4a50 authored by Robbie McElrath's avatar Robbie McElrath Committed by Commit Bot

Migrate chromeos::UserSessionManager to NetworkConnectionTracker

This migrates chromeos::UserSessionManager from NetworkChangeNotifier to
NetworkConnectionTracker, which works with the network service enabled.

Bug: 887047
Change-Id: I814311aa08ab2dafa7bf9b4ac59b3dab0e0a984e
Reviewed-on: https://chromium-review.googlesource.com/c/1237553
Commit-Queue: Robbie McElrath <rmcelrath@chromium.org>
Reviewed-by: default avatarproberge <proberge@chromium.org>
Reviewed-by: default avatarXiyuan Xia <xiyuan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#632382}
parent 0e35e4e7
...@@ -86,6 +86,8 @@ SAMLOfflineSigninLimiterTest::~SAMLOfflineSigninLimiterTest() { ...@@ -86,6 +86,8 @@ SAMLOfflineSigninLimiterTest::~SAMLOfflineSigninLimiterTest() {
EXPECT_CALL(*user_manager_, Shutdown()).Times(1); EXPECT_CALL(*user_manager_, Shutdown()).Times(1);
EXPECT_CALL(*user_manager_, RemoveSessionStateObserver(_)).Times(1); EXPECT_CALL(*user_manager_, RemoveSessionStateObserver(_)).Times(1);
profile_.reset(); profile_.reset();
// Finish any pending tasks before deleting the TestingBrowserProcess.
thread_bundle_.RunUntilIdle();
TestingBrowserProcess::DeleteInstance(); TestingBrowserProcess::DeleteInstance();
} }
......
...@@ -142,6 +142,7 @@ ...@@ -142,6 +142,7 @@
#include "components/user_manager/user_type.h" #include "components/user_manager/user_type.h"
#include "components/version_info/version_info.h" #include "components/version_info/version_info.h"
#include "content/public/browser/browser_thread.h" #include "content/public/browser/browser_thread.h"
#include "content/public/browser/network_service_instance.h"
#include "content/public/browser/notification_service.h" #include "content/public/browser/notification_service.h"
#include "content/public/browser/storage_partition.h" #include "content/public/browser/storage_partition.h"
#include "content/public/common/content_switches.h" #include "content/public/common/content_switches.h"
...@@ -506,6 +507,7 @@ void UserSessionManager::MaybeAppendPolicySwitches( ...@@ -506,6 +507,7 @@ void UserSessionManager::MaybeAppendPolicySwitches(
UserSessionManager::UserSessionManager() UserSessionManager::UserSessionManager()
: delegate_(nullptr), : delegate_(nullptr),
network_connection_tracker_(nullptr),
authenticator_(nullptr), authenticator_(nullptr),
has_auth_cookies_(false), has_auth_cookies_(false),
user_sessions_restored_(false), user_sessions_restored_(false),
...@@ -518,9 +520,11 @@ UserSessionManager::UserSessionManager() ...@@ -518,9 +520,11 @@ UserSessionManager::UserSessionManager()
waiting_for_child_account_status_(false), waiting_for_child_account_status_(false),
attempt_restart_closure_(base::BindRepeating(&CallChromeAttemptRestart)), attempt_restart_closure_(base::BindRepeating(&CallChromeAttemptRestart)),
weak_factory_(this) { weak_factory_(this) {
net::NetworkChangeNotifier::AddNetworkChangeObserver(this);
user_manager::UserManager::Get()->AddSessionStateObserver(this); user_manager::UserManager::Get()->AddSessionStateObserver(this);
user_manager::UserManager::Get()->AddObserver(this); user_manager::UserManager::Get()->AddObserver(this);
content::GetNetworkConnectionTrackerFromUIThread(
base::BindOnce(&UserSessionManager::SetNetworkConnectionTracker,
weak_factory_.GetWeakPtr()));
} }
UserSessionManager::~UserSessionManager() { UserSessionManager::~UserSessionManager() {
...@@ -532,7 +536,13 @@ UserSessionManager::~UserSessionManager() { ...@@ -532,7 +536,13 @@ UserSessionManager::~UserSessionManager() {
user_manager::UserManager::Get()->RemoveSessionStateObserver(this); user_manager::UserManager::Get()->RemoveSessionStateObserver(this);
user_manager::UserManager::Get()->RemoveObserver(this); user_manager::UserManager::Get()->RemoveObserver(this);
} }
net::NetworkChangeNotifier::RemoveNetworkChangeObserver(this); }
void UserSessionManager::SetNetworkConnectionTracker(
network::NetworkConnectionTracker* network_connection_tracker) {
DCHECK(network_connection_tracker);
network_connection_tracker_ = network_connection_tracker;
network_connection_tracker_->AddLeakyNetworkConnectionObserver(this);
} }
void UserSessionManager::SetShouldObtainHandleInTests( void UserSessionManager::SetShouldObtainHandleInTests(
...@@ -670,7 +680,8 @@ void UserSessionManager::RestoreAuthenticationSession(Profile* user_profile) { ...@@ -670,7 +680,8 @@ void UserSessionManager::RestoreAuthenticationSession(Profile* user_profile) {
account_id_valid); account_id_valid);
DCHECK(user); DCHECK(user);
if (!net::NetworkChangeNotifier::IsOffline()) { if (network_connection_tracker_ &&
!network_connection_tracker_->IsOffline()) {
pending_signin_restore_sessions_.erase(user->GetAccountId().GetUserEmail()); pending_signin_restore_sessions_.erase(user->GetAccountId().GetUserEmail());
RestoreAuthSessionImpl(user_profile, false /* has_auth_cookies */); RestoreAuthSessionImpl(user_profile, false /* has_auth_cookies */);
} else { } else {
...@@ -1023,10 +1034,10 @@ void UserSessionManager::OnSessionRestoreStateChanged( ...@@ -1023,10 +1034,10 @@ void UserSessionManager::OnSessionRestoreStateChanged(
ProfileHelper::Get()->FlushProfile(user_profile); ProfileHelper::Get()->FlushProfile(user_profile);
} }
void UserSessionManager::OnNetworkChanged( void UserSessionManager::OnConnectionChanged(
net::NetworkChangeNotifier::ConnectionType type) { network::mojom::ConnectionType type) {
user_manager::UserManager* user_manager = user_manager::UserManager::Get(); user_manager::UserManager* user_manager = user_manager::UserManager::Get();
if (type == net::NetworkChangeNotifier::CONNECTION_NONE || if (type == network::mojom::ConnectionType::CONNECTION_NONE ||
!user_manager->IsUserLoggedIn() || !user_manager->IsUserLoggedIn() ||
!user_manager->IsLoggedInAsUserWithGaiaAccount() || !user_manager->IsLoggedInAsUserWithGaiaAccount() ||
user_manager->IsLoggedInAsStub() || IsRunningTest()) { user_manager->IsLoggedInAsStub() || IsRunningTest()) {
......
...@@ -34,7 +34,7 @@ ...@@ -34,7 +34,7 @@
#include "components/arc/net/always_on_vpn_manager.h" #include "components/arc/net/always_on_vpn_manager.h"
#include "components/user_manager/user.h" #include "components/user_manager/user.h"
#include "components/user_manager/user_manager.h" #include "components/user_manager/user_manager.h"
#include "net/base/network_change_notifier.h" #include "services/network/public/cpp/network_connection_tracker.h"
#include "ui/base/ime/chromeos/input_method_manager.h" #include "ui/base/ime/chromeos/input_method_manager.h"
class AccountId; class AccountId;
...@@ -91,7 +91,7 @@ class UserSessionStateObserver { ...@@ -91,7 +91,7 @@ class UserSessionStateObserver {
// load profile, restore OAuth authentication session etc. // load profile, restore OAuth authentication session etc.
class UserSessionManager class UserSessionManager
: public OAuth2LoginManager::Observer, : public OAuth2LoginManager::Observer,
public net::NetworkChangeNotifier::NetworkChangeObserver, public network::NetworkConnectionTracker::NetworkConnectionObserver,
public base::SupportsWeakPtr<UserSessionManager>, public base::SupportsWeakPtr<UserSessionManager>,
public UserSessionManagerDelegate, public UserSessionManagerDelegate,
public user_manager::UserManager::UserSessionStateObserver, public user_manager::UserManager::UserSessionStateObserver,
...@@ -321,14 +321,16 @@ class UserSessionManager ...@@ -321,14 +321,16 @@ class UserSessionManager
UserSessionManager(); UserSessionManager();
~UserSessionManager() override; ~UserSessionManager() override;
void SetNetworkConnectionTracker(
network::NetworkConnectionTracker* network_connection_tracker);
// OAuth2LoginManager::Observer overrides: // OAuth2LoginManager::Observer overrides:
void OnSessionRestoreStateChanged( void OnSessionRestoreStateChanged(
Profile* user_profile, Profile* user_profile,
OAuth2LoginManager::SessionRestoreState state) override; OAuth2LoginManager::SessionRestoreState state) override;
// net::NetworkChangeNotifier::NetworkChangeObserver overrides: // network::NetworkConnectionTracker::NetworkConnectionObserver overrides:
void OnNetworkChanged( void OnConnectionChanged(network::mojom::ConnectionType type) override;
net::NetworkChangeNotifier::ConnectionType type) override;
// UserSessionManagerDelegate overrides: // UserSessionManagerDelegate overrides:
// Used when restoring user sessions after crash. // Used when restoring user sessions after crash.
...@@ -516,6 +518,9 @@ class UserSessionManager ...@@ -516,6 +518,9 @@ class UserSessionManager
UserSessionManagerDelegate* delegate_; UserSessionManagerDelegate* delegate_;
// Used to listen to network changes.
network::NetworkConnectionTracker* network_connection_tracker_;
// Authentication/user context. // Authentication/user context.
UserContext user_context_; UserContext user_context_;
scoped_refptr<Authenticator> authenticator_; scoped_refptr<Authenticator> authenticator_;
......
...@@ -144,6 +144,8 @@ class ExtensionDataCollectionTest : public testing::Test { ...@@ -144,6 +144,8 @@ class ExtensionDataCollectionTest : public testing::Test {
// UserManager should be destroyed before TestingBrowserProcess as it // UserManager should be destroyed before TestingBrowserProcess as it
// uses it in destructor. // uses it in destructor.
test_user_manager_.reset(); test_user_manager_.reset();
// Finish any pending tasks before deleting the TestingBrowserProcess.
browser_thread_bundle_.RunUntilIdle();
#endif #endif
profile_manager_.reset(); profile_manager_.reset();
TestingBrowserProcess::DeleteInstance(); TestingBrowserProcess::DeleteInstance();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment