| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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_state_handler.h" | 5 #include "chromeos/network/network_state_handler.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <map> | 9 #include <map> |
| 10 #include <memory> | 10 #include <memory> |
| (...skipping 528 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 539 network_state_handler_->GetTechnologyState(NetworkTypePattern::Tether())); | 539 network_state_handler_->GetTechnologyState(NetworkTypePattern::Tether())); |
| 540 } | 540 } |
| 541 | 541 |
| 542 TEST_F(NetworkStateHandlerTest, ServicePropertyChanged) { | 542 TEST_F(NetworkStateHandlerTest, ServicePropertyChanged) { |
| 543 // Set a service property. | 543 // Set a service property. |
| 544 const std::string eth1 = kShillManagerClientStubDefaultService; | 544 const std::string eth1 = kShillManagerClientStubDefaultService; |
| 545 const NetworkState* ethernet = network_state_handler_->GetNetworkState(eth1); | 545 const NetworkState* ethernet = network_state_handler_->GetNetworkState(eth1); |
| 546 ASSERT_TRUE(ethernet); | 546 ASSERT_TRUE(ethernet); |
| 547 EXPECT_EQ("", ethernet->security_class()); | 547 EXPECT_EQ("", ethernet->security_class()); |
| 548 EXPECT_EQ(1, test_observer_->PropertyUpdatesForService(eth1)); | 548 EXPECT_EQ(1, test_observer_->PropertyUpdatesForService(eth1)); |
| 549 base::StringValue security_class_value("TestSecurityClass"); | 549 base::Value security_class_value("TestSecurityClass"); |
| 550 SetServiceProperty(eth1, shill::kSecurityClassProperty, security_class_value); | 550 SetServiceProperty(eth1, shill::kSecurityClassProperty, security_class_value); |
| 551 base::RunLoop().RunUntilIdle(); | 551 base::RunLoop().RunUntilIdle(); |
| 552 ethernet = network_state_handler_->GetNetworkState(eth1); | 552 ethernet = network_state_handler_->GetNetworkState(eth1); |
| 553 EXPECT_EQ("TestSecurityClass", ethernet->security_class()); | 553 EXPECT_EQ("TestSecurityClass", ethernet->security_class()); |
| 554 EXPECT_EQ(2, test_observer_->PropertyUpdatesForService(eth1)); | 554 EXPECT_EQ(2, test_observer_->PropertyUpdatesForService(eth1)); |
| 555 | 555 |
| 556 // Changing a service to the existing value should not trigger an update. | 556 // Changing a service to the existing value should not trigger an update. |
| 557 SetServiceProperty(eth1, shill::kSecurityClassProperty, security_class_value); | 557 SetServiceProperty(eth1, shill::kSecurityClassProperty, security_class_value); |
| 558 base::RunLoop().RunUntilIdle(); | 558 base::RunLoop().RunUntilIdle(); |
| 559 EXPECT_EQ(2, test_observer_->PropertyUpdatesForService(eth1)); | 559 EXPECT_EQ(2, test_observer_->PropertyUpdatesForService(eth1)); |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 627 network_state_handler_->SetTetherNetworkStateDisconnected(kTetherGuid1); | 627 network_state_handler_->SetTetherNetworkStateDisconnected(kTetherGuid1); |
| 628 EXPECT_FALSE(tether_network->IsConnectingState()); | 628 EXPECT_FALSE(tether_network->IsConnectingState()); |
| 629 EXPECT_FALSE(tether_network->IsConnectedState()); | 629 EXPECT_FALSE(tether_network->IsConnectedState()); |
| 630 } | 630 } |
| 631 | 631 |
| 632 TEST_F(NetworkStateHandlerTest, NetworkConnectionStateChanged) { | 632 TEST_F(NetworkStateHandlerTest, NetworkConnectionStateChanged) { |
| 633 const std::string eth1 = kShillManagerClientStubDefaultService; | 633 const std::string eth1 = kShillManagerClientStubDefaultService; |
| 634 EXPECT_EQ(0, test_observer_->ConnectionStateChangesForService(eth1)); | 634 EXPECT_EQ(0, test_observer_->ConnectionStateChangesForService(eth1)); |
| 635 | 635 |
| 636 // Change a network state. | 636 // Change a network state. |
| 637 base::StringValue connection_state_idle_value(shill::kStateIdle); | 637 base::Value connection_state_idle_value(shill::kStateIdle); |
| 638 service_test_->SetServiceProperty(eth1, shill::kStateProperty, | 638 service_test_->SetServiceProperty(eth1, shill::kStateProperty, |
| 639 connection_state_idle_value); | 639 connection_state_idle_value); |
| 640 base::RunLoop().RunUntilIdle(); | 640 base::RunLoop().RunUntilIdle(); |
| 641 EXPECT_EQ(shill::kStateIdle, | 641 EXPECT_EQ(shill::kStateIdle, |
| 642 test_observer_->NetworkConnectionStateForService(eth1)); | 642 test_observer_->NetworkConnectionStateForService(eth1)); |
| 643 EXPECT_EQ(1, test_observer_->ConnectionStateChangesForService(eth1)); | 643 EXPECT_EQ(1, test_observer_->ConnectionStateChangesForService(eth1)); |
| 644 // Confirm that changing the connection state to the same value does *not* | 644 // Confirm that changing the connection state to the same value does *not* |
| 645 // signal the observer. | 645 // signal the observer. |
| 646 service_test_->SetServiceProperty(eth1, shill::kStateProperty, | 646 service_test_->SetServiceProperty(eth1, shill::kStateProperty, |
| 647 connection_state_idle_value); | 647 connection_state_idle_value); |
| 648 base::RunLoop().RunUntilIdle(); | 648 base::RunLoop().RunUntilIdle(); |
| 649 EXPECT_EQ(1, test_observer_->ConnectionStateChangesForService(eth1)); | 649 EXPECT_EQ(1, test_observer_->ConnectionStateChangesForService(eth1)); |
| 650 } | 650 } |
| 651 | 651 |
| 652 TEST_F(NetworkStateHandlerTest, DefaultServiceDisconnected) { | 652 TEST_F(NetworkStateHandlerTest, DefaultServiceDisconnected) { |
| 653 const std::string eth1 = kShillManagerClientStubDefaultService; | 653 const std::string eth1 = kShillManagerClientStubDefaultService; |
| 654 const std::string wifi1 = kShillManagerClientStubDefaultWifi; | 654 const std::string wifi1 = kShillManagerClientStubDefaultWifi; |
| 655 | 655 |
| 656 EXPECT_EQ(0u, test_observer_->default_network_change_count()); | 656 EXPECT_EQ(0u, test_observer_->default_network_change_count()); |
| 657 // Disconnect ethernet. | 657 // Disconnect ethernet. |
| 658 base::StringValue connection_state_idle_value(shill::kStateIdle); | 658 base::Value connection_state_idle_value(shill::kStateIdle); |
| 659 service_test_->SetServiceProperty(eth1, shill::kStateProperty, | 659 service_test_->SetServiceProperty(eth1, shill::kStateProperty, |
| 660 connection_state_idle_value); | 660 connection_state_idle_value); |
| 661 base::RunLoop().RunUntilIdle(); | 661 base::RunLoop().RunUntilIdle(); |
| 662 // Expect two changes: first when eth1 becomes disconnected, second when | 662 // Expect two changes: first when eth1 becomes disconnected, second when |
| 663 // wifi1 becomes the default. | 663 // wifi1 becomes the default. |
| 664 EXPECT_EQ(2u, test_observer_->default_network_change_count()); | 664 EXPECT_EQ(2u, test_observer_->default_network_change_count()); |
| 665 EXPECT_EQ(wifi1, test_observer_->default_network()); | 665 EXPECT_EQ(wifi1, test_observer_->default_network()); |
| 666 | 666 |
| 667 // Disconnect wifi. | 667 // Disconnect wifi. |
| 668 test_observer_->reset_change_counts(); | 668 test_observer_->reset_change_counts(); |
| 669 service_test_->SetServiceProperty(wifi1, shill::kStateProperty, | 669 service_test_->SetServiceProperty(wifi1, shill::kStateProperty, |
| 670 connection_state_idle_value); | 670 connection_state_idle_value); |
| 671 base::RunLoop().RunUntilIdle(); | 671 base::RunLoop().RunUntilIdle(); |
| 672 EXPECT_EQ(1u, test_observer_->default_network_change_count()); | 672 EXPECT_EQ(1u, test_observer_->default_network_change_count()); |
| 673 EXPECT_EQ("", test_observer_->default_network()); | 673 EXPECT_EQ("", test_observer_->default_network()); |
| 674 } | 674 } |
| 675 | 675 |
| 676 TEST_F(NetworkStateHandlerTest, DefaultServiceConnected) { | 676 TEST_F(NetworkStateHandlerTest, DefaultServiceConnected) { |
| 677 const std::string eth1 = kShillManagerClientStubDefaultService; | 677 const std::string eth1 = kShillManagerClientStubDefaultService; |
| 678 const std::string wifi1 = kShillManagerClientStubDefaultWifi; | 678 const std::string wifi1 = kShillManagerClientStubDefaultWifi; |
| 679 | 679 |
| 680 // Disconnect ethernet and wifi. | 680 // Disconnect ethernet and wifi. |
| 681 base::StringValue connection_state_idle_value(shill::kStateIdle); | 681 base::Value connection_state_idle_value(shill::kStateIdle); |
| 682 service_test_->SetServiceProperty(eth1, shill::kStateProperty, | 682 service_test_->SetServiceProperty(eth1, shill::kStateProperty, |
| 683 connection_state_idle_value); | 683 connection_state_idle_value); |
| 684 service_test_->SetServiceProperty(wifi1, shill::kStateProperty, | 684 service_test_->SetServiceProperty(wifi1, shill::kStateProperty, |
| 685 connection_state_idle_value); | 685 connection_state_idle_value); |
| 686 base::RunLoop().RunUntilIdle(); | 686 base::RunLoop().RunUntilIdle(); |
| 687 EXPECT_EQ(std::string(), test_observer_->default_network()); | 687 EXPECT_EQ(std::string(), test_observer_->default_network()); |
| 688 | 688 |
| 689 // Connect ethernet, should become the default network. | 689 // Connect ethernet, should become the default network. |
| 690 test_observer_->reset_change_counts(); | 690 test_observer_->reset_change_counts(); |
| 691 base::StringValue connection_state_ready_value(shill::kStateReady); | 691 base::Value connection_state_ready_value(shill::kStateReady); |
| 692 service_test_->SetServiceProperty(eth1, shill::kStateProperty, | 692 service_test_->SetServiceProperty(eth1, shill::kStateProperty, |
| 693 connection_state_ready_value); | 693 connection_state_ready_value); |
| 694 base::RunLoop().RunUntilIdle(); | 694 base::RunLoop().RunUntilIdle(); |
| 695 EXPECT_EQ(eth1, test_observer_->default_network()); | 695 EXPECT_EQ(eth1, test_observer_->default_network()); |
| 696 EXPECT_EQ(shill::kStateReady, | 696 EXPECT_EQ(shill::kStateReady, |
| 697 test_observer_->default_network_connection_state()); | 697 test_observer_->default_network_connection_state()); |
| 698 EXPECT_EQ(1u, test_observer_->default_network_change_count()); | 698 EXPECT_EQ(1u, test_observer_->default_network_change_count()); |
| 699 } | 699 } |
| 700 | 700 |
| 701 TEST_F(NetworkStateHandlerTest, DefaultServiceChanged) { | 701 TEST_F(NetworkStateHandlerTest, DefaultServiceChanged) { |
| 702 const std::string eth1 = kShillManagerClientStubDefaultService; | 702 const std::string eth1 = kShillManagerClientStubDefaultService; |
| 703 // The default service should be eth1. | 703 // The default service should be eth1. |
| 704 EXPECT_EQ(eth1, test_observer_->default_network()); | 704 EXPECT_EQ(eth1, test_observer_->default_network()); |
| 705 | 705 |
| 706 // Change the default network by changing Manager.DefaultService. | 706 // Change the default network by changing Manager.DefaultService. |
| 707 // This should only generate one default network notification when the | 707 // This should only generate one default network notification when the |
| 708 // DefaultService property changes. | 708 // DefaultService property changes. |
| 709 const std::string wifi1 = kShillManagerClientStubDefaultWifi; | 709 const std::string wifi1 = kShillManagerClientStubDefaultWifi; |
| 710 SetServiceProperty(eth1, shill::kStateProperty, | 710 SetServiceProperty(eth1, shill::kStateProperty, |
| 711 base::StringValue(shill::kStateIdle)); | 711 base::Value(shill::kStateIdle)); |
| 712 manager_test_->SetManagerProperty(shill::kDefaultServiceProperty, | 712 manager_test_->SetManagerProperty(shill::kDefaultServiceProperty, |
| 713 base::StringValue(wifi1)); | 713 base::Value(wifi1)); |
| 714 base::RunLoop().RunUntilIdle(); | 714 base::RunLoop().RunUntilIdle(); |
| 715 EXPECT_EQ(wifi1, test_observer_->default_network()); | 715 EXPECT_EQ(wifi1, test_observer_->default_network()); |
| 716 EXPECT_EQ(1u, test_observer_->default_network_change_count()); | 716 EXPECT_EQ(1u, test_observer_->default_network_change_count()); |
| 717 | 717 |
| 718 // Change the state of the default network. This should generate a | 718 // Change the state of the default network. This should generate a |
| 719 // default network notification. | 719 // default network notification. |
| 720 test_observer_->reset_change_counts(); | 720 test_observer_->reset_change_counts(); |
| 721 service_test_->SetServiceProperty(wifi1, shill::kStateProperty, | 721 service_test_->SetServiceProperty(wifi1, shill::kStateProperty, |
| 722 base::StringValue(shill::kStateReady)); | 722 base::Value(shill::kStateReady)); |
| 723 base::RunLoop().RunUntilIdle(); | 723 base::RunLoop().RunUntilIdle(); |
| 724 EXPECT_EQ(shill::kStateReady, | 724 EXPECT_EQ(shill::kStateReady, |
| 725 test_observer_->default_network_connection_state()); | 725 test_observer_->default_network_connection_state()); |
| 726 EXPECT_EQ(1u, test_observer_->default_network_change_count()); | 726 EXPECT_EQ(1u, test_observer_->default_network_change_count()); |
| 727 | 727 |
| 728 // Updating a property on the default network should also trigger | 728 // Updating a property on the default network should also trigger |
| 729 // a default network change. | 729 // a default network change. |
| 730 test_observer_->reset_change_counts(); | 730 test_observer_->reset_change_counts(); |
| 731 SetServiceProperty(wifi1, shill::kSecurityClassProperty, | 731 SetServiceProperty(wifi1, shill::kSecurityClassProperty, |
| 732 base::StringValue("TestSecurityClass")); | 732 base::Value("TestSecurityClass")); |
| 733 base::RunLoop().RunUntilIdle(); | 733 base::RunLoop().RunUntilIdle(); |
| 734 EXPECT_EQ(1u, test_observer_->default_network_change_count()); | 734 EXPECT_EQ(1u, test_observer_->default_network_change_count()); |
| 735 | 735 |
| 736 // No default network updates for signal strength changes. | 736 // No default network updates for signal strength changes. |
| 737 test_observer_->reset_change_counts(); | 737 test_observer_->reset_change_counts(); |
| 738 SetServiceProperty(wifi1, shill::kSignalStrengthProperty, base::Value(32)); | 738 SetServiceProperty(wifi1, shill::kSignalStrengthProperty, base::Value(32)); |
| 739 base::RunLoop().RunUntilIdle(); | 739 base::RunLoop().RunUntilIdle(); |
| 740 EXPECT_EQ(0u, test_observer_->default_network_change_count()); | 740 EXPECT_EQ(0u, test_observer_->default_network_change_count()); |
| 741 | 741 |
| 742 // Change the default network to a Connecting network, then set the | 742 // Change the default network to a Connecting network, then set the |
| 743 // state to Connected. The DefaultNetworkChange notification should only | 743 // state to Connected. The DefaultNetworkChange notification should only |
| 744 // fire once when the network is connected. | 744 // fire once when the network is connected. |
| 745 test_observer_->reset_change_counts(); | 745 test_observer_->reset_change_counts(); |
| 746 SetServiceProperty(wifi1, shill::kStateProperty, | 746 SetServiceProperty(wifi1, shill::kStateProperty, |
| 747 base::StringValue(shill::kStateIdle)); | 747 base::Value(shill::kStateIdle)); |
| 748 base::RunLoop().RunUntilIdle(); | 748 base::RunLoop().RunUntilIdle(); |
| 749 EXPECT_EQ(1u, test_observer_->default_network_change_count()); | 749 EXPECT_EQ(1u, test_observer_->default_network_change_count()); |
| 750 EXPECT_EQ(std::string(), test_observer_->default_network()); | 750 EXPECT_EQ(std::string(), test_observer_->default_network()); |
| 751 | 751 |
| 752 const std::string wifi2 = kShillManagerClientStubWifi2; | 752 const std::string wifi2 = kShillManagerClientStubWifi2; |
| 753 manager_test_->SetManagerProperty(shill::kDefaultServiceProperty, | 753 manager_test_->SetManagerProperty(shill::kDefaultServiceProperty, |
| 754 base::StringValue(wifi2)); | 754 base::Value(wifi2)); |
| 755 base::RunLoop().RunUntilIdle(); | 755 base::RunLoop().RunUntilIdle(); |
| 756 EXPECT_EQ(1u, test_observer_->default_network_change_count()); | 756 EXPECT_EQ(1u, test_observer_->default_network_change_count()); |
| 757 // Change the connection state of the default network, observer should fire. | 757 // Change the connection state of the default network, observer should fire. |
| 758 SetServiceProperty(wifi2, shill::kStateProperty, | 758 SetServiceProperty(wifi2, shill::kStateProperty, |
| 759 base::StringValue(shill::kStateReady)); | 759 base::Value(shill::kStateReady)); |
| 760 base::RunLoop().RunUntilIdle(); | 760 base::RunLoop().RunUntilIdle(); |
| 761 EXPECT_EQ(wifi2, test_observer_->default_network()); | 761 EXPECT_EQ(wifi2, test_observer_->default_network()); |
| 762 EXPECT_EQ(2u, test_observer_->default_network_change_count()); | 762 EXPECT_EQ(2u, test_observer_->default_network_change_count()); |
| 763 } | 763 } |
| 764 | 764 |
| 765 TEST_F(NetworkStateHandlerTest, RequestUpdate) { | 765 TEST_F(NetworkStateHandlerTest, RequestUpdate) { |
| 766 // Request an update for kShillManagerClientStubDefaultWifi. | 766 // Request an update for kShillManagerClientStubDefaultWifi. |
| 767 EXPECT_EQ(1, test_observer_->PropertyUpdatesForService( | 767 EXPECT_EQ(1, test_observer_->PropertyUpdatesForService( |
| 768 kShillManagerClientStubDefaultWifi)); | 768 kShillManagerClientStubDefaultWifi)); |
| 769 network_state_handler_->RequestUpdateForNetwork( | 769 network_state_handler_->RequestUpdateForNetwork( |
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 871 ShillIPConfigClient::TestInterface* ip_config_test = | 871 ShillIPConfigClient::TestInterface* ip_config_test = |
| 872 DBusThreadManager::Get()->GetShillIPConfigClient()->GetTestInterface(); | 872 DBusThreadManager::Get()->GetShillIPConfigClient()->GetTestInterface(); |
| 873 const std::string kIPConfigPath = "test_ip_config"; | 873 const std::string kIPConfigPath = "test_ip_config"; |
| 874 base::DictionaryValue ip_config_properties; | 874 base::DictionaryValue ip_config_properties; |
| 875 ip_config_test->AddIPConfig(kIPConfigPath, ip_config_properties); | 875 ip_config_test->AddIPConfig(kIPConfigPath, ip_config_properties); |
| 876 base::ListValue device_ip_configs; | 876 base::ListValue device_ip_configs; |
| 877 device_ip_configs.AppendString(kIPConfigPath); | 877 device_ip_configs.AppendString(kIPConfigPath); |
| 878 device_test_->SetDeviceProperty( | 878 device_test_->SetDeviceProperty( |
| 879 kShillManagerClientStubWifiDevice, shill::kIPConfigsProperty, | 879 kShillManagerClientStubWifiDevice, shill::kIPConfigsProperty, |
| 880 device_ip_configs); | 880 device_ip_configs); |
| 881 service_test_->SetServiceProperty( | 881 service_test_->SetServiceProperty(kShillManagerClientStubDefaultWifi, |
| 882 kShillManagerClientStubDefaultWifi, shill::kIPConfigProperty, | 882 shill::kIPConfigProperty, |
| 883 base::StringValue(kIPConfigPath)); | 883 base::Value(kIPConfigPath)); |
| 884 UpdateManagerProperties(); | 884 UpdateManagerProperties(); |
| 885 EXPECT_EQ(1, test_observer_->PropertyUpdatesForDevice( | 885 EXPECT_EQ(1, test_observer_->PropertyUpdatesForDevice( |
| 886 kShillManagerClientStubWifiDevice)); | 886 kShillManagerClientStubWifiDevice)); |
| 887 EXPECT_EQ(1, test_observer_->PropertyUpdatesForService( | 887 EXPECT_EQ(1, test_observer_->PropertyUpdatesForService( |
| 888 kShillManagerClientStubDefaultWifi)); | 888 kShillManagerClientStubDefaultWifi)); |
| 889 } | 889 } |
| 890 | 890 |
| 891 } // namespace chromeos | 891 } // namespace chromeos |
| OLD | NEW |