Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(16)

Unified Diff: chromeos/network/network_connection_handler.cc

Issue 701863002: Trigger ConnectToBestNetwork in more cases. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@get_network_configs_from_policy
Patch Set: Moved autoconnect logic into a new handler. Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chromeos/network/network_connection_handler.cc
diff --git a/chromeos/network/network_connection_handler.cc b/chromeos/network/network_connection_handler.cc
index 018d924cef89fd59d9dd3a53cfb0151e1fe8c5ac..407f1c9157d8e6570f91edd22f31d3d812201065 100644
--- a/chromeos/network/network_connection_handler.cc
+++ b/chromeos/network/network_connection_handler.cc
@@ -152,9 +152,7 @@ NetworkConnectionHandler::NetworkConnectionHandler()
network_state_handler_(NULL),
configuration_handler_(NULL),
logged_in_(false),
- certificates_loaded_(false),
- applied_autoconnect_policy_(false),
- requested_connect_to_best_network_(false) {
+ certificates_loaded_(false) {
}
NetworkConnectionHandler::~NetworkConnectionHandler() {
@@ -191,11 +189,7 @@ void NetworkConnectionHandler::Init(
network_state_handler_->AddObserver(this, FROM_HERE);
}
configuration_handler_ = network_configuration_handler;
-
- if (managed_network_configuration_handler) {
- managed_configuration_handler_ = managed_network_configuration_handler;
- managed_configuration_handler_->AddObserver(this);
- }
+ managed_configuration_handler_ = managed_network_configuration_handler;
// After this point, the NetworkConnectionHandler is fully initialized (all
// handler references set, observers registered, ...).
@@ -204,6 +198,14 @@ void NetworkConnectionHandler::Init(
LoggedInStateChanged();
}
+void NetworkConnectionHandler::AddObserver(Observer* observer) {
+ observers_.AddObserver(observer);
+}
+
+void NetworkConnectionHandler::RemoveObserver(Observer* observer) {
+ observers_.RemoveObserver(observer);
+}
+
void NetworkConnectionHandler::LoggedInStateChanged() {
LoginState* login_state = LoginState::Get();
if (logged_in_ || !login_state->IsUserLoggedIn())
@@ -212,8 +214,6 @@ void NetworkConnectionHandler::LoggedInStateChanged() {
NET_LOG_EVENT("Logged In", "");
logged_in_ = true;
logged_in_time_ = base::TimeTicks::Now();
-
- DisconnectIfPolicyRequires();
}
void NetworkConnectionHandler::OnCertificatesLoaded(
@@ -221,20 +221,8 @@ void NetworkConnectionHandler::OnCertificatesLoaded(
bool initial_load) {
certificates_loaded_ = true;
NET_LOG_EVENT("Certificates Loaded", "");
- if (queued_connect_) {
+ if (queued_connect_)
ConnectToQueuedNetwork();
- } else if (initial_load) {
- // Connecting to the "best" available network requires certificates to be
- // loaded. Try to connect now.
- ConnectToBestNetworkAfterLogin();
- }
-}
-
-void NetworkConnectionHandler::PolicyChanged(const std::string& userhash) {
- // Ignore user policies.
- if (!userhash.empty())
- return;
- DisconnectIfPolicyRequires();
}
void NetworkConnectionHandler::ConnectToNetwork(
@@ -243,6 +231,8 @@ void NetworkConnectionHandler::ConnectToNetwork(
const network_handler::ErrorCallback& error_callback,
bool check_error_state) {
NET_LOG_USER("ConnectToNetwork", service_path);
+ FOR_EACH_OBSERVER(Observer, observers_, ConnectToNetworkRequested());
stevenjb 2014/11/07 17:19:06 As long as we are adding this we should pass the s
pneubeck (no reviews) 2014/11/08 16:49:55 Done.
+
// Clear any existing queued connect request.
queued_connect_.reset();
if (HasConnectingNetwork(service_path)) {
@@ -761,66 +751,4 @@ void NetworkConnectionHandler::HandleShillDisconnectSuccess(
success_callback.Run();
}
-void NetworkConnectionHandler::ConnectToBestNetworkAfterLogin() {
- if (requested_connect_to_best_network_ || !applied_autoconnect_policy_ ||
- !certificates_loaded_) {
- return;
- }
-
- requested_connect_to_best_network_ = true;
- network_state_handler_->ConnectToBestWifiNetwork();
-}
-
-void NetworkConnectionHandler::DisconnectIfPolicyRequires() {
- if (applied_autoconnect_policy_ || !LoginState::Get()->IsUserLoggedIn())
- return;
-
- const base::DictionaryValue* global_network_config =
- managed_configuration_handler_->GetGlobalConfigFromPolicy(std::string());
- if (!global_network_config)
- return;
-
- applied_autoconnect_policy_ = true;
-
- bool only_policy_autoconnect = false;
- global_network_config->GetBooleanWithoutPathExpansion(
- ::onc::global_network_config::kAllowOnlyPolicyNetworksToAutoconnect,
- &only_policy_autoconnect);
-
- if (only_policy_autoconnect)
- DisconnectFromUnmanagedSharedWiFiNetworks();
-
- ConnectToBestNetworkAfterLogin();
-}
-
-void NetworkConnectionHandler::DisconnectFromUnmanagedSharedWiFiNetworks() {
- NET_LOG_DEBUG("DisconnectFromUnmanagedSharedWiFiNetworks", "");
-
- NetworkStateHandler::NetworkStateList networks;
- network_state_handler_->GetVisibleNetworkListByType(
- NetworkTypePattern::Wireless(), &networks);
- for (NetworkStateHandler::NetworkStateList::const_iterator it =
- networks.begin();
- it != networks.end();
- ++it) {
- const NetworkState* network = *it;
- if (!(network->IsConnectingState() || network->IsConnectedState()))
- break; // Connected and connecting networks are listed first.
-
- if (network->IsPrivate())
- continue;
-
- const bool network_is_policy_managed =
- !network->profile_path().empty() && !network->guid().empty() &&
- managed_configuration_handler_->FindPolicyByGuidAndProfile(
- network->guid(), network->profile_path());
- if (network_is_policy_managed)
- continue;
-
- NET_LOG_EVENT("Disconnect Forced by Policy", network->path());
- CallShillDisconnect(
- network->path(), base::Closure(), network_handler::ErrorCallback());
- }
-}
-
} // namespace chromeos

Powered by Google App Engine
This is Rietveld 408576698