| OLD | NEW |
| 1 // Copyright 2017 The Chromium Authors. All rights reserved. | 1 // Copyright 2017 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 "chrome/browser/chromeos/tether/tether_service.h" | 5 #include "chrome/browser/chromeos/tether/tether_service.h" |
| 6 | 6 |
| 7 #include <memory> | 7 #include <memory> |
| 8 | 8 |
| 9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
| 10 #include "base/memory/ptr_util.h" | 10 #include "base/memory/ptr_util.h" |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 83 protected: | 83 protected: |
| 84 void UpdateTetherTechnologyState() override { | 84 void UpdateTetherTechnologyState() override { |
| 85 updated_technology_state_count_++; | 85 updated_technology_state_count_++; |
| 86 TetherService::UpdateTetherTechnologyState(); | 86 TetherService::UpdateTetherTechnologyState(); |
| 87 } | 87 } |
| 88 | 88 |
| 89 private: | 89 private: |
| 90 int updated_technology_state_count_ = 0; | 90 int updated_technology_state_count_ = 0; |
| 91 }; | 91 }; |
| 92 | 92 |
| 93 class TestInitializerDelegate : public TetherService::InitializerDelegate { |
| 94 public: |
| 95 bool is_tether_running() { return is_tether_running_; } |
| 96 |
| 97 // TetherService::InitializerDelegate: |
| 98 void InitializeTether( |
| 99 cryptauth::CryptAuthService* cryptauth_service, |
| 100 std::unique_ptr<chromeos::tether::NotificationPresenter> |
| 101 notification_presenter, |
| 102 PrefService* pref_service, |
| 103 ProfileOAuth2TokenService* token_service, |
| 104 chromeos::NetworkStateHandler* network_state_handler, |
| 105 chromeos::ManagedNetworkConfigurationHandler* |
| 106 managed_network_configuration_handler, |
| 107 chromeos::NetworkConnect* network_connect, |
| 108 chromeos::NetworkConnectionHandler* network_connection_handler) override { |
| 109 is_tether_running_ = true; |
| 110 } |
| 111 |
| 112 void ShutdownTether() override { is_tether_running_ = false; } |
| 113 |
| 114 private: |
| 115 bool is_tether_running_ = false; |
| 116 }; |
| 117 |
| 93 } // namespace | 118 } // namespace |
| 94 | 119 |
| 95 class TetherServiceTest : public chromeos::NetworkStateTest { | 120 class TetherServiceTest : public chromeos::NetworkStateTest { |
| 96 protected: | 121 protected: |
| 97 TetherServiceTest() : NetworkStateTest() {} | 122 TetherServiceTest() : NetworkStateTest() {} |
| 98 ~TetherServiceTest() override {} | 123 ~TetherServiceTest() override {} |
| 99 | 124 |
| 100 void SetUp() override { | 125 void SetUp() override { |
| 101 chromeos::DBusThreadManager::Initialize(); | 126 chromeos::DBusThreadManager::Initialize(); |
| 102 chromeos::NetworkStateTest::SetUp(); | 127 chromeos::NetworkStateTest::SetUp(); |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 138 message_center::MessageCenter::Shutdown(); | 163 message_center::MessageCenter::Shutdown(); |
| 139 chromeos::NetworkConnect::Shutdown(); | 164 chromeos::NetworkConnect::Shutdown(); |
| 140 chromeos::NetworkHandler::Shutdown(); | 165 chromeos::NetworkHandler::Shutdown(); |
| 141 | 166 |
| 142 ShutdownNetworkState(); | 167 ShutdownNetworkState(); |
| 143 chromeos::NetworkStateTest::TearDown(); | 168 chromeos::NetworkStateTest::TearDown(); |
| 144 chromeos::DBusThreadManager::Shutdown(); | 169 chromeos::DBusThreadManager::Shutdown(); |
| 145 } | 170 } |
| 146 | 171 |
| 147 void CreateTetherService() { | 172 void CreateTetherService() { |
| 173 test_initializer_delegate_ = new TestInitializerDelegate(); |
| 174 |
| 148 tether_service_ = base::WrapUnique(new TestTetherService( | 175 tether_service_ = base::WrapUnique(new TestTetherService( |
| 149 profile_.get(), fake_power_manager_client_.get(), | 176 profile_.get(), fake_power_manager_client_.get(), |
| 150 fake_session_manager_client_.get(), fake_cryptauth_service_.get(), | 177 fake_session_manager_client_.get(), fake_cryptauth_service_.get(), |
| 151 network_state_handler())); | 178 network_state_handler())); |
| 179 tether_service_->SetInitializerDelegateForTest( |
| 180 base::WrapUnique(test_initializer_delegate_)); |
| 152 base::RunLoop().RunUntilIdle(); | 181 base::RunLoop().RunUntilIdle(); |
| 153 } | 182 } |
| 154 | 183 |
| 155 void ShutdownTetherService() { | 184 void ShutdownTetherService() { |
| 156 if (tether_service_) | 185 if (tether_service_) |
| 157 tether_service_->Shutdown(); | 186 tether_service_->Shutdown(); |
| 158 } | 187 } |
| 159 | 188 |
| 160 void SetIsScreenLocked(bool is_screen_locked) { | 189 void SetIsScreenLocked(bool is_screen_locked) { |
| 161 fake_session_manager_client_->set_is_screen_locked(is_screen_locked); | 190 fake_session_manager_client_->set_is_screen_locked(is_screen_locked); |
| (...skipping 20 matching lines...) Expand all Loading... |
| 182 | 211 |
| 183 content::TestBrowserThreadBundle thread_bundle_; | 212 content::TestBrowserThreadBundle thread_bundle_; |
| 184 | 213 |
| 185 std::unique_ptr<TestingProfile> profile_; | 214 std::unique_ptr<TestingProfile> profile_; |
| 186 std::unique_ptr<chromeos::FakePowerManagerClient> fake_power_manager_client_; | 215 std::unique_ptr<chromeos::FakePowerManagerClient> fake_power_manager_client_; |
| 187 std::unique_ptr<ExtendedFakeSessionManagerClient> | 216 std::unique_ptr<ExtendedFakeSessionManagerClient> |
| 188 fake_session_manager_client_; | 217 fake_session_manager_client_; |
| 189 std::unique_ptr<TestingPrefServiceSimple> test_pref_service_; | 218 std::unique_ptr<TestingPrefServiceSimple> test_pref_service_; |
| 190 std::unique_ptr<NiceMock<MockCryptAuthDeviceManager>> | 219 std::unique_ptr<NiceMock<MockCryptAuthDeviceManager>> |
| 191 mock_cryptauth_device_manager_; | 220 mock_cryptauth_device_manager_; |
| 221 TestInitializerDelegate* test_initializer_delegate_; |
| 192 std::unique_ptr<cryptauth::FakeCryptAuthService> fake_cryptauth_service_; | 222 std::unique_ptr<cryptauth::FakeCryptAuthService> fake_cryptauth_service_; |
| 193 scoped_refptr<device::MockBluetoothAdapter> mock_adapter_; | 223 scoped_refptr<device::MockBluetoothAdapter> mock_adapter_; |
| 194 std::unique_ptr<TestTetherService> tether_service_; | 224 std::unique_ptr<TestTetherService> tether_service_; |
| 195 | 225 |
| 196 private: | 226 private: |
| 197 DISALLOW_COPY_AND_ASSIGN(TetherServiceTest); | 227 DISALLOW_COPY_AND_ASSIGN(TetherServiceTest); |
| 198 }; | 228 }; |
| 199 | 229 |
| 200 TEST_F(TetherServiceTest, TestShutdown) { | 230 TEST_F(TetherServiceTest, TestShutdown) { |
| 201 CreateTetherService(); | 231 CreateTetherService(); |
| 232 EXPECT_TRUE(test_initializer_delegate_->is_tether_running()); |
| 202 | 233 |
| 203 ShutdownTetherService(); | 234 ShutdownTetherService(); |
| 204 | 235 |
| 205 EXPECT_EQ( | 236 EXPECT_EQ( |
| 206 chromeos::NetworkStateHandler::TechnologyState::TECHNOLOGY_UNAVAILABLE, | 237 chromeos::NetworkStateHandler::TechnologyState::TECHNOLOGY_UNAVAILABLE, |
| 207 network_state_handler()->GetTechnologyState( | 238 network_state_handler()->GetTechnologyState( |
| 208 chromeos::NetworkTypePattern::Tether())); | 239 chromeos::NetworkTypePattern::Tether())); |
| 240 EXPECT_FALSE(test_initializer_delegate_->is_tether_running()); |
| 209 } | 241 } |
| 210 | 242 |
| 211 TEST_F(TetherServiceTest, TestSuspend) { | 243 TEST_F(TetherServiceTest, TestSuspend) { |
| 212 CreateTetherService(); | 244 CreateTetherService(); |
| 245 EXPECT_TRUE(test_initializer_delegate_->is_tether_running()); |
| 213 | 246 |
| 214 fake_power_manager_client_->SendSuspendImminent(); | 247 fake_power_manager_client_->SendSuspendImminent(); |
| 215 | 248 |
| 216 EXPECT_EQ( | 249 EXPECT_EQ( |
| 217 chromeos::NetworkStateHandler::TechnologyState::TECHNOLOGY_UNAVAILABLE, | 250 chromeos::NetworkStateHandler::TechnologyState::TECHNOLOGY_UNAVAILABLE, |
| 218 network_state_handler()->GetTechnologyState( | 251 network_state_handler()->GetTechnologyState( |
| 219 chromeos::NetworkTypePattern::Tether())); | 252 chromeos::NetworkTypePattern::Tether())); |
| 253 EXPECT_FALSE(test_initializer_delegate_->is_tether_running()); |
| 220 | 254 |
| 221 fake_power_manager_client_->SendSuspendDone(); | 255 fake_power_manager_client_->SendSuspendDone(); |
| 222 | 256 |
| 223 EXPECT_EQ(chromeos::NetworkStateHandler::TechnologyState::TECHNOLOGY_ENABLED, | 257 EXPECT_EQ(chromeos::NetworkStateHandler::TechnologyState::TECHNOLOGY_ENABLED, |
| 224 network_state_handler()->GetTechnologyState( | 258 network_state_handler()->GetTechnologyState( |
| 225 chromeos::NetworkTypePattern::Tether())); | 259 chromeos::NetworkTypePattern::Tether())); |
| 260 EXPECT_TRUE(test_initializer_delegate_->is_tether_running()); |
| 226 } | 261 } |
| 227 | 262 |
| 228 TEST_F(TetherServiceTest, TestScreenLock) { | 263 TEST_F(TetherServiceTest, TestScreenLock) { |
| 229 CreateTetherService(); | 264 CreateTetherService(); |
| 265 EXPECT_TRUE(test_initializer_delegate_->is_tether_running()); |
| 230 | 266 |
| 231 SetIsScreenLocked(true); | 267 SetIsScreenLocked(true); |
| 232 | 268 |
| 233 EXPECT_EQ( | 269 EXPECT_EQ( |
| 234 chromeos::NetworkStateHandler::TechnologyState::TECHNOLOGY_UNAVAILABLE, | 270 chromeos::NetworkStateHandler::TechnologyState::TECHNOLOGY_UNAVAILABLE, |
| 235 network_state_handler()->GetTechnologyState( | 271 network_state_handler()->GetTechnologyState( |
| 236 chromeos::NetworkTypePattern::Tether())); | 272 chromeos::NetworkTypePattern::Tether())); |
| 273 EXPECT_FALSE(test_initializer_delegate_->is_tether_running()); |
| 237 | 274 |
| 238 SetIsScreenLocked(false); | 275 SetIsScreenLocked(false); |
| 239 | 276 |
| 240 EXPECT_EQ(chromeos::NetworkStateHandler::TechnologyState::TECHNOLOGY_ENABLED, | 277 EXPECT_EQ(chromeos::NetworkStateHandler::TechnologyState::TECHNOLOGY_ENABLED, |
| 241 network_state_handler()->GetTechnologyState( | 278 network_state_handler()->GetTechnologyState( |
| 242 chromeos::NetworkTypePattern::Tether())); | 279 chromeos::NetworkTypePattern::Tether())); |
| 280 EXPECT_TRUE(test_initializer_delegate_->is_tether_running()); |
| 243 } | 281 } |
| 244 | 282 |
| 245 TEST_F(TetherServiceTest, TestFeatureFlagDisabled) { | 283 TEST_F(TetherServiceTest, TestFeatureFlagDisabled) { |
| 246 EXPECT_FALSE(TetherService::Get(profile_.get())); | 284 EXPECT_FALSE(TetherService::Get(profile_.get())); |
| 247 } | 285 } |
| 248 | 286 |
| 249 TEST_F(TetherServiceTest, TestFeatureFlagEnabled) { | 287 TEST_F(TetherServiceTest, TestFeatureFlagEnabled) { |
| 250 base::test::ScopedFeatureList feature_list; | 288 base::test::ScopedFeatureList feature_list; |
| 251 feature_list.InitAndEnableFeature(features::kInstantTethering); | 289 feature_list.InitAndEnableFeature(features::kInstantTethering); |
| 252 | 290 |
| 253 TetherService* tether_service = TetherService::Get(profile_.get()); | 291 TetherService* tether_service = TetherService::Get(profile_.get()); |
| 254 ASSERT_TRUE(tether_service); | 292 ASSERT_TRUE(tether_service); |
| 255 base::RunLoop().RunUntilIdle(); | 293 base::RunLoop().RunUntilIdle(); |
| 256 tether_service->Shutdown(); | 294 tether_service->Shutdown(); |
| 257 } | 295 } |
| 258 | 296 |
| 259 TEST_F(TetherServiceTest, TestNoTetherHosts) { | 297 TEST_F(TetherServiceTest, TestNoTetherHosts) { |
| 260 ON_CALL(*mock_cryptauth_device_manager_, GetTetherHosts()) | 298 ON_CALL(*mock_cryptauth_device_manager_, GetTetherHosts()) |
| 261 .WillByDefault(Return(std::vector<cryptauth::ExternalDeviceInfo>())); | 299 .WillByDefault(Return(std::vector<cryptauth::ExternalDeviceInfo>())); |
| 262 | 300 |
| 263 CreateTetherService(); | 301 CreateTetherService(); |
| 264 | 302 |
| 265 EXPECT_EQ( | 303 EXPECT_EQ( |
| 266 chromeos::NetworkStateHandler::TechnologyState::TECHNOLOGY_UNAVAILABLE, | 304 chromeos::NetworkStateHandler::TechnologyState::TECHNOLOGY_UNAVAILABLE, |
| 267 network_state_handler()->GetTechnologyState( | 305 network_state_handler()->GetTechnologyState( |
| 268 chromeos::NetworkTypePattern::Tether())); | 306 chromeos::NetworkTypePattern::Tether())); |
| 307 EXPECT_FALSE(test_initializer_delegate_->is_tether_running()); |
| 269 } | 308 } |
| 270 | 309 |
| 271 TEST_F(TetherServiceTest, TestProhibitedByPolicy) { | 310 TEST_F(TetherServiceTest, TestProhibitedByPolicy) { |
| 272 profile_->GetPrefs()->SetBoolean(prefs::kInstantTetheringAllowed, false); | 311 profile_->GetPrefs()->SetBoolean(prefs::kInstantTetheringAllowed, false); |
| 273 | 312 |
| 274 CreateTetherService(); | 313 CreateTetherService(); |
| 275 | 314 |
| 276 EXPECT_EQ( | 315 EXPECT_EQ( |
| 277 chromeos::NetworkStateHandler::TechnologyState::TECHNOLOGY_PROHIBITED, | 316 chromeos::NetworkStateHandler::TechnologyState::TECHNOLOGY_PROHIBITED, |
| 278 network_state_handler()->GetTechnologyState( | 317 network_state_handler()->GetTechnologyState( |
| 279 chromeos::NetworkTypePattern::Tether())); | 318 chromeos::NetworkTypePattern::Tether())); |
| 319 EXPECT_FALSE(test_initializer_delegate_->is_tether_running()); |
| 280 } | 320 } |
| 281 | 321 |
| 282 TEST_F(TetherServiceTest, TestBluetoothIsNotPowered) { | 322 TEST_F(TetherServiceTest, TestBluetoothIsNotPowered) { |
| 283 ON_CALL(*mock_adapter_, IsPowered()).WillByDefault(Return(false)); | 323 ON_CALL(*mock_adapter_, IsPowered()).WillByDefault(Return(false)); |
| 284 | 324 |
| 285 CreateTetherService(); | 325 CreateTetherService(); |
| 286 | 326 |
| 287 EXPECT_EQ( | 327 EXPECT_EQ( |
| 288 chromeos::NetworkStateHandler::TechnologyState::TECHNOLOGY_UNINITIALIZED, | 328 chromeos::NetworkStateHandler::TechnologyState::TECHNOLOGY_UNINITIALIZED, |
| 289 network_state_handler()->GetTechnologyState( | 329 network_state_handler()->GetTechnologyState( |
| 290 chromeos::NetworkTypePattern::Tether())); | 330 chromeos::NetworkTypePattern::Tether())); |
| 331 EXPECT_FALSE(test_initializer_delegate_->is_tether_running()); |
| 291 } | 332 } |
| 292 | 333 |
| 293 TEST_F(TetherServiceTest, TestCellularIsUnavailable) { | 334 TEST_F(TetherServiceTest, TestCellularIsUnavailable) { |
| 294 test_manager_client()->RemoveTechnology(shill::kTypeCellular); | 335 test_manager_client()->RemoveTechnology(shill::kTypeCellular); |
| 295 ASSERT_EQ( | 336 ASSERT_EQ( |
| 296 chromeos::NetworkStateHandler::TechnologyState::TECHNOLOGY_UNAVAILABLE, | 337 chromeos::NetworkStateHandler::TechnologyState::TECHNOLOGY_UNAVAILABLE, |
| 297 network_state_handler()->GetTechnologyState( | 338 network_state_handler()->GetTechnologyState( |
| 298 chromeos::NetworkTypePattern::Cellular())); | 339 chromeos::NetworkTypePattern::Cellular())); |
| 299 | 340 |
| 300 CreateTetherService(); | 341 CreateTetherService(); |
| 301 | 342 |
| 302 SetTetherTechnologyStateEnabled(false); | 343 SetTetherTechnologyStateEnabled(false); |
| 303 EXPECT_EQ( | 344 EXPECT_EQ( |
| 304 chromeos::NetworkStateHandler::TechnologyState::TECHNOLOGY_AVAILABLE, | 345 chromeos::NetworkStateHandler::TechnologyState::TECHNOLOGY_AVAILABLE, |
| 305 network_state_handler()->GetTechnologyState( | 346 network_state_handler()->GetTechnologyState( |
| 306 chromeos::NetworkTypePattern::Tether())); | 347 chromeos::NetworkTypePattern::Tether())); |
| 348 EXPECT_FALSE(test_initializer_delegate_->is_tether_running()); |
| 307 | 349 |
| 308 SetTetherTechnologyStateEnabled(true); | 350 SetTetherTechnologyStateEnabled(true); |
| 309 EXPECT_EQ(chromeos::NetworkStateHandler::TechnologyState::TECHNOLOGY_ENABLED, | 351 EXPECT_EQ(chromeos::NetworkStateHandler::TechnologyState::TECHNOLOGY_ENABLED, |
| 310 network_state_handler()->GetTechnologyState( | 352 network_state_handler()->GetTechnologyState( |
| 311 chromeos::NetworkTypePattern::Tether())); | 353 chromeos::NetworkTypePattern::Tether())); |
| 354 EXPECT_TRUE(test_initializer_delegate_->is_tether_running()); |
| 312 } | 355 } |
| 313 | 356 |
| 314 TEST_F(TetherServiceTest, TestCellularIsAvailable) { | 357 TEST_F(TetherServiceTest, TestCellularIsAvailable) { |
| 315 // TODO (lesliewatkins): Investigate why cellular needs to be removed and | 358 // TODO (lesliewatkins): Investigate why cellular needs to be removed and |
| 316 // re-added for NetworkStateHandler to return the correct TechnologyState. | 359 // re-added for NetworkStateHandler to return the correct TechnologyState. |
| 317 test_manager_client()->RemoveTechnology(shill::kTypeCellular); | 360 test_manager_client()->RemoveTechnology(shill::kTypeCellular); |
| 318 test_manager_client()->AddTechnology(shill::kTypeCellular, false); | 361 test_manager_client()->AddTechnology(shill::kTypeCellular, false); |
| 319 | 362 |
| 320 CreateTetherService(); | 363 CreateTetherService(); |
| 321 | 364 |
| 322 // Cellular disabled | 365 // Cellular disabled |
| 323 SetCellularTechnologyStateEnabled(false); | 366 SetCellularTechnologyStateEnabled(false); |
| 324 ASSERT_EQ( | 367 ASSERT_EQ( |
| 325 chromeos::NetworkStateHandler::TechnologyState::TECHNOLOGY_AVAILABLE, | 368 chromeos::NetworkStateHandler::TechnologyState::TECHNOLOGY_AVAILABLE, |
| 326 network_state_handler()->GetTechnologyState( | 369 network_state_handler()->GetTechnologyState( |
| 327 chromeos::NetworkTypePattern::Cellular())); | 370 chromeos::NetworkTypePattern::Cellular())); |
| 371 EXPECT_FALSE(test_initializer_delegate_->is_tether_running()); |
| 328 | 372 |
| 329 SetTetherTechnologyStateEnabled(false); | 373 SetTetherTechnologyStateEnabled(false); |
| 330 EXPECT_EQ( | 374 EXPECT_EQ( |
| 331 chromeos::NetworkStateHandler::TechnologyState::TECHNOLOGY_UNINITIALIZED, | 375 chromeos::NetworkStateHandler::TechnologyState::TECHNOLOGY_UNINITIALIZED, |
| 332 network_state_handler()->GetTechnologyState( | 376 network_state_handler()->GetTechnologyState( |
| 333 chromeos::NetworkTypePattern::Tether())); | 377 chromeos::NetworkTypePattern::Tether())); |
| 378 EXPECT_FALSE(test_initializer_delegate_->is_tether_running()); |
| 334 | 379 |
| 335 SetTetherTechnologyStateEnabled(true); | 380 SetTetherTechnologyStateEnabled(true); |
| 336 EXPECT_EQ( | 381 EXPECT_EQ( |
| 337 chromeos::NetworkStateHandler::TechnologyState::TECHNOLOGY_UNINITIALIZED, | 382 chromeos::NetworkStateHandler::TechnologyState::TECHNOLOGY_UNINITIALIZED, |
| 338 network_state_handler()->GetTechnologyState( | 383 network_state_handler()->GetTechnologyState( |
| 339 chromeos::NetworkTypePattern::Tether())); | 384 chromeos::NetworkTypePattern::Tether())); |
| 385 EXPECT_FALSE(test_initializer_delegate_->is_tether_running()); |
| 340 | 386 |
| 341 // Cellular enabled | 387 // Cellular enabled |
| 342 SetCellularTechnologyStateEnabled(true); | 388 SetCellularTechnologyStateEnabled(true); |
| 343 ASSERT_EQ(chromeos::NetworkStateHandler::TechnologyState::TECHNOLOGY_ENABLED, | 389 ASSERT_EQ(chromeos::NetworkStateHandler::TechnologyState::TECHNOLOGY_ENABLED, |
| 344 network_state_handler()->GetTechnologyState( | 390 network_state_handler()->GetTechnologyState( |
| 345 chromeos::NetworkTypePattern::Cellular())); | 391 chromeos::NetworkTypePattern::Cellular())); |
| 392 EXPECT_TRUE(test_initializer_delegate_->is_tether_running()); |
| 346 | 393 |
| 347 SetTetherTechnologyStateEnabled(false); | 394 SetTetherTechnologyStateEnabled(false); |
| 348 EXPECT_EQ( | 395 EXPECT_EQ( |
| 349 chromeos::NetworkStateHandler::TechnologyState::TECHNOLOGY_AVAILABLE, | 396 chromeos::NetworkStateHandler::TechnologyState::TECHNOLOGY_AVAILABLE, |
| 350 network_state_handler()->GetTechnologyState( | 397 network_state_handler()->GetTechnologyState( |
| 351 chromeos::NetworkTypePattern::Tether())); | 398 chromeos::NetworkTypePattern::Tether())); |
| 399 EXPECT_FALSE(test_initializer_delegate_->is_tether_running()); |
| 352 | 400 |
| 353 SetTetherTechnologyStateEnabled(true); | 401 SetTetherTechnologyStateEnabled(true); |
| 354 EXPECT_EQ(chromeos::NetworkStateHandler::TechnologyState::TECHNOLOGY_ENABLED, | 402 EXPECT_EQ(chromeos::NetworkStateHandler::TechnologyState::TECHNOLOGY_ENABLED, |
| 355 network_state_handler()->GetTechnologyState( | 403 network_state_handler()->GetTechnologyState( |
| 356 chromeos::NetworkTypePattern::Tether())); | 404 chromeos::NetworkTypePattern::Tether())); |
| 405 EXPECT_TRUE(test_initializer_delegate_->is_tether_running()); |
| 357 } | 406 } |
| 358 | 407 |
| 359 TEST_F(TetherServiceTest, TestEnabled) { | 408 TEST_F(TetherServiceTest, TestEnabled) { |
| 360 CreateTetherService(); | 409 CreateTetherService(); |
| 361 | 410 |
| 362 EXPECT_EQ(chromeos::NetworkStateHandler::TechnologyState::TECHNOLOGY_ENABLED, | 411 EXPECT_EQ(chromeos::NetworkStateHandler::TechnologyState::TECHNOLOGY_ENABLED, |
| 363 network_state_handler()->GetTechnologyState( | 412 network_state_handler()->GetTechnologyState( |
| 364 chromeos::NetworkTypePattern::Tether())); | 413 chromeos::NetworkTypePattern::Tether())); |
| 414 EXPECT_TRUE(test_initializer_delegate_->is_tether_running()); |
| 365 | 415 |
| 366 SetTetherTechnologyStateEnabled(false); | 416 SetTetherTechnologyStateEnabled(false); |
| 367 EXPECT_EQ( | 417 EXPECT_EQ( |
| 368 chromeos::NetworkStateHandler::TechnologyState::TECHNOLOGY_AVAILABLE, | 418 chromeos::NetworkStateHandler::TechnologyState::TECHNOLOGY_AVAILABLE, |
| 369 network_state_handler()->GetTechnologyState( | 419 network_state_handler()->GetTechnologyState( |
| 370 chromeos::NetworkTypePattern::Tether())); | 420 chromeos::NetworkTypePattern::Tether())); |
| 371 EXPECT_FALSE( | 421 EXPECT_FALSE( |
| 372 profile_->GetPrefs()->GetBoolean(prefs::kInstantTetheringEnabled)); | 422 profile_->GetPrefs()->GetBoolean(prefs::kInstantTetheringEnabled)); |
| 423 EXPECT_FALSE(test_initializer_delegate_->is_tether_running()); |
| 373 | 424 |
| 374 SetTetherTechnologyStateEnabled(true); | 425 SetTetherTechnologyStateEnabled(true); |
| 375 EXPECT_EQ(chromeos::NetworkStateHandler::TechnologyState::TECHNOLOGY_ENABLED, | 426 EXPECT_EQ(chromeos::NetworkStateHandler::TechnologyState::TECHNOLOGY_ENABLED, |
| 376 network_state_handler()->GetTechnologyState( | 427 network_state_handler()->GetTechnologyState( |
| 377 chromeos::NetworkTypePattern::Tether())); | 428 chromeos::NetworkTypePattern::Tether())); |
| 378 EXPECT_TRUE( | 429 EXPECT_TRUE( |
| 379 profile_->GetPrefs()->GetBoolean(prefs::kInstantTetheringEnabled)); | 430 profile_->GetPrefs()->GetBoolean(prefs::kInstantTetheringEnabled)); |
| 431 EXPECT_TRUE(test_initializer_delegate_->is_tether_running()); |
| 380 } | 432 } |
| 381 | 433 |
| 382 // Test against a past defect that made TetherService and NetworkStateHandler | 434 // Test against a past defect that made TetherService and NetworkStateHandler |
| 383 // repeatly update technology state after the other did so. TetherService should | 435 // repeatly update technology state after the other did so. TetherService should |
| 384 // only update technology state if NetworkStateHandler has provided a different | 436 // only update technology state if NetworkStateHandler has provided a different |
| 385 // state than the user preference. | 437 // state than the user preference. |
| 386 TEST_F(TetherServiceTest, TestEnabledMultipleChanges) { | 438 TEST_F(TetherServiceTest, TestEnabledMultipleChanges) { |
| 387 CreateTetherService(); | 439 CreateTetherService(); |
| 388 // CreateTetherService calls RunUntilIdle() so UpdateTetherTechnologyState() | 440 // CreateTetherService calls RunUntilIdle() so UpdateTetherTechnologyState() |
| 389 // may be called multiple times in the initialization process. | 441 // may be called multiple times in the initialization process. |
| 390 int updated_technology_state_count = | 442 int updated_technology_state_count = |
| 391 tether_service_->updated_technology_state_count(); | 443 tether_service_->updated_technology_state_count(); |
| 392 | 444 |
| 393 SetTetherTechnologyStateEnabled(false); | 445 SetTetherTechnologyStateEnabled(false); |
| 394 SetTetherTechnologyStateEnabled(false); | 446 SetTetherTechnologyStateEnabled(false); |
| 395 SetTetherTechnologyStateEnabled(false); | 447 SetTetherTechnologyStateEnabled(false); |
| 396 | 448 |
| 397 updated_technology_state_count++; | 449 updated_technology_state_count++; |
| 398 EXPECT_EQ(updated_technology_state_count, | 450 EXPECT_EQ(updated_technology_state_count, |
| 399 tether_service_->updated_technology_state_count()); | 451 tether_service_->updated_technology_state_count()); |
| 400 | 452 |
| 401 SetTetherTechnologyStateEnabled(true); | 453 SetTetherTechnologyStateEnabled(true); |
| 402 SetTetherTechnologyStateEnabled(true); | 454 SetTetherTechnologyStateEnabled(true); |
| 403 SetTetherTechnologyStateEnabled(true); | 455 SetTetherTechnologyStateEnabled(true); |
| 404 | 456 |
| 405 updated_technology_state_count++; | 457 updated_technology_state_count++; |
| 406 EXPECT_EQ(updated_technology_state_count, | 458 EXPECT_EQ(updated_technology_state_count, |
| 407 tether_service_->updated_technology_state_count()); | 459 tether_service_->updated_technology_state_count()); |
| 408 } | 460 } |
| OLD | NEW |