| OLD | NEW |
| 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 "ui/chromeos/network/network_connect.h" | 5 #include "ui/chromeos/network/network_connect.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/memory/scoped_ptr.h" | 8 #include "base/memory/scoped_ptr.h" |
| 9 #include "base/strings/string_util.h" | 9 #include "base/strings/string_util.h" |
| 10 #include "base/strings/utf_string_conversions.h" | 10 #include "base/strings/utf_string_conversions.h" |
| (...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 242 void NetworkConnectImpl::OnConnectSucceeded(const std::string& service_path) { | 242 void NetworkConnectImpl::OnConnectSucceeded(const std::string& service_path) { |
| 243 NET_LOG_USER("Connect Succeeded", service_path); | 243 NET_LOG_USER("Connect Succeeded", service_path); |
| 244 network_state_notifier_->RemoveConnectNotification(); | 244 network_state_notifier_->RemoveConnectNotification(); |
| 245 } | 245 } |
| 246 | 246 |
| 247 // If |check_error_state| is true, error state for the network is checked, | 247 // If |check_error_state| is true, error state for the network is checked, |
| 248 // otherwise any current error state is ignored (e.g. for recently configured | 248 // otherwise any current error state is ignored (e.g. for recently configured |
| 249 // networks or repeat connect attempts). | 249 // networks or repeat connect attempts). |
| 250 void NetworkConnectImpl::CallConnectToNetwork(const std::string& service_path, | 250 void NetworkConnectImpl::CallConnectToNetwork(const std::string& service_path, |
| 251 bool check_error_state) { | 251 bool check_error_state) { |
| 252 LOG(ERROR) << "*** QUICHE: " << __func__; |
| 252 network_state_notifier_->RemoveConnectNotification(); | 253 network_state_notifier_->RemoveConnectNotification(); |
| 253 NetworkHandler::Get()->network_connection_handler()->ConnectToNetwork( | 254 NetworkHandler::Get()->network_connection_handler()->ConnectToNetwork( |
| 254 service_path, base::Bind(&NetworkConnectImpl::OnConnectSucceeded, | 255 service_path, base::Bind(&NetworkConnectImpl::OnConnectSucceeded, |
| 255 weak_factory_.GetWeakPtr(), service_path), | 256 weak_factory_.GetWeakPtr(), service_path), |
| 256 base::Bind(&NetworkConnectImpl::OnConnectFailed, | 257 base::Bind(&NetworkConnectImpl::OnConnectFailed, |
| 257 weak_factory_.GetWeakPtr(), service_path), | 258 weak_factory_.GetWeakPtr(), service_path), |
| 258 check_error_state); | 259 check_error_state); |
| 259 } | 260 } |
| 260 | 261 |
| 261 void NetworkConnectImpl::OnActivateFailed( | 262 void NetworkConnectImpl::OnActivateFailed( |
| (...skipping 12 matching lines...) Expand all Loading... |
| 274 void NetworkConnectImpl::OnConfigureFailed( | 275 void NetworkConnectImpl::OnConfigureFailed( |
| 275 const std::string& error_name, | 276 const std::string& error_name, |
| 276 scoped_ptr<base::DictionaryValue> error_data) { | 277 scoped_ptr<base::DictionaryValue> error_data) { |
| 277 NET_LOG_ERROR("Unable to configure network", ""); | 278 NET_LOG_ERROR("Unable to configure network", ""); |
| 278 network_state_notifier_->ShowNetworkConnectError( | 279 network_state_notifier_->ShowNetworkConnectError( |
| 279 NetworkConnectionHandler::kErrorConfigureFailed, ""); | 280 NetworkConnectionHandler::kErrorConfigureFailed, ""); |
| 280 } | 281 } |
| 281 | 282 |
| 282 void NetworkConnectImpl::OnConfigureSucceeded(bool connect_on_configure, | 283 void NetworkConnectImpl::OnConfigureSucceeded(bool connect_on_configure, |
| 283 const std::string& service_path) { | 284 const std::string& service_path) { |
| 285 LOG(ERROR) << "*** QUICHE: " << __func__; |
| 284 NET_LOG_USER("Configure Succeeded", service_path); | 286 NET_LOG_USER("Configure Succeeded", service_path); |
| 285 if (!connect_on_configure) | 287 if (!connect_on_configure) |
| 286 return; | 288 return; |
| 287 // After configuring a network, ignore any (possibly stale) error state. | 289 // After configuring a network, ignore any (possibly stale) error state. |
| 288 const bool check_error_state = false; | 290 const bool check_error_state = false; |
| 289 CallConnectToNetwork(service_path, check_error_state); | 291 CallConnectToNetwork(service_path, check_error_state); |
| 290 } | 292 } |
| 291 | 293 |
| 292 void NetworkConnectImpl::CallCreateConfiguration( | 294 void NetworkConnectImpl::CallCreateConfiguration( |
| 293 base::DictionaryValue* shill_properties, | 295 base::DictionaryValue* shill_properties, |
| 294 bool shared, | 296 bool shared, |
| 295 bool connect_on_configure) { | 297 bool connect_on_configure) { |
| 298 LOG(ERROR) << "*** QUICHE: " << __func__; |
| 296 std::string profile_path; | 299 std::string profile_path; |
| 297 if (!GetNetworkProfilePath(shared, &profile_path)) { | 300 if (!GetNetworkProfilePath(shared, &profile_path)) { |
| 298 network_state_notifier_->ShowNetworkConnectError( | 301 network_state_notifier_->ShowNetworkConnectError( |
| 299 NetworkConnectionHandler::kErrorConfigureFailed, ""); | 302 NetworkConnectionHandler::kErrorConfigureFailed, ""); |
| 300 return; | 303 return; |
| 301 } | 304 } |
| 302 shill_properties->SetStringWithoutPathExpansion(shill::kProfileProperty, | 305 shill_properties->SetStringWithoutPathExpansion(shill::kProfileProperty, |
| 303 profile_path); | 306 profile_path); |
| 304 NetworkHandler::Get() | 307 NetworkHandler::Get() |
| 305 ->network_configuration_handler() | 308 ->network_configuration_handler() |
| (...skipping 28 matching lines...) Expand all Loading... |
| 334 // Remove cleared properties from properties_to_set. | 337 // Remove cleared properties from properties_to_set. |
| 335 for (std::vector<std::string>::iterator iter = properties_to_clear->begin(); | 338 for (std::vector<std::string>::iterator iter = properties_to_clear->begin(); |
| 336 iter != properties_to_clear->end(); ++iter) { | 339 iter != properties_to_clear->end(); ++iter) { |
| 337 properties_to_set->RemoveWithoutPathExpansion(*iter, NULL); | 340 properties_to_set->RemoveWithoutPathExpansion(*iter, NULL); |
| 338 } | 341 } |
| 339 } | 342 } |
| 340 | 343 |
| 341 void NetworkConnectImpl::ClearPropertiesAndConnect( | 344 void NetworkConnectImpl::ClearPropertiesAndConnect( |
| 342 const std::string& service_path, | 345 const std::string& service_path, |
| 343 const std::vector<std::string>& properties_to_clear) { | 346 const std::vector<std::string>& properties_to_clear) { |
| 347 LOG(ERROR) << "*** QUICHE: " << __func__; |
| 344 NET_LOG_USER("ClearPropertiesAndConnect", service_path); | 348 NET_LOG_USER("ClearPropertiesAndConnect", service_path); |
| 345 // After configuring a network, ignore any (possibly stale) error state. | 349 // After configuring a network, ignore any (possibly stale) error state. |
| 346 const bool check_error_state = false; | 350 const bool check_error_state = false; |
| 347 NetworkHandler::Get()->network_configuration_handler()->ClearShillProperties( | 351 NetworkHandler::Get()->network_configuration_handler()->ClearShillProperties( |
| 348 service_path, properties_to_clear, | 352 service_path, properties_to_clear, |
| 349 base::Bind(&NetworkConnectImpl::CallConnectToNetwork, | 353 base::Bind(&NetworkConnectImpl::CallConnectToNetwork, |
| 350 weak_factory_.GetWeakPtr(), service_path, check_error_state), | 354 weak_factory_.GetWeakPtr(), service_path, check_error_state), |
| 351 base::Bind(&NetworkConnectImpl::SetPropertiesFailed, | 355 base::Bind(&NetworkConnectImpl::SetPropertiesFailed, |
| 352 weak_factory_.GetWeakPtr(), "ClearProperties", service_path)); | 356 weak_factory_.GetWeakPtr(), "ClearProperties", service_path)); |
| 353 } | 357 } |
| 354 | 358 |
| 355 void NetworkConnectImpl::ConfigureSetProfileSucceeded( | 359 void NetworkConnectImpl::ConfigureSetProfileSucceeded( |
| 356 const std::string& service_path, | 360 const std::string& service_path, |
| 357 scoped_ptr<base::DictionaryValue> properties_to_set) { | 361 scoped_ptr<base::DictionaryValue> properties_to_set) { |
| 358 std::vector<std::string> properties_to_clear; | 362 std::vector<std::string> properties_to_clear; |
| 359 SetPropertiesToClear(properties_to_set.get(), &properties_to_clear); | 363 SetPropertiesToClear(properties_to_set.get(), &properties_to_clear); |
| 360 NetworkHandler::Get()->network_configuration_handler()->SetShillProperties( | 364 NetworkHandler::Get()->network_configuration_handler()->SetShillProperties( |
| 361 service_path, *properties_to_set, | 365 service_path, *properties_to_set, |
| 362 NetworkConfigurationObserver::SOURCE_USER_ACTION, | 366 NetworkConfigurationObserver::SOURCE_USER_ACTION, |
| 363 base::Bind(&NetworkConnectImpl::ClearPropertiesAndConnect, | 367 base::Bind(&NetworkConnectImpl::ClearPropertiesAndConnect, |
| 364 weak_factory_.GetWeakPtr(), service_path, properties_to_clear), | 368 weak_factory_.GetWeakPtr(), service_path, properties_to_clear), |
| 365 base::Bind(&NetworkConnectImpl::SetPropertiesFailed, | 369 base::Bind(&NetworkConnectImpl::SetPropertiesFailed, |
| 366 weak_factory_.GetWeakPtr(), "SetProperties", service_path)); | 370 weak_factory_.GetWeakPtr(), "SetProperties", service_path)); |
| 367 } | 371 } |
| 368 | 372 |
| 369 // Public methods | 373 // Public methods |
| 370 | 374 |
| 371 void NetworkConnectImpl::ConnectToNetwork(const std::string& service_path) { | 375 void NetworkConnectImpl::ConnectToNetwork(const std::string& service_path) { |
| 376 LOG(ERROR) << "*** QUICHE: " << __func__; |
| 372 NET_LOG_USER("ConnectToNetwork", service_path); | 377 NET_LOG_USER("ConnectToNetwork", service_path); |
| 373 const NetworkState* network = GetNetworkState(service_path); | 378 const NetworkState* network = GetNetworkState(service_path); |
| 374 if (network) { | 379 if (network) { |
| 375 if (!network->error().empty() && !network->security_class().empty()) { | 380 if (!network->error().empty() && !network->security_class().empty()) { |
| 376 NET_LOG_USER("Configure: " + network->error(), service_path); | 381 NET_LOG_USER("Configure: " + network->error(), service_path); |
| 377 // If the network is in an error state, show the configuration UI | 382 // If the network is in an error state, show the configuration UI |
| 378 // directly to avoid a spurious notification. | 383 // directly to avoid a spurious notification. |
| 379 HandleUnconfiguredNetwork(service_path); | 384 HandleUnconfiguredNetwork(service_path); |
| 380 return; | 385 return; |
| 381 } else if (network->RequiresActivation()) { | 386 } else if (network->RequiresActivation()) { |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 484 network_state_notifier_->ShowMobileActivationError(service_path); | 489 network_state_notifier_->ShowMobileActivationError(service_path); |
| 485 return; | 490 return; |
| 486 } | 491 } |
| 487 delegate_->ShowMobileSetupDialog(service_path); | 492 delegate_->ShowMobileSetupDialog(service_path); |
| 488 } | 493 } |
| 489 | 494 |
| 490 void NetworkConnectImpl::ConfigureNetworkAndConnect( | 495 void NetworkConnectImpl::ConfigureNetworkAndConnect( |
| 491 const std::string& service_path, | 496 const std::string& service_path, |
| 492 const base::DictionaryValue& properties, | 497 const base::DictionaryValue& properties, |
| 493 bool shared) { | 498 bool shared) { |
| 499 LOG(ERROR) << "*** QUICHE: " << __func__; |
| 494 NET_LOG_USER("ConfigureNetworkAndConnect", service_path); | 500 NET_LOG_USER("ConfigureNetworkAndConnect", service_path); |
| 495 | 501 |
| 496 scoped_ptr<base::DictionaryValue> properties_to_set(properties.DeepCopy()); | 502 scoped_ptr<base::DictionaryValue> properties_to_set(properties.DeepCopy()); |
| 497 | 503 |
| 498 std::string profile_path; | 504 std::string profile_path; |
| 499 if (!GetNetworkProfilePath(shared, &profile_path)) { | 505 if (!GetNetworkProfilePath(shared, &profile_path)) { |
| 500 network_state_notifier_->ShowNetworkConnectError( | 506 network_state_notifier_->ShowNetworkConnectError( |
| 501 NetworkConnectionHandler::kErrorConfigureFailed, service_path); | 507 NetworkConnectionHandler::kErrorConfigureFailed, service_path); |
| 502 return; | 508 return; |
| 503 } | 509 } |
| 510 LOG(ERROR) << "*** QUICHE: " << __func__; |
| 504 NetworkHandler::Get()->network_configuration_handler()->SetNetworkProfile( | 511 NetworkHandler::Get()->network_configuration_handler()->SetNetworkProfile( |
| 505 service_path, profile_path, | 512 service_path, profile_path, |
| 506 NetworkConfigurationObserver::SOURCE_USER_ACTION, | 513 NetworkConfigurationObserver::SOURCE_USER_ACTION, |
| 507 base::Bind(&NetworkConnectImpl::ConfigureSetProfileSucceeded, | 514 base::Bind(&NetworkConnectImpl::ConfigureSetProfileSucceeded, |
| 508 weak_factory_.GetWeakPtr(), service_path, | 515 weak_factory_.GetWeakPtr(), service_path, |
| 509 base::Passed(&properties_to_set)), | 516 base::Passed(&properties_to_set)), |
| 510 base::Bind(&NetworkConnectImpl::SetPropertiesFailed, | 517 base::Bind(&NetworkConnectImpl::SetPropertiesFailed, |
| 511 weak_factory_.GetWeakPtr(), "SetProfile: " + profile_path, | 518 weak_factory_.GetWeakPtr(), "SetProfile: " + profile_path, |
| 512 service_path)); | 519 service_path)); |
| 513 } | 520 } |
| 514 | 521 |
| 515 void NetworkConnectImpl::CreateConfigurationAndConnect( | 522 void NetworkConnectImpl::CreateConfigurationAndConnect( |
| 516 base::DictionaryValue* properties, | 523 base::DictionaryValue* properties, |
| 517 bool shared) { | 524 bool shared) { |
| 525 LOG(ERROR) << "*** QUICHE: " << __func__; |
| 518 NET_LOG_USER("CreateConfigurationAndConnect", ""); | 526 NET_LOG_USER("CreateConfigurationAndConnect", ""); |
| 519 CallCreateConfiguration(properties, shared, true /* connect_on_configure */); | 527 CallCreateConfiguration(properties, shared, true /* connect_on_configure */); |
| 520 } | 528 } |
| 521 | 529 |
| 522 void NetworkConnectImpl::CreateConfiguration(base::DictionaryValue* properties, | 530 void NetworkConnectImpl::CreateConfiguration(base::DictionaryValue* properties, |
| 523 bool shared) { | 531 bool shared) { |
| 532 LOG(ERROR) << "*** QUICHE: " << __func__; |
| 524 NET_LOG_USER("CreateConfiguration", ""); | 533 NET_LOG_USER("CreateConfiguration", ""); |
| 525 CallCreateConfiguration(properties, shared, false /* connect_on_configure */); | 534 CallCreateConfiguration(properties, shared, false /* connect_on_configure */); |
| 526 } | 535 } |
| 527 | 536 |
| 528 base::string16 NetworkConnectImpl::GetShillErrorString( | 537 base::string16 NetworkConnectImpl::GetShillErrorString( |
| 529 const std::string& error, | 538 const std::string& error, |
| 530 const std::string& service_path) { | 539 const std::string& service_path) { |
| 531 if (error.empty()) | 540 if (error.empty()) |
| 532 return base::string16(); | 541 return base::string16(); |
| 533 if (error == shill::kErrorOutOfRange) | 542 if (error == shill::kErrorOutOfRange) |
| (...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 637 return g_network_connect; | 646 return g_network_connect; |
| 638 } | 647 } |
| 639 | 648 |
| 640 NetworkConnect::NetworkConnect() { | 649 NetworkConnect::NetworkConnect() { |
| 641 } | 650 } |
| 642 | 651 |
| 643 NetworkConnect::~NetworkConnect() { | 652 NetworkConnect::~NetworkConnect() { |
| 644 } | 653 } |
| 645 | 654 |
| 646 } // namespace ui | 655 } // namespace ui |
| OLD | NEW |