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() {
EXPECT_CALL(*user_manager_, Shutdown()).Times(1);
EXPECT_CALL(*user_manager_, RemoveSessionStateObserver(_)).Times(1);
profile_.reset();
// Finish any pending tasks before deleting the TestingBrowserProcess.
thread_bundle_.RunUntilIdle();
TestingBrowserProcess::DeleteInstance();
}
......
......@@ -142,6 +142,7 @@
#include "components/user_manager/user_type.h"
#include "components/version_info/version_info.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/storage_partition.h"
#include "content/public/common/content_switches.h"
......@@ -506,6 +507,7 @@ void UserSessionManager::MaybeAppendPolicySwitches(
UserSessionManager::UserSessionManager()
: delegate_(nullptr),
network_connection_tracker_(nullptr),
authenticator_(nullptr),
has_auth_cookies_(false),
user_sessions_restored_(false),
......@@ -518,9 +520,11 @@ UserSessionManager::UserSessionManager()
waiting_for_child_account_status_(false),
attempt_restart_closure_(base::BindRepeating(&CallChromeAttemptRestart)),
weak_factory_(this) {
net::NetworkChangeNotifier::AddNetworkChangeObserver(this);
user_manager::UserManager::Get()->AddSessionStateObserver(this);
user_manager::UserManager::Get()->AddObserver(this);
content::GetNetworkConnectionTrackerFromUIThread(
base::BindOnce(&UserSessionManager::SetNetworkConnectionTracker,
weak_factory_.GetWeakPtr()));
}
UserSessionManager::~UserSessionManager() {
......@@ -532,7 +536,13 @@ UserSessionManager::~UserSessionManager() {
user_manager::UserManager::Get()->RemoveSessionStateObserver(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(
......@@ -670,7 +680,8 @@ void UserSessionManager::RestoreAuthenticationSession(Profile* user_profile) {
account_id_valid);
DCHECK(user);
if (!net::NetworkChangeNotifier::IsOffline()) {
if (network_connection_tracker_ &&
!network_connection_tracker_->IsOffline()) {
pending_signin_restore_sessions_.erase(user->GetAccountId().GetUserEmail());
RestoreAuthSessionImpl(user_profile, false /* has_auth_cookies */);
} else {
......@@ -1023,10 +1034,10 @@ void UserSessionManager::OnSessionRestoreStateChanged(
ProfileHelper::Get()->FlushProfile(user_profile);
}
void UserSessionManager::OnNetworkChanged(
net::NetworkChangeNotifier::ConnectionType type) {
void UserSessionManager::OnConnectionChanged(
network::mojom::ConnectionType type) {
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->IsLoggedInAsUserWithGaiaAccount() ||
user_manager->IsLoggedInAsStub() || IsRunningTest()) {
......
......@@ -34,7 +34,7 @@
#include "components/arc/net/always_on_vpn_manager.h"
#include "components/user_manager/user.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"
class AccountId;
......@@ -91,7 +91,7 @@ class UserSessionStateObserver {
// load profile, restore OAuth authentication session etc.
class UserSessionManager
: public OAuth2LoginManager::Observer,
public net::NetworkChangeNotifier::NetworkChangeObserver,
public network::NetworkConnectionTracker::NetworkConnectionObserver,
public base::SupportsWeakPtr<UserSessionManager>,
public UserSessionManagerDelegate,
public user_manager::UserManager::UserSessionStateObserver,
......@@ -321,14 +321,16 @@ class UserSessionManager
UserSessionManager();
~UserSessionManager() override;
void SetNetworkConnectionTracker(
network::NetworkConnectionTracker* network_connection_tracker);
// OAuth2LoginManager::Observer overrides:
void OnSessionRestoreStateChanged(
Profile* user_profile,
OAuth2LoginManager::SessionRestoreState state) override;
// net::NetworkChangeNotifier::NetworkChangeObserver overrides:
void OnNetworkChanged(
net::NetworkChangeNotifier::ConnectionType type) override;
// network::NetworkConnectionTracker::NetworkConnectionObserver overrides:
void OnConnectionChanged(network::mojom::ConnectionType type) override;
// UserSessionManagerDelegate overrides:
// Used when restoring user sessions after crash.
......@@ -516,6 +518,9 @@ class UserSessionManager
UserSessionManagerDelegate* delegate_;
// Used to listen to network changes.
network::NetworkConnectionTracker* network_connection_tracker_;
// Authentication/user context.
UserContext user_context_;
scoped_refptr<Authenticator> authenticator_;
......
......@@ -144,6 +144,8 @@ class ExtensionDataCollectionTest : public testing::Test {
// UserManager should be destroyed before TestingBrowserProcess as it
// uses it in destructor.
test_user_manager_.reset();
// Finish any pending tasks before deleting the TestingBrowserProcess.
browser_thread_bundle_.RunUntilIdle();
#endif
profile_manager_.reset();
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