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

Side by Side Diff: chromeos/network/network_connection_handler.cc

Issue 14729017: Add NetworkHandler to own network handlers in src/chromeos/network (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix chromeos_unittests Created 7 years, 7 months 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chromeos/network/network_connection_handler.h" 5 #include "chromeos/network/network_connection_handler.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/json/json_reader.h" 9 #include "base/json/json_reader.h"
10 #include "chromeos/chromeos_switches.h" 10 #include "chromeos/chromeos_switches.h"
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
104 scoped_refptr<net::X509Certificate> matching_cert = 104 scoped_refptr<net::X509Certificate> matching_cert =
105 certificate_pattern::GetCertificateMatch( 105 certificate_pattern::GetCertificateMatch(
106 ui_data->certificate_pattern()); 106 ui_data->certificate_pattern());
107 if (!matching_cert.get()) 107 if (!matching_cert.get())
108 return false; 108 return false;
109 return true; 109 return true;
110 } 110 }
111 111
112 } // namespace 112 } // namespace
113 113
114 static NetworkConnectionHandler* g_connection_handler_instance = NULL;
115
116 const char NetworkConnectionHandler::kErrorNotFound[] = "not-found"; 114 const char NetworkConnectionHandler::kErrorNotFound[] = "not-found";
117 const char NetworkConnectionHandler::kErrorConnected[] = "connected"; 115 const char NetworkConnectionHandler::kErrorConnected[] = "connected";
118 const char NetworkConnectionHandler::kErrorConnecting[] = "connecting"; 116 const char NetworkConnectionHandler::kErrorConnecting[] = "connecting";
119 const char NetworkConnectionHandler::kErrorNotConnected[] = "not-connected"; 117 const char NetworkConnectionHandler::kErrorNotConnected[] = "not-connected";
120 const char NetworkConnectionHandler::kErrorPassphraseRequired[] = 118 const char NetworkConnectionHandler::kErrorPassphraseRequired[] =
121 "passphrase-required"; 119 "passphrase-required";
122 const char NetworkConnectionHandler::kErrorActivationRequired[] = 120 const char NetworkConnectionHandler::kErrorActivationRequired[] =
123 "activation-required"; 121 "activation-required";
124 const char NetworkConnectionHandler::kErrorCertificateRequired[] = 122 const char NetworkConnectionHandler::kErrorCertificateRequired[] =
125 "certificate-required"; 123 "certificate-required";
126 const char NetworkConnectionHandler::kErrorConfigurationRequired[] = 124 const char NetworkConnectionHandler::kErrorConfigurationRequired[] =
127 "configuration-required"; 125 "configuration-required";
128 const char NetworkConnectionHandler::kErrorShillError[] = "shill-error"; 126 const char NetworkConnectionHandler::kErrorShillError[] = "shill-error";
129 127
130 // static 128 NetworkConnectionHandler::NetworkConnectionHandler()
131 void NetworkConnectionHandler::Initialize() { 129 : network_state_handler_(NULL),
132 CHECK(!g_connection_handler_instance); 130 network_configuration_handler_(NULL) {
133 g_connection_handler_instance = new NetworkConnectionHandler;
134 }
135
136 // static
137 void NetworkConnectionHandler::Shutdown() {
138 CHECK(g_connection_handler_instance);
139 delete g_connection_handler_instance;
140 g_connection_handler_instance = NULL;
141 }
142
143 // static
144 NetworkConnectionHandler* NetworkConnectionHandler::Get() {
145 CHECK(g_connection_handler_instance)
146 << "NetworkConnectionHandler::Get() called before Initialize()";
147 return g_connection_handler_instance;
148 }
149
150 NetworkConnectionHandler::NetworkConnectionHandler() {
151 const char* new_handlers_enabled = 131 const char* new_handlers_enabled =
152 CommandLine::ForCurrentProcess()->HasSwitch( 132 CommandLine::ForCurrentProcess()->HasSwitch(
153 chromeos::switches::kUseNewNetworkConfigurationHandlers) ? 133 chromeos::switches::kUseNewNetworkConfigurationHandlers) ?
154 "enabled" : "disabled"; 134 "enabled" : "disabled";
155 NET_LOG_EVENT("NewNetworkConfigurationHandlers", new_handlers_enabled); 135 NET_LOG_EVENT("NewNetworkConfigurationHandlers", new_handlers_enabled);
156 } 136 }
157 137
158 NetworkConnectionHandler::~NetworkConnectionHandler() { 138 NetworkConnectionHandler::~NetworkConnectionHandler() {
159 } 139 }
160 140
141 void NetworkConnectionHandler::Init(
142 NetworkStateHandler* network_state_handler,
143 NetworkConfigurationHandler* network_configuration_handler) {
144 network_state_handler_ = network_state_handler;
145 network_configuration_handler_ = network_configuration_handler;
146 }
147
161 void NetworkConnectionHandler::ConnectToNetwork( 148 void NetworkConnectionHandler::ConnectToNetwork(
162 const std::string& service_path, 149 const std::string& service_path,
163 const base::Closure& success_callback, 150 const base::Closure& success_callback,
164 const network_handler::ErrorCallback& error_callback, 151 const network_handler::ErrorCallback& error_callback,
165 bool ignore_error_state) { 152 bool ignore_error_state) {
166 const NetworkState* network = 153 const NetworkState* network =
167 NetworkStateHandler::Get()->GetNetworkState(service_path); 154 network_state_handler_->GetNetworkState(service_path);
168 if (!network) { 155 if (!network) {
169 InvokeErrorCallback(service_path, error_callback, kErrorNotFound); 156 InvokeErrorCallback(service_path, error_callback, kErrorNotFound);
170 return; 157 return;
171 } 158 }
172 if (network->IsConnectedState()) { 159 if (network->IsConnectedState()) {
173 InvokeErrorCallback(service_path, error_callback, kErrorConnected); 160 InvokeErrorCallback(service_path, error_callback, kErrorConnected);
174 return; 161 return;
175 } 162 }
176 if (network->IsConnectingState() || 163 if (network->IsConnectingState() ||
177 pending_requests_.find(service_path) != pending_requests_.end()) { 164 pending_requests_.find(service_path) != pending_requests_.end()) {
(...skipping 25 matching lines...) Expand all
203 kErrorConfigurationRequired); 190 kErrorConfigurationRequired);
204 return; 191 return;
205 } 192 }
206 } 193 }
207 194
208 // All synchronous checks passed, add |service_path| to connecting list. 195 // All synchronous checks passed, add |service_path| to connecting list.
209 pending_requests_.insert(service_path); 196 pending_requests_.insert(service_path);
210 197
211 if (!network->connectable() && NetworkMayNeedCredentials(network)) { 198 if (!network->connectable() && NetworkMayNeedCredentials(network)) {
212 // Request additional properties to check. 199 // Request additional properties to check.
213 NetworkConfigurationHandler::Get()->GetProperties( 200 network_configuration_handler_->GetProperties(
214 network->path(), 201 network->path(),
215 base::Bind(&NetworkConnectionHandler::VerifyConfiguredAndConnect, 202 base::Bind(&NetworkConnectionHandler::VerifyConfiguredAndConnect,
216 AsWeakPtr(), success_callback, error_callback), 203 AsWeakPtr(), success_callback, error_callback),
217 base::Bind(&NetworkConnectionHandler::HandleConfigurationFailure, 204 base::Bind(&NetworkConnectionHandler::HandleConfigurationFailure,
218 AsWeakPtr(), network->path(), error_callback)); 205 AsWeakPtr(), network->path(), error_callback));
219 return; 206 return;
220 } 207 }
221 // All checks passed, send connect request. 208 // All checks passed, send connect request.
222 CallShillConnect(service_path, success_callback, error_callback); 209 CallShillConnect(service_path, success_callback, error_callback);
223 } 210 }
224 211
225 void NetworkConnectionHandler::DisconnectNetwork( 212 void NetworkConnectionHandler::DisconnectNetwork(
226 const std::string& service_path, 213 const std::string& service_path,
227 const base::Closure& success_callback, 214 const base::Closure& success_callback,
228 const network_handler::ErrorCallback& error_callback) { 215 const network_handler::ErrorCallback& error_callback) {
229 const NetworkState* network = 216 const NetworkState* network =
230 NetworkStateHandler::Get()->GetNetworkState(service_path); 217 network_state_handler_->GetNetworkState(service_path);
231 if (!network) { 218 if (!network) {
232 InvokeErrorCallback(service_path, error_callback, kErrorNotFound); 219 InvokeErrorCallback(service_path, error_callback, kErrorNotFound);
233 return; 220 return;
234 } 221 }
235 if (!network->IsConnectedState()) { 222 if (!network->IsConnectedState()) {
236 InvokeErrorCallback(service_path, error_callback, kErrorNotConnected); 223 InvokeErrorCallback(service_path, error_callback, kErrorNotConnected);
237 return; 224 return;
238 } 225 }
239 CallShillDisconnect(service_path, success_callback, error_callback); 226 CallShillDisconnect(service_path, success_callback, error_callback);
240 } 227 }
241 228
242 void NetworkConnectionHandler::CallShillConnect( 229 void NetworkConnectionHandler::CallShillConnect(
243 const std::string& service_path, 230 const std::string& service_path,
244 const base::Closure& success_callback, 231 const base::Closure& success_callback,
245 const network_handler::ErrorCallback& error_callback) { 232 const network_handler::ErrorCallback& error_callback) {
246 // TODO(stevenjb): Remove SetConnectingNetwork and use this class to maintain 233 // TODO(stevenjb): Remove SetConnectingNetwork and use this class to maintain
247 // the connecting network(s) once NetworkLibrary path is eliminated. 234 // the connecting network(s) once NetworkLibrary path is eliminated.
248 NetworkStateHandler::Get()->SetConnectingNetwork(service_path); 235 network_state_handler_->SetConnectingNetwork(service_path);
249 NET_LOG_EVENT("Connect Request", service_path); 236 NET_LOG_EVENT("Connect Request", service_path);
250 DBusThreadManager::Get()->GetShillServiceClient()->Connect( 237 DBusThreadManager::Get()->GetShillServiceClient()->Connect(
251 dbus::ObjectPath(service_path), 238 dbus::ObjectPath(service_path),
252 base::Bind(&NetworkConnectionHandler::HandleShillSuccess, 239 base::Bind(&NetworkConnectionHandler::HandleShillSuccess,
253 AsWeakPtr(), service_path, success_callback), 240 AsWeakPtr(), service_path, success_callback),
254 base::Bind(&NetworkConnectionHandler::HandleShillFailure, 241 base::Bind(&NetworkConnectionHandler::HandleShillFailure,
255 AsWeakPtr(), service_path, error_callback)); 242 AsWeakPtr(), service_path, error_callback));
256 } 243 }
257 244
258 void NetworkConnectionHandler::CallShillDisconnect( 245 void NetworkConnectionHandler::CallShillDisconnect(
259 const std::string& service_path, 246 const std::string& service_path,
260 const base::Closure& success_callback, 247 const base::Closure& success_callback,
261 const network_handler::ErrorCallback& error_callback) { 248 const network_handler::ErrorCallback& error_callback) {
262 NET_LOG_EVENT("Disconnect Request", service_path); 249 NET_LOG_EVENT("Disconnect Request", service_path);
263 DBusThreadManager::Get()->GetShillServiceClient()->Disconnect( 250 DBusThreadManager::Get()->GetShillServiceClient()->Disconnect(
264 dbus::ObjectPath(service_path), 251 dbus::ObjectPath(service_path),
265 base::Bind(&NetworkConnectionHandler::HandleShillSuccess, 252 base::Bind(&NetworkConnectionHandler::HandleShillSuccess,
266 AsWeakPtr(), service_path, success_callback), 253 AsWeakPtr(), service_path, success_callback),
267 base::Bind(&NetworkConnectionHandler::HandleShillFailure, 254 base::Bind(&NetworkConnectionHandler::HandleShillFailure,
268 AsWeakPtr(), service_path, error_callback)); 255 AsWeakPtr(), service_path, error_callback));
269 } 256 }
270 257
271 void NetworkConnectionHandler::VerifyConfiguredAndConnect( 258 void NetworkConnectionHandler::VerifyConfiguredAndConnect(
272 const base::Closure& success_callback, 259 const base::Closure& success_callback,
273 const network_handler::ErrorCallback& error_callback, 260 const network_handler::ErrorCallback& error_callback,
274 const std::string& service_path, 261 const std::string& service_path,
275 const base::DictionaryValue& properties) { 262 const base::DictionaryValue& properties) {
276 const NetworkState* network = 263 const NetworkState* network =
277 NetworkStateHandler::Get()->GetNetworkState(service_path); 264 network_state_handler_->GetNetworkState(service_path);
278 if (!network) { 265 if (!network) {
279 InvokeErrorCallback(service_path, error_callback, kErrorNotFound); 266 InvokeErrorCallback(service_path, error_callback, kErrorNotFound);
280 return; 267 return;
281 } 268 }
282 269
283 // VPN requires a host and username to be set. 270 // VPN requires a host and username to be set.
284 if (network->type() == flimflam::kTypeVPN && 271 if (network->type() == flimflam::kTypeVPN &&
285 !VPNIsConfigured(properties)) { 272 !VPNIsConfigured(properties)) {
286 InvokeErrorCallback(service_path, error_callback, 273 InvokeErrorCallback(service_path, error_callback,
287 kErrorConfigurationRequired); 274 kErrorConfigurationRequired);
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
328 const network_handler::ErrorCallback& error_callback, 315 const network_handler::ErrorCallback& error_callback,
329 const std::string& error_name, 316 const std::string& error_name,
330 const std::string& error_message) { 317 const std::string& error_message) {
331 pending_requests_.erase(service_path); 318 pending_requests_.erase(service_path);
332 std::string error = "Connect Failure: " + error_name + ": " + error_message; 319 std::string error = "Connect Failure: " + error_name + ": " + error_message;
333 network_handler::ShillErrorCallbackFunction( 320 network_handler::ShillErrorCallbackFunction(
334 service_path, error_callback, error_name, error_message); 321 service_path, error_callback, error_name, error_message);
335 } 322 }
336 323
337 } // namespace chromeos 324 } // namespace chromeos
OLDNEW
« no previous file with comments | « chromeos/network/network_connection_handler.h ('k') | chromeos/network/network_connection_handler_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698