Chromium Code Reviews| 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> |
| 11 #include <set> | 11 #include <set> |
| 12 #include <string> | 12 #include <string> |
| 13 | 13 |
| 14 #include "base/bind.h" | 14 #include "base/bind.h" |
| 15 #include "base/macros.h" | 15 #include "base/macros.h" |
| 16 #include "base/message_loop/message_loop.h" | 16 #include "base/message_loop/message_loop.h" |
| 17 #include "base/run_loop.h" | |
| 17 #include "base/values.h" | 18 #include "base/values.h" |
| 18 #include "chromeos/dbus/dbus_thread_manager.h" | 19 #include "chromeos/dbus/dbus_thread_manager.h" |
| 19 #include "chromeos/dbus/shill_device_client.h" | 20 #include "chromeos/dbus/shill_device_client.h" |
| 20 #include "chromeos/dbus/shill_ipconfig_client.h" | 21 #include "chromeos/dbus/shill_ipconfig_client.h" |
| 21 #include "chromeos/dbus/shill_manager_client.h" | 22 #include "chromeos/dbus/shill_manager_client.h" |
| 22 #include "chromeos/dbus/shill_profile_client.h" | 23 #include "chromeos/dbus/shill_profile_client.h" |
| 23 #include "chromeos/dbus/shill_service_client.h" | 24 #include "chromeos/dbus/shill_service_client.h" |
| 24 #include "chromeos/network/device_state.h" | 25 #include "chromeos/network/device_state.h" |
| 25 #include "chromeos/network/network_state.h" | 26 #include "chromeos/network/network_state.h" |
| 26 #include "chromeos/network/network_state_handler.h" | 27 #include "chromeos/network/network_state_handler.h" |
| 27 #include "chromeos/network/network_state_handler_observer.h" | 28 #include "chromeos/network/network_state_handler_observer.h" |
| 28 #include "dbus/object_path.h" | 29 #include "dbus/object_path.h" |
| 29 #include "testing/gtest/include/gtest/gtest.h" | 30 #include "testing/gtest/include/gtest/gtest.h" |
| 30 #include "third_party/cros_system_api/dbus/service_constants.h" | 31 #include "third_party/cros_system_api/dbus/service_constants.h" |
| 31 | 32 |
| 32 namespace { | 33 namespace { |
| 33 | 34 |
| 34 void ErrorCallbackFunction(const std::string& error_name, | 35 void ErrorCallbackFunction(const std::string& error_name, |
| 35 const std::string& error_message) { | 36 const std::string& error_message) { |
| 36 LOG(ERROR) << "Shill Error: " << error_name << " : " << error_message; | 37 LOG(ERROR) << "Shill Error: " << error_name << " : " << error_message; |
| 37 } | 38 } |
| 38 | 39 |
| 39 const std::string kShillManagerClientStubWifiDevice = | 40 const char kShillManagerClientStubWifiDevice[] = "/device/stub_wifi_device1"; |
| 40 "/device/stub_wifi_device1"; | 41 const char kShillManagerClientStubCellularDevice[] = |
| 41 const std::string kShillManagerClientStubCellularDevice = | |
| 42 "/device/stub_cellular_device1"; | 42 "/device/stub_cellular_device1"; |
| 43 const std::string kShillManagerClientStubDefaultService = "/service/eth1"; | 43 const char kShillManagerClientStubDefaultService[] = "/service/eth1"; |
| 44 const std::string kShillManagerClientStubDefaultWifi = "/service/wifi1"; | 44 const char kShillManagerClientStubDefaultWifi[] = "/service/wifi1"; |
| 45 const std::string kShillManagerClientStubWifi2 = "/service/wifi2"; | 45 const char kShillManagerClientStubWifi2[] = "/service/wifi2"; |
| 46 const std::string kShillManagerClientStubCellular = "/service/cellular1"; | 46 const char kShillManagerClientStubCellular[] = "/service/cellular1"; |
| 47 | 47 |
| 48 using chromeos::DeviceState; | 48 using chromeos::DeviceState; |
| 49 using chromeos::NetworkState; | 49 using chromeos::NetworkState; |
| 50 using chromeos::NetworkStateHandler; | 50 using chromeos::NetworkStateHandler; |
| 51 | 51 |
| 52 class TestObserver : public chromeos::NetworkStateHandlerObserver { | 52 class TestObserver : public chromeos::NetworkStateHandlerObserver { |
| 53 public: | 53 public: |
| 54 explicit TestObserver(NetworkStateHandler* handler) | 54 explicit TestObserver(NetworkStateHandler* handler) |
| 55 : handler_(handler), | 55 : handler_(handler), |
| 56 device_list_changed_count_(0), | 56 device_list_changed_count_(0), |
| (...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 180 ~NetworkStateHandlerTest() override {} | 180 ~NetworkStateHandlerTest() override {} |
| 181 | 181 |
| 182 void SetUp() override { | 182 void SetUp() override { |
| 183 // Initialize DBusThreadManager with a stub implementation. | 183 // Initialize DBusThreadManager with a stub implementation. |
| 184 DBusThreadManager::Initialize(); | 184 DBusThreadManager::Initialize(); |
| 185 SetupDefaultShillState(); | 185 SetupDefaultShillState(); |
| 186 network_state_handler_.reset(new NetworkStateHandler); | 186 network_state_handler_.reset(new NetworkStateHandler); |
| 187 test_observer_.reset(new TestObserver(network_state_handler_.get())); | 187 test_observer_.reset(new TestObserver(network_state_handler_.get())); |
| 188 network_state_handler_->AddObserver(test_observer_.get(), FROM_HERE); | 188 network_state_handler_->AddObserver(test_observer_.get(), FROM_HERE); |
| 189 network_state_handler_->InitShillPropertyHandler(); | 189 network_state_handler_->InitShillPropertyHandler(); |
| 190 message_loop_.RunUntilIdle(); | 190 base::RunLoop().RunUntilIdle(); |
| 191 test_observer_->reset_change_counts(); | 191 test_observer_->reset_change_counts(); |
| 192 } | 192 } |
| 193 | 193 |
| 194 void TearDown() override { | 194 void TearDown() override { |
| 195 network_state_handler_->RemoveObserver(test_observer_.get(), FROM_HERE); | 195 network_state_handler_->RemoveObserver(test_observer_.get(), FROM_HERE); |
| 196 test_observer_.reset(); | 196 test_observer_.reset(); |
| 197 network_state_handler_.reset(); | 197 network_state_handler_.reset(); |
| 198 DBusThreadManager::Shutdown(); | 198 DBusThreadManager::Shutdown(); |
| 199 } | 199 } |
| 200 | 200 |
| 201 protected: | 201 protected: |
| 202 void AddService(const std::string& service_path, | 202 void AddService(const std::string& service_path, |
| 203 const std::string& guid, | 203 const std::string& guid, |
| 204 const std::string& name, | 204 const std::string& name, |
| 205 const std::string& type, | 205 const std::string& type, |
| 206 const std::string& state) { | 206 const std::string& state) { |
| 207 service_test_->AddService(service_path, guid, name, type, state, | 207 service_test_->AddService(service_path, guid, name, type, state, |
| 208 true /* add_to_visible */); | 208 true /* add_to_visible */); |
| 209 } | 209 } |
| 210 | 210 |
| 211 void SetupDefaultShillState() { | 211 void SetupDefaultShillState() { |
| 212 message_loop_.RunUntilIdle(); // Process any pending updates | 212 base::RunLoop().RunUntilIdle(); // Process any pending updates |
| 213 device_test_ = | 213 device_test_ = |
| 214 DBusThreadManager::Get()->GetShillDeviceClient()->GetTestInterface(); | 214 DBusThreadManager::Get()->GetShillDeviceClient()->GetTestInterface(); |
| 215 ASSERT_TRUE(device_test_); | 215 ASSERT_TRUE(device_test_); |
| 216 device_test_->ClearDevices(); | 216 device_test_->ClearDevices(); |
| 217 device_test_->AddDevice(kShillManagerClientStubWifiDevice, | 217 device_test_->AddDevice(kShillManagerClientStubWifiDevice, |
| 218 shill::kTypeWifi, "stub_wifi_device1"); | 218 shill::kTypeWifi, "stub_wifi_device1"); |
| 219 device_test_->AddDevice(kShillManagerClientStubCellularDevice, | 219 device_test_->AddDevice(kShillManagerClientStubCellularDevice, |
| 220 shill::kTypeCellular, "stub_cellular_device1"); | 220 shill::kTypeCellular, "stub_cellular_device1"); |
| 221 | 221 |
| 222 manager_test_ = | 222 manager_test_ = |
| (...skipping 24 matching lines...) Expand all Loading... | |
| 247 "wifi2", | 247 "wifi2", |
| 248 shill::kTypeWifi, | 248 shill::kTypeWifi, |
| 249 shill::kStateIdle); | 249 shill::kStateIdle); |
| 250 AddService(kShillManagerClientStubCellular, | 250 AddService(kShillManagerClientStubCellular, |
| 251 "cellular1_guid", | 251 "cellular1_guid", |
| 252 "cellular1", | 252 "cellular1", |
| 253 shill::kTypeCellular, | 253 shill::kTypeCellular, |
| 254 shill::kStateIdle); | 254 shill::kStateIdle); |
| 255 } | 255 } |
| 256 | 256 |
| 257 void UpdateManagerProperties() { | 257 void UpdateManagerProperties() { base::RunLoop().RunUntilIdle(); } |
| 258 message_loop_.RunUntilIdle(); | |
| 259 } | |
| 260 | 258 |
| 261 void SetServiceProperty(const std::string& service_path, | 259 void SetServiceProperty(const std::string& service_path, |
| 262 const std::string& key, | 260 const std::string& key, |
| 263 const base::Value& value) { | 261 const base::Value& value) { |
| 264 DBusThreadManager::Get()->GetShillServiceClient()->SetProperty( | 262 DBusThreadManager::Get()->GetShillServiceClient()->SetProperty( |
| 265 dbus::ObjectPath(service_path), key, value, | 263 dbus::ObjectPath(service_path), key, value, |
| 266 base::Bind(&base::DoNothing), base::Bind(&ErrorCallbackFunction)); | 264 base::Bind(&base::DoNothing), base::Bind(&ErrorCallbackFunction)); |
| 267 } | 265 } |
| 268 | 266 |
| 269 base::MessageLoopForUI message_loop_; | 267 base::MessageLoopForUI message_loop_; |
|
armansito
2016/09/06 22:04:32
ditto
| |
| 270 std::unique_ptr<NetworkStateHandler> network_state_handler_; | 268 std::unique_ptr<NetworkStateHandler> network_state_handler_; |
| 271 std::unique_ptr<TestObserver> test_observer_; | 269 std::unique_ptr<TestObserver> test_observer_; |
| 272 ShillDeviceClient::TestInterface* device_test_; | 270 ShillDeviceClient::TestInterface* device_test_; |
| 273 ShillManagerClient::TestInterface* manager_test_; | 271 ShillManagerClient::TestInterface* manager_test_; |
| 274 ShillProfileClient::TestInterface* profile_test_; | 272 ShillProfileClient::TestInterface* profile_test_; |
| 275 ShillServiceClient::TestInterface* service_test_; | 273 ShillServiceClient::TestInterface* service_test_; |
| 276 | 274 |
| 277 private: | 275 private: |
| 278 DISALLOW_COPY_AND_ASSIGN(NetworkStateHandlerTest); | 276 DISALLOW_COPY_AND_ASSIGN(NetworkStateHandlerTest); |
| 279 }; | 277 }; |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 319 const std::string wifi_favorite_path = "/service/wifi_faviorite"; | 317 const std::string wifi_favorite_path = "/service/wifi_faviorite"; |
| 320 service_test_->AddService(wifi_favorite_path, | 318 service_test_->AddService(wifi_favorite_path, |
| 321 "wifi_faviorite_guid", | 319 "wifi_faviorite_guid", |
| 322 "wifi_faviorite", | 320 "wifi_faviorite", |
| 323 shill::kTypeWifi, | 321 shill::kTypeWifi, |
| 324 shill::kStateIdle, | 322 shill::kStateIdle, |
| 325 false /* add_to_visible */); | 323 false /* add_to_visible */); |
| 326 profile_test_->AddProfile(profile, "" /* userhash */); | 324 profile_test_->AddProfile(profile, "" /* userhash */); |
| 327 EXPECT_TRUE(profile_test_->AddService(profile, wifi_favorite_path)); | 325 EXPECT_TRUE(profile_test_->AddService(profile, wifi_favorite_path)); |
| 328 UpdateManagerProperties(); | 326 UpdateManagerProperties(); |
| 329 message_loop_.RunUntilIdle(); | 327 base::RunLoop().RunUntilIdle(); |
| 330 EXPECT_EQ(kNumShillManagerClientStubImplServices + 1, | 328 EXPECT_EQ(kNumShillManagerClientStubImplServices + 1, |
| 331 test_observer_->network_count()); | 329 test_observer_->network_count()); |
| 332 | 330 |
| 333 // Get all networks. | 331 // Get all networks. |
| 334 NetworkStateHandler::NetworkStateList networks; | 332 NetworkStateHandler::NetworkStateList networks; |
| 335 network_state_handler_->GetNetworkListByType(NetworkTypePattern::Default(), | 333 network_state_handler_->GetNetworkListByType(NetworkTypePattern::Default(), |
| 336 false /* configured_only */, | 334 false /* configured_only */, |
| 337 false /* visible_only */, | 335 false /* visible_only */, |
| 338 0 /* no limit */, | 336 0 /* no limit */, |
| 339 &networks); | 337 &networks); |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 400 test_observer_->network_count()); | 398 test_observer_->network_count()); |
| 401 // Add a non-visible network to the profile. | 399 // Add a non-visible network to the profile. |
| 402 const std::string profile = "/profile/profile1"; | 400 const std::string profile = "/profile/profile1"; |
| 403 const std::string wifi_favorite_path = "/service/wifi_faviorite"; | 401 const std::string wifi_favorite_path = "/service/wifi_faviorite"; |
| 404 service_test_->AddService(wifi_favorite_path, | 402 service_test_->AddService(wifi_favorite_path, |
| 405 "wifi_faviorite_guid", | 403 "wifi_faviorite_guid", |
| 406 "wifi_faviorite", | 404 "wifi_faviorite", |
| 407 shill::kTypeWifi, | 405 shill::kTypeWifi, |
| 408 shill::kStateIdle, | 406 shill::kStateIdle, |
| 409 false /* add_to_visible */); | 407 false /* add_to_visible */); |
| 410 message_loop_.RunUntilIdle(); | 408 base::RunLoop().RunUntilIdle(); |
| 411 EXPECT_EQ(kNumShillManagerClientStubImplServices + 1, | 409 EXPECT_EQ(kNumShillManagerClientStubImplServices + 1, |
| 412 test_observer_->network_count()); | 410 test_observer_->network_count()); |
| 413 | 411 |
| 414 // Get visible networks. | 412 // Get visible networks. |
| 415 NetworkStateHandler::NetworkStateList networks; | 413 NetworkStateHandler::NetworkStateList networks; |
| 416 network_state_handler_->GetVisibleNetworkList(&networks); | 414 network_state_handler_->GetVisibleNetworkList(&networks); |
| 417 EXPECT_EQ(kNumShillManagerClientStubImplServices, networks.size()); | 415 EXPECT_EQ(kNumShillManagerClientStubImplServices, networks.size()); |
| 418 | 416 |
| 419 // Change the visible state of a network. | 417 // Change the visible state of a network. |
| 420 SetServiceProperty(kShillManagerClientStubWifi2, shill::kVisibleProperty, | 418 SetServiceProperty(kShillManagerClientStubWifi2, shill::kVisibleProperty, |
| 421 base::FundamentalValue(false)); | 419 base::FundamentalValue(false)); |
| 422 message_loop_.RunUntilIdle(); | 420 base::RunLoop().RunUntilIdle(); |
| 423 network_state_handler_->GetVisibleNetworkList(&networks); | 421 network_state_handler_->GetVisibleNetworkList(&networks); |
| 424 EXPECT_EQ(kNumShillManagerClientStubImplServices - 1, networks.size()); | 422 EXPECT_EQ(kNumShillManagerClientStubImplServices - 1, networks.size()); |
| 425 } | 423 } |
| 426 | 424 |
| 427 TEST_F(NetworkStateHandlerTest, TechnologyChanged) { | 425 TEST_F(NetworkStateHandlerTest, TechnologyChanged) { |
| 428 // Disable a technology. Will immediately set the state to AVAILABLE and | 426 // Disable a technology. Will immediately set the state to AVAILABLE and |
| 429 // notify observers. | 427 // notify observers. |
| 430 network_state_handler_->SetTechnologyEnabled( | 428 network_state_handler_->SetTechnologyEnabled( |
| 431 NetworkTypePattern::WiFi(), false, network_handler::ErrorCallback()); | 429 NetworkTypePattern::WiFi(), false, network_handler::ErrorCallback()); |
| 432 EXPECT_EQ(1u, test_observer_->device_list_changed_count()); | 430 EXPECT_EQ(1u, test_observer_->device_list_changed_count()); |
| 433 EXPECT_EQ( | 431 EXPECT_EQ( |
| 434 NetworkStateHandler::TECHNOLOGY_AVAILABLE, | 432 NetworkStateHandler::TECHNOLOGY_AVAILABLE, |
| 435 network_state_handler_->GetTechnologyState(NetworkTypePattern::WiFi())); | 433 network_state_handler_->GetTechnologyState(NetworkTypePattern::WiFi())); |
| 436 | 434 |
| 437 // Run the message loop. An additional notification will be received when | 435 // Run the message loop. An additional notification will be received when |
| 438 // Shill updates the enabled technologies. The state should remain AVAILABLE. | 436 // Shill updates the enabled technologies. The state should remain AVAILABLE. |
| 439 test_observer_->reset_change_counts(); | 437 test_observer_->reset_change_counts(); |
| 440 message_loop_.RunUntilIdle(); | 438 base::RunLoop().RunUntilIdle(); |
| 441 EXPECT_EQ(1u, test_observer_->device_list_changed_count()); | 439 EXPECT_EQ(1u, test_observer_->device_list_changed_count()); |
| 442 EXPECT_EQ( | 440 EXPECT_EQ( |
| 443 NetworkStateHandler::TECHNOLOGY_AVAILABLE, | 441 NetworkStateHandler::TECHNOLOGY_AVAILABLE, |
| 444 network_state_handler_->GetTechnologyState(NetworkTypePattern::WiFi())); | 442 network_state_handler_->GetTechnologyState(NetworkTypePattern::WiFi())); |
| 445 | 443 |
| 446 // Enable a technology. Will immediately set the state to ENABLING and | 444 // Enable a technology. Will immediately set the state to ENABLING and |
| 447 // notify observers. | 445 // notify observers. |
| 448 test_observer_->reset_change_counts(); | 446 test_observer_->reset_change_counts(); |
| 449 network_state_handler_->SetTechnologyEnabled( | 447 network_state_handler_->SetTechnologyEnabled( |
| 450 NetworkTypePattern::WiFi(), true, network_handler::ErrorCallback()); | 448 NetworkTypePattern::WiFi(), true, network_handler::ErrorCallback()); |
| 451 EXPECT_EQ(1u, test_observer_->device_list_changed_count()); | 449 EXPECT_EQ(1u, test_observer_->device_list_changed_count()); |
| 452 EXPECT_EQ( | 450 EXPECT_EQ( |
| 453 NetworkStateHandler::TECHNOLOGY_ENABLING, | 451 NetworkStateHandler::TECHNOLOGY_ENABLING, |
| 454 network_state_handler_->GetTechnologyState(NetworkTypePattern::WiFi())); | 452 network_state_handler_->GetTechnologyState(NetworkTypePattern::WiFi())); |
| 455 | 453 |
| 456 // Run the message loop. State should change to ENABLED. | 454 // Run the message loop. State should change to ENABLED. |
| 457 test_observer_->reset_change_counts(); | 455 test_observer_->reset_change_counts(); |
| 458 message_loop_.RunUntilIdle(); | 456 base::RunLoop().RunUntilIdle(); |
| 459 EXPECT_EQ(1u, test_observer_->device_list_changed_count()); | 457 EXPECT_EQ(1u, test_observer_->device_list_changed_count()); |
| 460 EXPECT_EQ( | 458 EXPECT_EQ( |
| 461 NetworkStateHandler::TECHNOLOGY_ENABLED, | 459 NetworkStateHandler::TECHNOLOGY_ENABLED, |
| 462 network_state_handler_->GetTechnologyState(NetworkTypePattern::WiFi())); | 460 network_state_handler_->GetTechnologyState(NetworkTypePattern::WiFi())); |
| 463 } | 461 } |
| 464 | 462 |
| 465 TEST_F(NetworkStateHandlerTest, TechnologyState) { | 463 TEST_F(NetworkStateHandlerTest, TechnologyState) { |
| 466 manager_test_->RemoveTechnology(shill::kTypeWimax); | 464 manager_test_->RemoveTechnology(shill::kTypeWimax); |
| 467 message_loop_.RunUntilIdle(); | 465 base::RunLoop().RunUntilIdle(); |
| 468 EXPECT_EQ( | 466 EXPECT_EQ( |
| 469 NetworkStateHandler::TECHNOLOGY_UNAVAILABLE, | 467 NetworkStateHandler::TECHNOLOGY_UNAVAILABLE, |
| 470 network_state_handler_->GetTechnologyState(NetworkTypePattern::Wimax())); | 468 network_state_handler_->GetTechnologyState(NetworkTypePattern::Wimax())); |
| 471 | 469 |
| 472 manager_test_->AddTechnology(shill::kTypeWimax, false); | 470 manager_test_->AddTechnology(shill::kTypeWimax, false); |
| 473 message_loop_.RunUntilIdle(); | 471 base::RunLoop().RunUntilIdle(); |
| 474 EXPECT_EQ( | 472 EXPECT_EQ( |
| 475 NetworkStateHandler::TECHNOLOGY_AVAILABLE, | 473 NetworkStateHandler::TECHNOLOGY_AVAILABLE, |
| 476 network_state_handler_->GetTechnologyState(NetworkTypePattern::Wimax())); | 474 network_state_handler_->GetTechnologyState(NetworkTypePattern::Wimax())); |
| 477 | 475 |
| 478 manager_test_->SetTechnologyInitializing(shill::kTypeWimax, true); | 476 manager_test_->SetTechnologyInitializing(shill::kTypeWimax, true); |
| 479 message_loop_.RunUntilIdle(); | 477 base::RunLoop().RunUntilIdle(); |
| 480 EXPECT_EQ( | 478 EXPECT_EQ( |
| 481 NetworkStateHandler::TECHNOLOGY_UNINITIALIZED, | 479 NetworkStateHandler::TECHNOLOGY_UNINITIALIZED, |
| 482 network_state_handler_->GetTechnologyState(NetworkTypePattern::Wimax())); | 480 network_state_handler_->GetTechnologyState(NetworkTypePattern::Wimax())); |
| 483 | 481 |
| 484 manager_test_->SetTechnologyInitializing(shill::kTypeWimax, false); | 482 manager_test_->SetTechnologyInitializing(shill::kTypeWimax, false); |
| 485 network_state_handler_->SetTechnologyEnabled( | 483 network_state_handler_->SetTechnologyEnabled( |
| 486 NetworkTypePattern::Wimax(), true, network_handler::ErrorCallback()); | 484 NetworkTypePattern::Wimax(), true, network_handler::ErrorCallback()); |
| 487 message_loop_.RunUntilIdle(); | 485 base::RunLoop().RunUntilIdle(); |
| 488 EXPECT_EQ( | 486 EXPECT_EQ( |
| 489 NetworkStateHandler::TECHNOLOGY_ENABLED, | 487 NetworkStateHandler::TECHNOLOGY_ENABLED, |
| 490 network_state_handler_->GetTechnologyState(NetworkTypePattern::Wimax())); | 488 network_state_handler_->GetTechnologyState(NetworkTypePattern::Wimax())); |
| 491 | 489 |
| 492 manager_test_->RemoveTechnology(shill::kTypeWimax); | 490 manager_test_->RemoveTechnology(shill::kTypeWimax); |
| 493 message_loop_.RunUntilIdle(); | 491 base::RunLoop().RunUntilIdle(); |
| 494 EXPECT_EQ( | 492 EXPECT_EQ( |
| 495 NetworkStateHandler::TECHNOLOGY_UNAVAILABLE, | 493 NetworkStateHandler::TECHNOLOGY_UNAVAILABLE, |
| 496 network_state_handler_->GetTechnologyState(NetworkTypePattern::Wimax())); | 494 network_state_handler_->GetTechnologyState(NetworkTypePattern::Wimax())); |
| 497 } | 495 } |
| 498 | 496 |
| 499 TEST_F(NetworkStateHandlerTest, ServicePropertyChanged) { | 497 TEST_F(NetworkStateHandlerTest, ServicePropertyChanged) { |
| 500 // Set a service property. | 498 // Set a service property. |
| 501 const std::string eth1 = kShillManagerClientStubDefaultService; | 499 const std::string eth1 = kShillManagerClientStubDefaultService; |
| 502 const NetworkState* ethernet = network_state_handler_->GetNetworkState(eth1); | 500 const NetworkState* ethernet = network_state_handler_->GetNetworkState(eth1); |
| 503 ASSERT_TRUE(ethernet); | 501 ASSERT_TRUE(ethernet); |
| 504 EXPECT_EQ("", ethernet->security_class()); | 502 EXPECT_EQ("", ethernet->security_class()); |
| 505 EXPECT_EQ(1, test_observer_->PropertyUpdatesForService(eth1)); | 503 EXPECT_EQ(1, test_observer_->PropertyUpdatesForService(eth1)); |
| 506 base::StringValue security_class_value("TestSecurityClass"); | 504 base::StringValue security_class_value("TestSecurityClass"); |
| 507 SetServiceProperty(eth1, shill::kSecurityClassProperty, security_class_value); | 505 SetServiceProperty(eth1, shill::kSecurityClassProperty, security_class_value); |
| 508 message_loop_.RunUntilIdle(); | 506 base::RunLoop().RunUntilIdle(); |
| 509 ethernet = network_state_handler_->GetNetworkState(eth1); | 507 ethernet = network_state_handler_->GetNetworkState(eth1); |
| 510 EXPECT_EQ("TestSecurityClass", ethernet->security_class()); | 508 EXPECT_EQ("TestSecurityClass", ethernet->security_class()); |
| 511 EXPECT_EQ(2, test_observer_->PropertyUpdatesForService(eth1)); | 509 EXPECT_EQ(2, test_observer_->PropertyUpdatesForService(eth1)); |
| 512 | 510 |
| 513 // Changing a service to the existing value should not trigger an update. | 511 // Changing a service to the existing value should not trigger an update. |
| 514 SetServiceProperty(eth1, shill::kSecurityClassProperty, security_class_value); | 512 SetServiceProperty(eth1, shill::kSecurityClassProperty, security_class_value); |
| 515 message_loop_.RunUntilIdle(); | 513 base::RunLoop().RunUntilIdle(); |
| 516 EXPECT_EQ(2, test_observer_->PropertyUpdatesForService(eth1)); | 514 EXPECT_EQ(2, test_observer_->PropertyUpdatesForService(eth1)); |
| 517 } | 515 } |
| 518 | 516 |
| 519 TEST_F(NetworkStateHandlerTest, GetState) { | 517 TEST_F(NetworkStateHandlerTest, GetState) { |
| 520 const std::string profile = "/profile/profile1"; | 518 const std::string profile = "/profile/profile1"; |
| 521 const std::string wifi_path = kShillManagerClientStubDefaultWifi; | 519 const std::string wifi_path = kShillManagerClientStubDefaultWifi; |
| 522 | 520 |
| 523 // Add a wifi service to a Profile. | 521 // Add a wifi service to a Profile. |
| 524 profile_test_->AddProfile(profile, "" /* userhash */); | 522 profile_test_->AddProfile(profile, "" /* userhash */); |
| 525 EXPECT_TRUE(profile_test_->AddService(profile, wifi_path)); | 523 EXPECT_TRUE(profile_test_->AddService(profile, wifi_path)); |
| (...skipping 18 matching lines...) Expand all Loading... | |
| 544 } | 542 } |
| 545 | 543 |
| 546 TEST_F(NetworkStateHandlerTest, NetworkConnectionStateChanged) { | 544 TEST_F(NetworkStateHandlerTest, NetworkConnectionStateChanged) { |
| 547 const std::string eth1 = kShillManagerClientStubDefaultService; | 545 const std::string eth1 = kShillManagerClientStubDefaultService; |
| 548 EXPECT_EQ(0, test_observer_->ConnectionStateChangesForService(eth1)); | 546 EXPECT_EQ(0, test_observer_->ConnectionStateChangesForService(eth1)); |
| 549 | 547 |
| 550 // Change a network state. | 548 // Change a network state. |
| 551 base::StringValue connection_state_idle_value(shill::kStateIdle); | 549 base::StringValue connection_state_idle_value(shill::kStateIdle); |
| 552 service_test_->SetServiceProperty(eth1, shill::kStateProperty, | 550 service_test_->SetServiceProperty(eth1, shill::kStateProperty, |
| 553 connection_state_idle_value); | 551 connection_state_idle_value); |
| 554 message_loop_.RunUntilIdle(); | 552 base::RunLoop().RunUntilIdle(); |
| 555 EXPECT_EQ(shill::kStateIdle, | 553 EXPECT_EQ(shill::kStateIdle, |
| 556 test_observer_->NetworkConnectionStateForService(eth1)); | 554 test_observer_->NetworkConnectionStateForService(eth1)); |
| 557 EXPECT_EQ(1, test_observer_->ConnectionStateChangesForService(eth1)); | 555 EXPECT_EQ(1, test_observer_->ConnectionStateChangesForService(eth1)); |
| 558 // Confirm that changing the connection state to the same value does *not* | 556 // Confirm that changing the connection state to the same value does *not* |
| 559 // signal the observer. | 557 // signal the observer. |
| 560 service_test_->SetServiceProperty(eth1, shill::kStateProperty, | 558 service_test_->SetServiceProperty(eth1, shill::kStateProperty, |
| 561 connection_state_idle_value); | 559 connection_state_idle_value); |
| 562 message_loop_.RunUntilIdle(); | 560 base::RunLoop().RunUntilIdle(); |
| 563 EXPECT_EQ(1, test_observer_->ConnectionStateChangesForService(eth1)); | 561 EXPECT_EQ(1, test_observer_->ConnectionStateChangesForService(eth1)); |
| 564 } | 562 } |
| 565 | 563 |
| 566 TEST_F(NetworkStateHandlerTest, DefaultServiceDisconnected) { | 564 TEST_F(NetworkStateHandlerTest, DefaultServiceDisconnected) { |
| 567 const std::string eth1 = kShillManagerClientStubDefaultService; | 565 const std::string eth1 = kShillManagerClientStubDefaultService; |
| 568 const std::string wifi1 = kShillManagerClientStubDefaultWifi; | 566 const std::string wifi1 = kShillManagerClientStubDefaultWifi; |
| 569 | 567 |
| 570 EXPECT_EQ(0u, test_observer_->default_network_change_count()); | 568 EXPECT_EQ(0u, test_observer_->default_network_change_count()); |
| 571 // Disconnect ethernet. | 569 // Disconnect ethernet. |
| 572 base::StringValue connection_state_idle_value(shill::kStateIdle); | 570 base::StringValue connection_state_idle_value(shill::kStateIdle); |
| 573 service_test_->SetServiceProperty(eth1, shill::kStateProperty, | 571 service_test_->SetServiceProperty(eth1, shill::kStateProperty, |
| 574 connection_state_idle_value); | 572 connection_state_idle_value); |
| 575 message_loop_.RunUntilIdle(); | 573 base::RunLoop().RunUntilIdle(); |
| 576 // Expect two changes: first when eth1 becomes disconnected, second when | 574 // Expect two changes: first when eth1 becomes disconnected, second when |
| 577 // wifi1 becomes the default. | 575 // wifi1 becomes the default. |
| 578 EXPECT_EQ(2u, test_observer_->default_network_change_count()); | 576 EXPECT_EQ(2u, test_observer_->default_network_change_count()); |
| 579 EXPECT_EQ(wifi1, test_observer_->default_network()); | 577 EXPECT_EQ(wifi1, test_observer_->default_network()); |
| 580 | 578 |
| 581 // Disconnect wifi. | 579 // Disconnect wifi. |
| 582 test_observer_->reset_change_counts(); | 580 test_observer_->reset_change_counts(); |
| 583 service_test_->SetServiceProperty(wifi1, shill::kStateProperty, | 581 service_test_->SetServiceProperty(wifi1, shill::kStateProperty, |
| 584 connection_state_idle_value); | 582 connection_state_idle_value); |
| 585 message_loop_.RunUntilIdle(); | 583 base::RunLoop().RunUntilIdle(); |
| 586 EXPECT_EQ(1u, test_observer_->default_network_change_count()); | 584 EXPECT_EQ(1u, test_observer_->default_network_change_count()); |
| 587 EXPECT_EQ("", test_observer_->default_network()); | 585 EXPECT_EQ("", test_observer_->default_network()); |
| 588 } | 586 } |
| 589 | 587 |
| 590 TEST_F(NetworkStateHandlerTest, DefaultServiceConnected) { | 588 TEST_F(NetworkStateHandlerTest, DefaultServiceConnected) { |
| 591 const std::string eth1 = kShillManagerClientStubDefaultService; | 589 const std::string eth1 = kShillManagerClientStubDefaultService; |
| 592 const std::string wifi1 = kShillManagerClientStubDefaultWifi; | 590 const std::string wifi1 = kShillManagerClientStubDefaultWifi; |
| 593 | 591 |
| 594 // Disconnect ethernet and wifi. | 592 // Disconnect ethernet and wifi. |
| 595 base::StringValue connection_state_idle_value(shill::kStateIdle); | 593 base::StringValue connection_state_idle_value(shill::kStateIdle); |
| 596 service_test_->SetServiceProperty(eth1, shill::kStateProperty, | 594 service_test_->SetServiceProperty(eth1, shill::kStateProperty, |
| 597 connection_state_idle_value); | 595 connection_state_idle_value); |
| 598 service_test_->SetServiceProperty(wifi1, shill::kStateProperty, | 596 service_test_->SetServiceProperty(wifi1, shill::kStateProperty, |
| 599 connection_state_idle_value); | 597 connection_state_idle_value); |
| 600 message_loop_.RunUntilIdle(); | 598 base::RunLoop().RunUntilIdle(); |
| 601 EXPECT_EQ(std::string(), test_observer_->default_network()); | 599 EXPECT_EQ(std::string(), test_observer_->default_network()); |
| 602 | 600 |
| 603 // Connect ethernet, should become the default network. | 601 // Connect ethernet, should become the default network. |
| 604 test_observer_->reset_change_counts(); | 602 test_observer_->reset_change_counts(); |
| 605 base::StringValue connection_state_ready_value(shill::kStateReady); | 603 base::StringValue connection_state_ready_value(shill::kStateReady); |
| 606 service_test_->SetServiceProperty(eth1, shill::kStateProperty, | 604 service_test_->SetServiceProperty(eth1, shill::kStateProperty, |
| 607 connection_state_ready_value); | 605 connection_state_ready_value); |
| 608 message_loop_.RunUntilIdle(); | 606 base::RunLoop().RunUntilIdle(); |
| 609 EXPECT_EQ(eth1, test_observer_->default_network()); | 607 EXPECT_EQ(eth1, test_observer_->default_network()); |
| 610 EXPECT_EQ(shill::kStateReady, | 608 EXPECT_EQ(shill::kStateReady, |
| 611 test_observer_->default_network_connection_state()); | 609 test_observer_->default_network_connection_state()); |
| 612 EXPECT_EQ(1u, test_observer_->default_network_change_count()); | 610 EXPECT_EQ(1u, test_observer_->default_network_change_count()); |
| 613 } | 611 } |
| 614 | 612 |
| 615 TEST_F(NetworkStateHandlerTest, DefaultServiceChanged) { | 613 TEST_F(NetworkStateHandlerTest, DefaultServiceChanged) { |
| 616 const std::string eth1 = kShillManagerClientStubDefaultService; | 614 const std::string eth1 = kShillManagerClientStubDefaultService; |
| 617 // The default service should be eth1. | 615 // The default service should be eth1. |
| 618 EXPECT_EQ(eth1, test_observer_->default_network()); | 616 EXPECT_EQ(eth1, test_observer_->default_network()); |
| 619 | 617 |
| 620 // Change the default network by changing Manager.DefaultService. | 618 // Change the default network by changing Manager.DefaultService. |
| 621 // This should only generate one default network notification when the | 619 // This should only generate one default network notification when the |
| 622 // DefaultService property changes. | 620 // DefaultService property changes. |
| 623 const std::string wifi1 = kShillManagerClientStubDefaultWifi; | 621 const std::string wifi1 = kShillManagerClientStubDefaultWifi; |
| 624 SetServiceProperty(eth1, shill::kStateProperty, | 622 SetServiceProperty(eth1, shill::kStateProperty, |
| 625 base::StringValue(shill::kStateIdle)); | 623 base::StringValue(shill::kStateIdle)); |
| 626 manager_test_->SetManagerProperty(shill::kDefaultServiceProperty, | 624 manager_test_->SetManagerProperty(shill::kDefaultServiceProperty, |
| 627 base::StringValue(wifi1)); | 625 base::StringValue(wifi1)); |
| 628 message_loop_.RunUntilIdle(); | 626 base::RunLoop().RunUntilIdle(); |
| 629 EXPECT_EQ(wifi1, test_observer_->default_network()); | 627 EXPECT_EQ(wifi1, test_observer_->default_network()); |
| 630 EXPECT_EQ(1u, test_observer_->default_network_change_count()); | 628 EXPECT_EQ(1u, test_observer_->default_network_change_count()); |
| 631 | 629 |
| 632 // Change the state of the default network. This should generate a | 630 // Change the state of the default network. This should generate a |
| 633 // default network notification. | 631 // default network notification. |
| 634 test_observer_->reset_change_counts(); | 632 test_observer_->reset_change_counts(); |
| 635 service_test_->SetServiceProperty(wifi1, shill::kStateProperty, | 633 service_test_->SetServiceProperty(wifi1, shill::kStateProperty, |
| 636 base::StringValue(shill::kStateReady)); | 634 base::StringValue(shill::kStateReady)); |
| 637 message_loop_.RunUntilIdle(); | 635 base::RunLoop().RunUntilIdle(); |
| 638 EXPECT_EQ(shill::kStateReady, | 636 EXPECT_EQ(shill::kStateReady, |
| 639 test_observer_->default_network_connection_state()); | 637 test_observer_->default_network_connection_state()); |
| 640 EXPECT_EQ(1u, test_observer_->default_network_change_count()); | 638 EXPECT_EQ(1u, test_observer_->default_network_change_count()); |
| 641 | 639 |
| 642 // Updating a property on the default network should also trigger | 640 // Updating a property on the default network should also trigger |
| 643 // a default network change. | 641 // a default network change. |
| 644 test_observer_->reset_change_counts(); | 642 test_observer_->reset_change_counts(); |
| 645 SetServiceProperty(wifi1, shill::kSecurityClassProperty, | 643 SetServiceProperty(wifi1, shill::kSecurityClassProperty, |
| 646 base::StringValue("TestSecurityClass")); | 644 base::StringValue("TestSecurityClass")); |
| 647 message_loop_.RunUntilIdle(); | 645 base::RunLoop().RunUntilIdle(); |
| 648 EXPECT_EQ(1u, test_observer_->default_network_change_count()); | 646 EXPECT_EQ(1u, test_observer_->default_network_change_count()); |
| 649 | 647 |
| 650 // No default network updates for signal strength changes. | 648 // No default network updates for signal strength changes. |
| 651 test_observer_->reset_change_counts(); | 649 test_observer_->reset_change_counts(); |
| 652 SetServiceProperty(wifi1, shill::kSignalStrengthProperty, | 650 SetServiceProperty(wifi1, shill::kSignalStrengthProperty, |
| 653 base::FundamentalValue(32)); | 651 base::FundamentalValue(32)); |
| 654 message_loop_.RunUntilIdle(); | 652 base::RunLoop().RunUntilIdle(); |
| 655 EXPECT_EQ(0u, test_observer_->default_network_change_count()); | 653 EXPECT_EQ(0u, test_observer_->default_network_change_count()); |
| 656 | 654 |
| 657 // Change the default network to a Connecting network, then set the | 655 // Change the default network to a Connecting network, then set the |
| 658 // state to Connected. The DefaultNetworkChange notification should only | 656 // state to Connected. The DefaultNetworkChange notification should only |
| 659 // fire once when the network is connected. | 657 // fire once when the network is connected. |
| 660 test_observer_->reset_change_counts(); | 658 test_observer_->reset_change_counts(); |
| 661 SetServiceProperty(wifi1, shill::kStateProperty, | 659 SetServiceProperty(wifi1, shill::kStateProperty, |
| 662 base::StringValue(shill::kStateIdle)); | 660 base::StringValue(shill::kStateIdle)); |
| 663 message_loop_.RunUntilIdle(); | 661 base::RunLoop().RunUntilIdle(); |
| 664 EXPECT_EQ(1u, test_observer_->default_network_change_count()); | 662 EXPECT_EQ(1u, test_observer_->default_network_change_count()); |
| 665 EXPECT_EQ(std::string(), test_observer_->default_network()); | 663 EXPECT_EQ(std::string(), test_observer_->default_network()); |
| 666 | 664 |
| 667 const std::string wifi2 = kShillManagerClientStubWifi2; | 665 const std::string wifi2 = kShillManagerClientStubWifi2; |
| 668 manager_test_->SetManagerProperty(shill::kDefaultServiceProperty, | 666 manager_test_->SetManagerProperty(shill::kDefaultServiceProperty, |
| 669 base::StringValue(wifi2)); | 667 base::StringValue(wifi2)); |
| 670 message_loop_.RunUntilIdle(); | 668 base::RunLoop().RunUntilIdle(); |
| 671 EXPECT_EQ(1u, test_observer_->default_network_change_count()); | 669 EXPECT_EQ(1u, test_observer_->default_network_change_count()); |
| 672 // Change the connection state of the default network, observer should fire. | 670 // Change the connection state of the default network, observer should fire. |
| 673 SetServiceProperty(wifi2, shill::kStateProperty, | 671 SetServiceProperty(wifi2, shill::kStateProperty, |
| 674 base::StringValue(shill::kStateReady)); | 672 base::StringValue(shill::kStateReady)); |
| 675 message_loop_.RunUntilIdle(); | 673 base::RunLoop().RunUntilIdle(); |
| 676 EXPECT_EQ(wifi2, test_observer_->default_network()); | 674 EXPECT_EQ(wifi2, test_observer_->default_network()); |
| 677 EXPECT_EQ(2u, test_observer_->default_network_change_count()); | 675 EXPECT_EQ(2u, test_observer_->default_network_change_count()); |
| 678 } | 676 } |
| 679 | 677 |
| 680 TEST_F(NetworkStateHandlerTest, RequestUpdate) { | 678 TEST_F(NetworkStateHandlerTest, RequestUpdate) { |
| 681 // Request an update for kShillManagerClientStubDefaultWifi. | 679 // Request an update for kShillManagerClientStubDefaultWifi. |
| 682 EXPECT_EQ(1, test_observer_->PropertyUpdatesForService( | 680 EXPECT_EQ(1, test_observer_->PropertyUpdatesForService( |
| 683 kShillManagerClientStubDefaultWifi)); | 681 kShillManagerClientStubDefaultWifi)); |
| 684 network_state_handler_->RequestUpdateForNetwork( | 682 network_state_handler_->RequestUpdateForNetwork( |
| 685 kShillManagerClientStubDefaultWifi); | 683 kShillManagerClientStubDefaultWifi); |
| 686 message_loop_.RunUntilIdle(); | 684 base::RunLoop().RunUntilIdle(); |
| 687 EXPECT_EQ(2, test_observer_->PropertyUpdatesForService( | 685 EXPECT_EQ(2, test_observer_->PropertyUpdatesForService( |
| 688 kShillManagerClientStubDefaultWifi)); | 686 kShillManagerClientStubDefaultWifi)); |
| 689 } | 687 } |
| 690 | 688 |
| 691 TEST_F(NetworkStateHandlerTest, NetworkGuidInProfile) { | 689 TEST_F(NetworkStateHandlerTest, NetworkGuidInProfile) { |
| 692 const std::string profile = "/profile/profile1"; | 690 const std::string profile = "/profile/profile1"; |
| 693 const std::string wifi_path = "/service/wifi_with_guid"; | 691 const std::string wifi_path = "/service/wifi_with_guid"; |
| 694 const std::string wifi_guid = "wifi_guid"; | 692 const std::string wifi_guid = "wifi_guid"; |
| 695 const std::string wifi_name = "WifiWithGuid"; | 693 const std::string wifi_name = "WifiWithGuid"; |
| 696 const bool is_service_configured = true; | 694 const bool is_service_configured = true; |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 797 kShillManagerClientStubDefaultWifi, shill::kIPConfigProperty, | 795 kShillManagerClientStubDefaultWifi, shill::kIPConfigProperty, |
| 798 base::StringValue(kIPConfigPath)); | 796 base::StringValue(kIPConfigPath)); |
| 799 UpdateManagerProperties(); | 797 UpdateManagerProperties(); |
| 800 EXPECT_EQ(1, test_observer_->PropertyUpdatesForDevice( | 798 EXPECT_EQ(1, test_observer_->PropertyUpdatesForDevice( |
| 801 kShillManagerClientStubWifiDevice)); | 799 kShillManagerClientStubWifiDevice)); |
| 802 EXPECT_EQ(1, test_observer_->PropertyUpdatesForService( | 800 EXPECT_EQ(1, test_observer_->PropertyUpdatesForService( |
| 803 kShillManagerClientStubDefaultWifi)); | 801 kShillManagerClientStubDefaultWifi)); |
| 804 } | 802 } |
| 805 | 803 |
| 806 } // namespace chromeos | 804 } // namespace chromeos |
| OLD | NEW |