| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "components/gcm_driver/gcm_driver_desktop.h" | 5 #include "components/gcm_driver/gcm_driver_desktop.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/bind_helpers.h" | 8 #include "base/bind_helpers.h" |
| 9 #include "base/files/scoped_temp_dir.h" | 9 #include "base/files/scoped_temp_dir.h" |
| 10 #include "base/location.h" | 10 #include "base/location.h" |
| (...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 319 EXPECT_FALSE(gcm_app_handler()->connected()); | 319 EXPECT_FALSE(gcm_app_handler()->connected()); |
| 320 } | 320 } |
| 321 | 321 |
| 322 TEST_F(GCMDriverTest, SignInAndSignOutOnGCMEnabled) { | 322 TEST_F(GCMDriverTest, SignInAndSignOutOnGCMEnabled) { |
| 323 // By default, GCM is enabled. | 323 // By default, GCM is enabled. |
| 324 CreateDriver(FakeGCMClient::NO_DELAY_START); | 324 CreateDriver(FakeGCMClient::NO_DELAY_START); |
| 325 AddAppHandlers(); | 325 AddAppHandlers(); |
| 326 | 326 |
| 327 // GCMClient should be started after sign-in. | 327 // GCMClient should be started after sign-in. |
| 328 SignIn(kTestAccountID1); | 328 SignIn(kTestAccountID1); |
| 329 EXPECT_TRUE(driver()->IsGCMClientReady()); | |
| 330 EXPECT_EQ(FakeGCMClient::STARTED, GetGCMClient()->status()); | 329 EXPECT_EQ(FakeGCMClient::STARTED, GetGCMClient()->status()); |
| 331 | 330 |
| 332 // GCMClient should be checked out after sign-out. | 331 // GCMClient should be checked out after sign-out. |
| 333 SignOut(); | 332 SignOut(); |
| 334 EXPECT_FALSE(driver()->IsGCMClientReady()); | |
| 335 EXPECT_EQ(FakeGCMClient::CHECKED_OUT, GetGCMClient()->status()); | 333 EXPECT_EQ(FakeGCMClient::CHECKED_OUT, GetGCMClient()->status()); |
| 336 } | 334 } |
| 337 | 335 |
| 338 TEST_F(GCMDriverTest, SignInAndSignOutOnGCMDisabled) { | 336 TEST_F(GCMDriverTest, SignInAndSignOutOnGCMDisabled) { |
| 339 // By default, GCM is enabled. | 337 // By default, GCM is enabled. |
| 340 CreateDriver(FakeGCMClient::NO_DELAY_START); | 338 CreateDriver(FakeGCMClient::NO_DELAY_START); |
| 341 AddAppHandlers(); | 339 AddAppHandlers(); |
| 342 | 340 |
| 343 // Disable GCM. | 341 // Disable GCM. |
| 344 driver()->Disable(); | 342 driver()->Disable(); |
| 345 | 343 |
| 346 // GCMClient should not be started after sign-in. | 344 // GCMClient should not be started after sign-in. |
| 347 SignIn(kTestAccountID1); | 345 SignIn(kTestAccountID1); |
| 348 EXPECT_FALSE(driver()->IsGCMClientReady()); | |
| 349 EXPECT_EQ(FakeGCMClient::UNINITIALIZED, GetGCMClient()->status()); | 346 EXPECT_EQ(FakeGCMClient::UNINITIALIZED, GetGCMClient()->status()); |
| 350 | 347 |
| 351 // Check-out should still be performed after sign-out. | 348 // Check-out should still be performed after sign-out. |
| 352 SignOut(); | 349 SignOut(); |
| 353 EXPECT_FALSE(driver()->IsGCMClientReady()); | |
| 354 EXPECT_EQ(FakeGCMClient::CHECKED_OUT, GetGCMClient()->status()); | 350 EXPECT_EQ(FakeGCMClient::CHECKED_OUT, GetGCMClient()->status()); |
| 355 } | 351 } |
| 356 | 352 |
| 357 TEST_F(GCMDriverTest, SignOutAndThenSignIn) { | 353 TEST_F(GCMDriverTest, SignOutAndThenSignIn) { |
| 358 CreateDriver(FakeGCMClient::NO_DELAY_START); | 354 CreateDriver(FakeGCMClient::NO_DELAY_START); |
| 359 AddAppHandlers(); | 355 AddAppHandlers(); |
| 360 | 356 |
| 361 // GCMClient should be started after sign-in. | 357 // GCMClient should be started after sign-in. |
| 362 SignIn(kTestAccountID1); | 358 SignIn(kTestAccountID1); |
| 363 EXPECT_TRUE(driver()->IsGCMClientReady()); | |
| 364 EXPECT_EQ(FakeGCMClient::STARTED, GetGCMClient()->status()); | 359 EXPECT_EQ(FakeGCMClient::STARTED, GetGCMClient()->status()); |
| 365 | 360 |
| 366 // GCMClient should be checked out after sign-out. | 361 // GCMClient should be checked out after sign-out. |
| 367 SignOut(); | 362 SignOut(); |
| 368 EXPECT_FALSE(driver()->IsGCMClientReady()); | |
| 369 EXPECT_EQ(FakeGCMClient::CHECKED_OUT, GetGCMClient()->status()); | 363 EXPECT_EQ(FakeGCMClient::CHECKED_OUT, GetGCMClient()->status()); |
| 370 | 364 |
| 371 // Sign-in with a different account. | 365 // Sign-in with a different account. |
| 372 SignIn(kTestAccountID2); | 366 SignIn(kTestAccountID2); |
| 373 | 367 |
| 374 // GCMClient should be started again. | 368 // GCMClient should be started again. |
| 375 EXPECT_TRUE(driver()->IsGCMClientReady()); | |
| 376 EXPECT_EQ(FakeGCMClient::STARTED, GetGCMClient()->status()); | 369 EXPECT_EQ(FakeGCMClient::STARTED, GetGCMClient()->status()); |
| 377 } | 370 } |
| 378 | 371 |
| 379 TEST_F(GCMDriverTest, DisableAndReenableGCM) { | 372 TEST_F(GCMDriverTest, DisableAndReenableGCM) { |
| 380 CreateDriver(FakeGCMClient::NO_DELAY_START); | 373 CreateDriver(FakeGCMClient::NO_DELAY_START); |
| 381 AddAppHandlers(); | 374 AddAppHandlers(); |
| 382 SignIn(kTestAccountID1); | 375 SignIn(kTestAccountID1); |
| 383 | 376 |
| 384 // GCMClient should be started. | 377 // GCMClient should be started. |
| 385 EXPECT_TRUE(driver()->IsGCMClientReady()); | |
| 386 EXPECT_EQ(FakeGCMClient::STARTED, GetGCMClient()->status()); | 378 EXPECT_EQ(FakeGCMClient::STARTED, GetGCMClient()->status()); |
| 387 | 379 |
| 388 // Disables the GCM. | 380 // Disables the GCM. |
| 389 driver()->Disable(); | 381 driver()->Disable(); |
| 390 PumpIOLoop(); | 382 PumpIOLoop(); |
| 391 PumpUILoop(); | 383 PumpUILoop(); |
| 392 | 384 |
| 393 // GCMClient should be stopped. | 385 // GCMClient should be stopped. |
| 394 EXPECT_FALSE(driver()->IsGCMClientReady()); | |
| 395 EXPECT_EQ(FakeGCMClient::STOPPED, GetGCMClient()->status()); | 386 EXPECT_EQ(FakeGCMClient::STOPPED, GetGCMClient()->status()); |
| 396 | 387 |
| 397 // Enables the GCM. | 388 // Enables the GCM. |
| 398 driver()->Enable(); | 389 driver()->Enable(); |
| 399 PumpIOLoop(); | 390 PumpIOLoop(); |
| 400 PumpUILoop(); | 391 PumpUILoop(); |
| 401 | 392 |
| 402 // GCMClient should be started. | 393 // GCMClient should be started. |
| 403 EXPECT_TRUE(driver()->IsGCMClientReady()); | |
| 404 EXPECT_EQ(FakeGCMClient::STARTED, GetGCMClient()->status()); | 394 EXPECT_EQ(FakeGCMClient::STARTED, GetGCMClient()->status()); |
| 405 | 395 |
| 406 // Disables the GCM. | 396 // Disables the GCM. |
| 407 driver()->Disable(); | 397 driver()->Disable(); |
| 408 PumpIOLoop(); | 398 PumpIOLoop(); |
| 409 PumpUILoop(); | 399 PumpUILoop(); |
| 410 | 400 |
| 411 // GCMClient should be stopped. | 401 // GCMClient should be stopped. |
| 412 EXPECT_FALSE(driver()->IsGCMClientReady()); | |
| 413 EXPECT_EQ(FakeGCMClient::STOPPED, GetGCMClient()->status()); | 402 EXPECT_EQ(FakeGCMClient::STOPPED, GetGCMClient()->status()); |
| 414 | 403 |
| 415 // Sign out. | 404 // Sign out. |
| 416 SignOut(); | 405 SignOut(); |
| 417 | 406 |
| 418 // GCMClient should be checked out. | 407 // GCMClient should be checked out. |
| 419 EXPECT_FALSE(driver()->IsGCMClientReady()); | |
| 420 EXPECT_EQ(FakeGCMClient::CHECKED_OUT, GetGCMClient()->status()); | 408 EXPECT_EQ(FakeGCMClient::CHECKED_OUT, GetGCMClient()->status()); |
| 421 } | 409 } |
| 422 | 410 |
| 423 TEST_F(GCMDriverTest, StartOrStopGCMOnDemand) { | 411 TEST_F(GCMDriverTest, StartOrStopGCMOnDemand) { |
| 424 CreateDriver(FakeGCMClient::NO_DELAY_START); | 412 CreateDriver(FakeGCMClient::NO_DELAY_START); |
| 425 SignIn(kTestAccountID1); | 413 SignIn(kTestAccountID1); |
| 426 | 414 |
| 427 // GCMClient is not started. | 415 // GCMClient is not started. |
| 428 EXPECT_FALSE(driver()->IsGCMClientReady()); | |
| 429 EXPECT_EQ(FakeGCMClient::UNINITIALIZED, GetGCMClient()->status()); | 416 EXPECT_EQ(FakeGCMClient::UNINITIALIZED, GetGCMClient()->status()); |
| 430 | 417 |
| 431 // GCMClient is started after an app handler has been added. | 418 // GCMClient is started after an app handler has been added. |
| 432 driver()->AddAppHandler(kTestAppID1, gcm_app_handler()); | 419 driver()->AddAppHandler(kTestAppID1, gcm_app_handler()); |
| 433 PumpIOLoop(); | 420 PumpIOLoop(); |
| 434 PumpUILoop(); | 421 PumpUILoop(); |
| 435 EXPECT_TRUE(driver()->IsGCMClientReady()); | |
| 436 EXPECT_EQ(FakeGCMClient::STARTED, GetGCMClient()->status()); | 422 EXPECT_EQ(FakeGCMClient::STARTED, GetGCMClient()->status()); |
| 437 | 423 |
| 438 // Add another app handler. | 424 // Add another app handler. |
| 439 driver()->AddAppHandler(kTestAppID2, gcm_app_handler()); | 425 driver()->AddAppHandler(kTestAppID2, gcm_app_handler()); |
| 440 PumpIOLoop(); | 426 PumpIOLoop(); |
| 441 PumpUILoop(); | 427 PumpUILoop(); |
| 442 EXPECT_TRUE(driver()->IsGCMClientReady()); | |
| 443 EXPECT_EQ(FakeGCMClient::STARTED, GetGCMClient()->status()); | 428 EXPECT_EQ(FakeGCMClient::STARTED, GetGCMClient()->status()); |
| 444 | 429 |
| 445 // GCMClient remains active after one app handler is gone. | 430 // GCMClient remains active after one app handler is gone. |
| 446 driver()->RemoveAppHandler(kTestAppID1); | 431 driver()->RemoveAppHandler(kTestAppID1); |
| 447 PumpIOLoop(); | 432 PumpIOLoop(); |
| 448 PumpUILoop(); | 433 PumpUILoop(); |
| 449 EXPECT_TRUE(driver()->IsGCMClientReady()); | |
| 450 EXPECT_EQ(FakeGCMClient::STARTED, GetGCMClient()->status()); | 434 EXPECT_EQ(FakeGCMClient::STARTED, GetGCMClient()->status()); |
| 451 | 435 |
| 452 // GCMClient should be stopped after the last app handler is gone. | 436 // GCMClient should be stopped after the last app handler is gone. |
| 453 driver()->RemoveAppHandler(kTestAppID2); | 437 driver()->RemoveAppHandler(kTestAppID2); |
| 454 PumpIOLoop(); | 438 PumpIOLoop(); |
| 455 PumpUILoop(); | 439 PumpUILoop(); |
| 456 EXPECT_FALSE(driver()->IsGCMClientReady()); | |
| 457 EXPECT_EQ(FakeGCMClient::STOPPED, GetGCMClient()->status()); | 440 EXPECT_EQ(FakeGCMClient::STOPPED, GetGCMClient()->status()); |
| 458 | 441 |
| 459 // GCMClient is restarted after an app handler has been added. | 442 // GCMClient is restarted after an app handler has been added. |
| 460 driver()->AddAppHandler(kTestAppID2, gcm_app_handler()); | 443 driver()->AddAppHandler(kTestAppID2, gcm_app_handler()); |
| 461 PumpIOLoop(); | 444 PumpIOLoop(); |
| 462 PumpUILoop(); | 445 PumpUILoop(); |
| 463 EXPECT_TRUE(driver()->IsGCMClientReady()); | |
| 464 EXPECT_EQ(FakeGCMClient::STARTED, GetGCMClient()->status()); | 446 EXPECT_EQ(FakeGCMClient::STARTED, GetGCMClient()->status()); |
| 465 } | 447 } |
| 466 | 448 |
| 467 TEST_F(GCMDriverTest, RegisterFailed) { | 449 TEST_F(GCMDriverTest, RegisterFailed) { |
| 468 std::vector<std::string> sender_ids; | 450 std::vector<std::string> sender_ids; |
| 469 sender_ids.push_back("sender1"); | 451 sender_ids.push_back("sender1"); |
| 470 | 452 |
| 471 CreateDriver(FakeGCMClient::NO_DELAY_START); | 453 CreateDriver(FakeGCMClient::NO_DELAY_START); |
| 472 | 454 |
| 473 // Registration fails when GCM is disabled. | 455 // Registration fails when GCM is disabled. |
| (...skipping 402 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 876 | 858 |
| 877 TEST_F(GCMDriverFunctionalTest, MessagesDeleted) { | 859 TEST_F(GCMDriverFunctionalTest, MessagesDeleted) { |
| 878 GetGCMClient()->DeleteMessages(kTestAppID1); | 860 GetGCMClient()->DeleteMessages(kTestAppID1); |
| 879 gcm_app_handler()->WaitForNotification(); | 861 gcm_app_handler()->WaitForNotification(); |
| 880 EXPECT_EQ(FakeGCMAppHandler::MESSAGES_DELETED_EVENT, | 862 EXPECT_EQ(FakeGCMAppHandler::MESSAGES_DELETED_EVENT, |
| 881 gcm_app_handler()->received_event()); | 863 gcm_app_handler()->received_event()); |
| 882 EXPECT_EQ(kTestAppID1, gcm_app_handler()->app_id()); | 864 EXPECT_EQ(kTestAppID1, gcm_app_handler()->app_id()); |
| 883 } | 865 } |
| 884 | 866 |
| 885 } // namespace gcm | 867 } // namespace gcm |
| OLD | NEW |