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

Unified Diff: chromeos/network/auto_connect_handler.h

Issue 701863002: Trigger ConnectToBestNetwork in more cases. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@get_network_configs_from_policy
Patch Set: Fixed destruction order in NetworkHandler. 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
« no previous file with comments | « chromeos/chromeos.gyp ('k') | chromeos/network/auto_connect_handler.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chromeos/network/auto_connect_handler.h
diff --git a/chromeos/network/auto_connect_handler.h b/chromeos/network/auto_connect_handler.h
new file mode 100644
index 0000000000000000000000000000000000000000..3d0eb54ac6e4004291f7210bedd6b2e58331ae53
--- /dev/null
+++ b/chromeos/network/auto_connect_handler.h
@@ -0,0 +1,108 @@
+// Copyright 2014 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 CHROMEOS_NETWORK_AUTO_CONNECT_HANDLER_H_
+#define CHROMEOS_NETWORK_AUTO_CONNECT_HANDLER_H_
+
+#include <string>
+
+#include "base/macros.h"
+#include "chromeos/chromeos_export.h"
+#include "chromeos/login/login_state.h"
+#include "chromeos/network/client_cert_resolver.h"
+#include "chromeos/network/network_connection_handler.h"
+#include "chromeos/network/network_handler.h"
+#include "chromeos/network/network_policy_observer.h"
+
+namespace chromeos {
+
+class CHROMEOS_EXPORT AutoConnectHandler
+ : public LoginState::Observer,
+ public NetworkPolicyObserver,
+ public NetworkConnectionHandler::Observer,
+ public ClientCertResolver::Observer {
+ public:
+ ~AutoConnectHandler() override;
+
+ // LoginState::Observer
+ void LoggedInStateChanged() override;
+
+ // NetworkConnectionHandler::Observer
+ void ConnectToNetworkRequested(const std::string& service_path) override;
+
+ // NetworkPolicyObserver
+ void PoliciesChanged(const std::string& userhash) override;
+ void PoliciesApplied(const std::string& userhash) override;
+
+ // ClientCertResolver::Observer
+ void ResolveRequestCompleted(bool network_properties_changed) override;
+
+ private:
+ friend class NetworkHandler;
+ friend class AutoConnectHandlerTest;
+
+ AutoConnectHandler();
+
+ void Init(ClientCertResolver* client_cert_resolver,
+ NetworkConnectionHandler* network_connection_handler,
+ NetworkStateHandler* network_state_handler,
+ ManagedNetworkConfigurationHandler*
+ managed_network_configuration_handler);
+
+ // If the user logged in already and the policy to prevent unmanaged & shared
+ // networks to autoconnect is enabled, then disconnects all such networks
+ // except wired networks. It will do this only once after the user logged in
+ // and the device policy was available.
+ // This is enforced once after a user logs in 1) to allow mananged networks to
+ // autoconnect and 2) to prevent a previous user from foisting a network on
+ // the new user. Therefore, this function is called at login and when the
+ // device policy is changed.
+ void DisconnectIfPolicyRequires();
+
+ // Disconnects from all unmanaged and shared WiFi networks that are currently
+ // connected or connecting.
+ void DisconnectFromUnmanagedSharedWiFiNetworks();
+
+ // Requests and if possible connects to the 'best' available network, see
+ // CheckBestConnection().
+ void RequestBestConnection();
+
+ // If a request to connect to the best network is pending and all requirements
+ // are fulfilled (like policy loaded, certificate patterns being resolved),
+ // then this will call ConnectToBestWifiNetwork of |network_state_handler_|.
+ void CheckBestConnection();
+
+ // Local references to the associated handler instances.
+ ClientCertResolver* client_cert_resolver_;
+ NetworkConnectionHandler* network_connection_handler_;
+ NetworkStateHandler* network_state_handler_;
+ ManagedNetworkConfigurationHandler* managed_configuration_handler_;
+
+ // Whether a request to connect to the best network is pending. If true, once
+ // all requirements are met (like policy loaded, certificate patterns being
+ // resolved), the request is forwarded to the |network_state_handler_|.
+ bool request_best_connection_pending_;
+
+ // Whether the device policy, which might be empty, is already applied.
+ bool device_policy_applied_;
+
+ // Whether the user policy of the first user who logged in is already applied.
+ // The policy might be empty.
+ bool user_policy_applied_;
+
+ // Whether at least once client certificate patterns were checked and if any
+ // existed resolved. Even if there are no certificate patterns, this will be
+ // eventually true.
+ bool client_certs_resolved_;
+
+ // Whether the autoconnect policy was applied already, see
+ // DisconnectIfPolicyRequires().
+ bool applied_autoconnect_policy_;
+
+ DISALLOW_COPY_AND_ASSIGN(AutoConnectHandler);
+};
+
+} // namespace chromeos
+
+#endif // CHROMEOS_NETWORK_AUTO_CONNECT_HANDLER_H_
« no previous file with comments | « chromeos/chromeos.gyp ('k') | chromeos/network/auto_connect_handler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698