OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 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/dbus/fake_shill_manager_client.h" | 5 #include "chromeos/dbus/fake_shill_manager_client.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/message_loop/message_loop.h" | 9 #include "base/message_loop/message_loop.h" |
10 #include "base/strings/string_number_conversions.h" | 10 #include "base/strings/string_number_conversions.h" |
(...skipping 442 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
453 if (add_to_visible_list && | 453 if (add_to_visible_list && |
454 GetListProperty(shill::kServicesProperty)->AppendIfNotPresent( | 454 GetListProperty(shill::kServicesProperty)->AppendIfNotPresent( |
455 base::Value::CreateStringValue(service_path))) { | 455 base::Value::CreateStringValue(service_path))) { |
456 CallNotifyObserversPropertyChanged(shill::kServicesProperty); | 456 CallNotifyObserversPropertyChanged(shill::kServicesProperty); |
457 } | 457 } |
458 if (add_to_watch_list) | 458 if (add_to_watch_list) |
459 AddServiceToWatchList(service_path); | 459 AddServiceToWatchList(service_path); |
460 } | 460 } |
461 | 461 |
462 void FakeShillManagerClient::RemoveManagerService( | 462 void FakeShillManagerClient::RemoveManagerService( |
463 const std::string& service_path) { | 463 const std::string& service_path, |
| 464 bool remove_from_complete_list) { |
464 base::StringValue service_path_value(service_path); | 465 base::StringValue service_path_value(service_path); |
| 466 if (remove_from_complete_list) { |
| 467 GetListProperty(shill::kServiceCompleteListProperty)->Remove( |
| 468 service_path_value, NULL); |
| 469 } |
465 if (GetListProperty(shill::kServicesProperty)->Remove( | 470 if (GetListProperty(shill::kServicesProperty)->Remove( |
466 service_path_value, NULL)) { | 471 service_path_value, NULL)) { |
467 CallNotifyObserversPropertyChanged(shill::kServicesProperty); | 472 CallNotifyObserversPropertyChanged(shill::kServicesProperty); |
468 } | 473 } |
469 GetListProperty(shill::kServiceCompleteListProperty)->Remove( | |
470 service_path_value, NULL); | |
471 if (GetListProperty(shill::kServiceWatchListProperty)->Remove( | 474 if (GetListProperty(shill::kServiceWatchListProperty)->Remove( |
472 service_path_value, NULL)) { | 475 service_path_value, NULL)) { |
473 CallNotifyObserversPropertyChanged( | 476 CallNotifyObserversPropertyChanged(shill::kServiceWatchListProperty); |
474 shill::kServiceWatchListProperty); | |
475 } | 477 } |
476 } | 478 } |
477 | 479 |
478 void FakeShillManagerClient::ClearManagerServices() { | 480 void FakeShillManagerClient::ClearManagerServices() { |
| 481 GetListProperty(shill::kServiceCompleteListProperty)->Clear(); |
479 GetListProperty(shill::kServicesProperty)->Clear(); | 482 GetListProperty(shill::kServicesProperty)->Clear(); |
480 GetListProperty(shill::kServiceCompleteListProperty)->Clear(); | |
481 GetListProperty(shill::kServiceWatchListProperty)->Clear(); | 483 GetListProperty(shill::kServiceWatchListProperty)->Clear(); |
482 CallNotifyObserversPropertyChanged(shill::kServicesProperty); | 484 CallNotifyObserversPropertyChanged(shill::kServicesProperty); |
483 CallNotifyObserversPropertyChanged(shill::kServiceWatchListProperty); | 485 CallNotifyObserversPropertyChanged(shill::kServiceWatchListProperty); |
484 } | 486 } |
485 | 487 |
486 void FakeShillManagerClient::ServiceStateChanged( | 488 void FakeShillManagerClient::ServiceStateChanged( |
487 const std::string& service_path, | 489 const std::string& service_path, |
488 const std::string& state) { | 490 const std::string& state) { |
489 if (service_path == default_service_ && !IsConnectedState(state)) { | 491 if (service_path == default_service_ && !IsConnectedState(state)) { |
490 // Default service is no longer connected; clear. | 492 // Default service is no longer connected; clear. |
491 default_service_.clear(); | 493 default_service_.clear(); |
492 base::StringValue default_service_value(default_service_); | 494 base::StringValue default_service_value(default_service_); |
493 SetManagerProperty(shill::kDefaultServiceProperty, default_service_value); | 495 SetManagerProperty(shill::kDefaultServiceProperty, default_service_value); |
494 } | 496 } |
495 } | 497 } |
496 | 498 |
497 void FakeShillManagerClient::SortManagerServices() { | 499 void FakeShillManagerClient::SortManagerServices() { |
| 500 SortServiceList(shill::kServicesProperty); |
| 501 SortServiceList(shill::kServiceCompleteListProperty); |
| 502 } |
| 503 |
| 504 void FakeShillManagerClient::SortServiceList(const std::string& property) { |
498 static const char* ordered_types[] = { | 505 static const char* ordered_types[] = { |
499 shill::kTypeEthernet, | 506 shill::kTypeEthernet, |
500 shill::kTypeWifi, | 507 shill::kTypeWifi, |
501 shill::kTypeCellular, | 508 shill::kTypeCellular, |
502 shill::kTypeWimax, | 509 shill::kTypeWimax, |
503 shill::kTypeVPN | 510 shill::kTypeVPN |
504 }; | 511 }; |
505 base::ListValue* service_list = GetListProperty(shill::kServicesProperty); | 512 |
506 if (!service_list || service_list->empty()) { | 513 base::ListValue* service_list = GetListProperty(property); |
507 if (!default_service_.empty()) { | |
508 default_service_.clear(); | |
509 base::StringValue empty_value(""); | |
510 SetManagerProperty(shill::kDefaultServiceProperty, empty_value); | |
511 } | |
512 return; | |
513 } | |
514 std::vector<std::string> active_services; | 514 std::vector<std::string> active_services; |
515 std::vector<std::string> inactive_services; | 515 std::vector<std::string> inactive_services; |
516 for (size_t i = 0; i < arraysize(ordered_types); ++i) { | 516 if (service_list && !service_list->empty()) { |
517 AppendServicesForType(service_list, ordered_types[i], | 517 for (size_t i = 0; i < arraysize(ordered_types); ++i) { |
518 &active_services, &inactive_services); | 518 AppendServicesForType(service_list, ordered_types[i], |
| 519 &active_services, &inactive_services); |
| 520 } |
| 521 service_list->Clear(); |
| 522 for (size_t i = 0; i < active_services.size(); ++i) |
| 523 service_list->AppendString(active_services[i]); |
| 524 for (size_t i = 0; i < inactive_services.size(); ++i) |
| 525 service_list->AppendString(inactive_services[i]); |
519 } | 526 } |
520 service_list->Clear(); | |
521 for (size_t i = 0; i < active_services.size(); ++i) | |
522 service_list->AppendString(active_services[i]); | |
523 for (size_t i = 0; i < inactive_services.size(); ++i) | |
524 service_list->AppendString(inactive_services[i]); | |
525 | 527 |
526 CallNotifyObserversPropertyChanged(shill::kServicesProperty); | 528 if (property != shill::kServicesProperty) |
| 529 return; |
| 530 |
| 531 CallNotifyObserversPropertyChanged(property); |
527 | 532 |
528 // Set the first active service as the Default service. | 533 // Set the first active service as the Default service. |
529 std::string new_default_service; | 534 std::string new_default_service; |
530 if (!active_services.empty()) { | 535 if (!active_services.empty()) { |
531 ShillServiceClient::TestInterface* service_client = | 536 ShillServiceClient::TestInterface* service_client = |
532 DBusThreadManager::Get()->GetShillServiceClient()->GetTestInterface(); | 537 DBusThreadManager::Get()->GetShillServiceClient()->GetTestInterface(); |
533 std::string service_path = active_services[0]; | 538 std::string service_path = active_services[0]; |
534 const base::DictionaryValue* properties = | 539 const base::DictionaryValue* properties = |
535 service_client->GetServiceProperties(service_path); | 540 service_client->GetServiceProperties(service_path); |
536 if (!properties) { | 541 if (!properties) { |
537 LOG(ERROR) << "Properties not found for service: " << service_path; | 542 LOG(ERROR) << "Properties not found for service: " << service_path; |
538 } else { | 543 } else { |
539 std::string state; | 544 std::string state; |
540 properties->GetString(shill::kStateProperty, &state); | 545 properties->GetString(shill::kStateProperty, &state); |
541 if (IsConnectedState(state)) | 546 if (IsConnectedState(state)) |
542 new_default_service = service_path; | 547 new_default_service = service_path; |
543 } | 548 } |
544 } | 549 } |
545 if (default_service_ != new_default_service) { | 550 if (default_service_ != new_default_service) { |
546 default_service_ = new_default_service; | 551 default_service_ = new_default_service; |
547 base::StringValue default_service_value(default_service_); | 552 base::StringValue default_service_value(default_service_); |
548 SetManagerProperty(shill::kDefaultServiceProperty, default_service_value); | 553 SetManagerProperty(shill::kDefaultServiceProperty, default_service_value); |
549 } | 554 } |
550 } | 555 } |
551 | 556 |
552 | |
553 int FakeShillManagerClient::GetInteractiveDelay() const { | 557 int FakeShillManagerClient::GetInteractiveDelay() const { |
554 return interactive_delay_; | 558 return interactive_delay_; |
555 } | 559 } |
556 | 560 |
557 void FakeShillManagerClient::SetBestServiceToConnect( | 561 void FakeShillManagerClient::SetBestServiceToConnect( |
558 const std::string& service_path) { | 562 const std::string& service_path) { |
559 best_service_ = service_path; | 563 best_service_ = service_path; |
560 } | 564 } |
561 | 565 |
562 void FakeShillManagerClient::SetupDefaultEnvironment() { | 566 void FakeShillManagerClient::SetupDefaultEnvironment() { |
(...skipping 478 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1041 *enabled = true; | 1045 *enabled = true; |
1042 if ((state == shill::kStatePortal && type != shill::kTypeWifi) || | 1046 if ((state == shill::kStatePortal && type != shill::kTypeWifi) || |
1043 (state == kNetworkActivated && type != shill::kTypeCellular)) { | 1047 (state == kNetworkActivated && type != shill::kTypeCellular)) { |
1044 LOG(WARNING) << "Invalid state: " << state << " for " << type; | 1048 LOG(WARNING) << "Invalid state: " << state << " for " << type; |
1045 return shill::kStateIdle; | 1049 return shill::kStateIdle; |
1046 } | 1050 } |
1047 return state; | 1051 return state; |
1048 } | 1052 } |
1049 | 1053 |
1050 } // namespace chromeos | 1054 } // namespace chromeos |
OLD | NEW |