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 |