Index: chrome/browser/chromeos/tether/tether_service_unittest.cc |
diff --git a/chrome/browser/chromeos/tether/tether_service_unittest.cc b/chrome/browser/chromeos/tether/tether_service_unittest.cc |
index e2a794f1818e0916bededefbc6b2f3a5fc66ab3a..9eeb259939fb0cdc2d7fded686140dcf46272e78 100644 |
--- a/chrome/browser/chromeos/tether/tether_service_unittest.cc |
+++ b/chrome/browser/chromeos/tether/tether_service_unittest.cc |
@@ -173,6 +173,13 @@ class TetherServiceTest : public chromeos::NetworkStateTest { |
TECHNOLOGY_AVAILABLE); |
} |
+ void SetCellularTechnologyStateEnabled(bool enabled) { |
+ network_state_handler()->SetTechnologyEnabled( |
+ chromeos::NetworkTypePattern::Cellular(), enabled, |
+ chromeos::network_handler::ErrorCallback()); |
+ base::RunLoop().RunUntilIdle(); |
+ } |
+ |
content::TestBrowserThreadBundle thread_bundle_; |
std::unique_ptr<TestingProfile> profile_; |
@@ -283,6 +290,72 @@ TEST_F(TetherServiceTest, TestBluetoothIsNotPowered) { |
chromeos::NetworkTypePattern::Tether())); |
} |
+TEST_F(TetherServiceTest, TestCellularIsUnavailable) { |
+ test_manager_client()->RemoveTechnology(shill::kTypeCellular); |
+ ASSERT_EQ( |
+ chromeos::NetworkStateHandler::TechnologyState::TECHNOLOGY_UNAVAILABLE, |
+ network_state_handler()->GetTechnologyState( |
+ chromeos::NetworkTypePattern::Cellular())); |
+ |
+ CreateTetherService(); |
+ |
+ SetTetherTechnologyStateEnabled(false); |
+ EXPECT_EQ( |
+ chromeos::NetworkStateHandler::TechnologyState::TECHNOLOGY_AVAILABLE, |
+ network_state_handler()->GetTechnologyState( |
+ chromeos::NetworkTypePattern::Tether())); |
+ |
+ SetTetherTechnologyStateEnabled(true); |
+ EXPECT_EQ(chromeos::NetworkStateHandler::TechnologyState::TECHNOLOGY_ENABLED, |
+ network_state_handler()->GetTechnologyState( |
+ chromeos::NetworkTypePattern::Tether())); |
+} |
+ |
+TEST_F(TetherServiceTest, TestCellularIsAvailable) { |
+ // TODO (lesliewatkins): Investigate why cellular needs to be removed and |
+ // re-added for NetworkStateHandler to return the correct TechnologyState. |
+ test_manager_client()->RemoveTechnology(shill::kTypeCellular); |
+ test_manager_client()->AddTechnology(shill::kTypeCellular, false); |
+ |
+ CreateTetherService(); |
+ |
+ // Cellular disabled |
+ SetCellularTechnologyStateEnabled(false); |
+ ASSERT_EQ( |
+ chromeos::NetworkStateHandler::TechnologyState::TECHNOLOGY_AVAILABLE, |
+ network_state_handler()->GetTechnologyState( |
+ chromeos::NetworkTypePattern::Cellular())); |
+ |
+ SetTetherTechnologyStateEnabled(false); |
+ EXPECT_EQ( |
+ chromeos::NetworkStateHandler::TechnologyState::TECHNOLOGY_UNINITIALIZED, |
+ network_state_handler()->GetTechnologyState( |
+ chromeos::NetworkTypePattern::Tether())); |
+ |
+ SetTetherTechnologyStateEnabled(true); |
+ EXPECT_EQ( |
+ chromeos::NetworkStateHandler::TechnologyState::TECHNOLOGY_UNINITIALIZED, |
+ network_state_handler()->GetTechnologyState( |
+ chromeos::NetworkTypePattern::Tether())); |
+ |
+ // Cellular enabled |
+ SetCellularTechnologyStateEnabled(true); |
+ ASSERT_EQ(chromeos::NetworkStateHandler::TechnologyState::TECHNOLOGY_ENABLED, |
+ network_state_handler()->GetTechnologyState( |
+ chromeos::NetworkTypePattern::Cellular())); |
+ |
+ SetTetherTechnologyStateEnabled(false); |
+ EXPECT_EQ( |
+ chromeos::NetworkStateHandler::TechnologyState::TECHNOLOGY_AVAILABLE, |
+ network_state_handler()->GetTechnologyState( |
+ chromeos::NetworkTypePattern::Tether())); |
+ |
+ SetTetherTechnologyStateEnabled(true); |
+ EXPECT_EQ(chromeos::NetworkStateHandler::TechnologyState::TECHNOLOGY_ENABLED, |
+ network_state_handler()->GetTechnologyState( |
+ chromeos::NetworkTypePattern::Tether())); |
+} |
+ |
TEST_F(TetherServiceTest, TestEnabled) { |
CreateTetherService(); |
@@ -312,19 +385,24 @@ TEST_F(TetherServiceTest, TestEnabled) { |
// state than the user preference. |
TEST_F(TetherServiceTest, TestEnabledMultipleChanges) { |
CreateTetherService(); |
- // CreateTetherService calls RunUntilIdle() so OnBluetoothAdapterFetched() |
- // will have been called which calls UpdateTetherTechnologyState(). |
- EXPECT_EQ(1, tether_service_->updated_technology_state_count()); |
+ // CreateTetherService calls RunUntilIdle() so UpdateTetherTechnologyState() |
+ // may be called multiple times in the initialization process. |
+ int updated_technology_state_count = |
+ tether_service_->updated_technology_state_count(); |
SetTetherTechnologyStateEnabled(false); |
SetTetherTechnologyStateEnabled(false); |
SetTetherTechnologyStateEnabled(false); |
- EXPECT_EQ(2, tether_service_->updated_technology_state_count()); |
+ updated_technology_state_count++; |
+ EXPECT_EQ(updated_technology_state_count, |
+ tether_service_->updated_technology_state_count()); |
SetTetherTechnologyStateEnabled(true); |
SetTetherTechnologyStateEnabled(true); |
SetTetherTechnologyStateEnabled(true); |
- EXPECT_EQ(3, tether_service_->updated_technology_state_count()); |
+ updated_technology_state_count++; |
+ EXPECT_EQ(updated_technology_state_count, |
+ tether_service_->updated_technology_state_count()); |
} |