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 <stddef.h> | 5 #include <stddef.h> |
6 #include <stdint.h> | 6 #include <stdint.h> |
7 | 7 |
8 #include <map> | 8 #include <map> |
9 #include <string> | 9 #include <string> |
10 | 10 |
(...skipping 551 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
562 "gcm_sender_id not found in manifest", | 562 "gcm_sender_id not found in manifest", |
563 script_result); | 563 script_result); |
564 | 564 |
565 // Now run the subscribe with a key. This should succeed. | 565 // Now run the subscribe with a key. This should succeed. |
566 ASSERT_TRUE(RunScript("workerSubscribePush()", &script_result)); | 566 ASSERT_TRUE(RunScript("workerSubscribePush()", &script_result)); |
567 ASSERT_NO_FATAL_FAILURE( | 567 ASSERT_NO_FATAL_FAILURE( |
568 EndpointToToken(script_result, true /* standard_protocol */)); | 568 EndpointToToken(script_result, true /* standard_protocol */)); |
569 | 569 |
570 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); | 570 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); |
571 EXPECT_EQ("unsubscribe result: true", script_result); | 571 EXPECT_EQ("unsubscribe result: true", script_result); |
572 EXPECT_NE(push_service(), GetAppHandler()); | |
573 } | 572 } |
574 | 573 |
575 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, | 574 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, |
576 ResubscribeWithoutKeyAfterSubscribingWithKeyInManifest) { | 575 ResubscribeWithoutKeyAfterSubscribingWithKeyInManifest) { |
577 std::string script_result; | 576 std::string script_result; |
578 | 577 |
579 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); | 578 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); |
580 ASSERT_EQ("ok - service worker registered", script_result); | 579 ASSERT_EQ("ok - service worker registered", script_result); |
581 | 580 |
582 ASSERT_NO_FATAL_FAILURE(RequestAndAcceptPermission()); | 581 ASSERT_NO_FATAL_FAILURE(RequestAndAcceptPermission()); |
(...skipping 25 matching lines...) Expand all Loading... |
608 // Now run the subscribe from the service worker without a key. | 607 // Now run the subscribe from the service worker without a key. |
609 // In this case, the sender id should be read from the datastore. | 608 // In this case, the sender id should be read from the datastore. |
610 ASSERT_TRUE(RunScript("workerSubscribePushNoKey()", &script_result)); | 609 ASSERT_TRUE(RunScript("workerSubscribePushNoKey()", &script_result)); |
611 std::string token2; | 610 std::string token2; |
612 ASSERT_NO_FATAL_FAILURE( | 611 ASSERT_NO_FATAL_FAILURE( |
613 EndpointToToken(script_result, false /* standard_protocol */, &token2)); | 612 EndpointToToken(script_result, false /* standard_protocol */, &token2)); |
614 EXPECT_EQ(token1, token2); | 613 EXPECT_EQ(token1, token2); |
615 | 614 |
616 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); | 615 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); |
617 EXPECT_EQ("unsubscribe result: true", script_result); | 616 EXPECT_EQ("unsubscribe result: true", script_result); |
618 EXPECT_NE(push_service(), GetAppHandler()); | |
619 | 617 |
620 // After unsubscribing, subscribe again from the worker with no key. | 618 // After unsubscribing, subscribe again from the worker with no key. |
621 // The sender id should again be read from the datastore, so the | 619 // The sender id should again be read from the datastore, so the |
622 // subcribe should succeed, and we should get a new subscription token. | 620 // subcribe should succeed, and we should get a new subscription token. |
623 ASSERT_TRUE(RunScript("workerSubscribePushNoKey()", &script_result)); | 621 ASSERT_TRUE(RunScript("workerSubscribePushNoKey()", &script_result)); |
624 std::string token3; | 622 std::string token3; |
625 ASSERT_NO_FATAL_FAILURE( | 623 ASSERT_NO_FATAL_FAILURE( |
626 EndpointToToken(script_result, false /* standard_protocol */, &token3)); | 624 EndpointToToken(script_result, false /* standard_protocol */, &token3)); |
627 EXPECT_NE(token1, token3); | 625 EXPECT_NE(token1, token3); |
628 | 626 |
629 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); | 627 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); |
630 EXPECT_EQ("unsubscribe result: true", script_result); | 628 EXPECT_EQ("unsubscribe result: true", script_result); |
631 EXPECT_NE(push_service(), GetAppHandler()); | |
632 } | 629 } |
633 | 630 |
634 IN_PROC_BROWSER_TEST_F( | 631 IN_PROC_BROWSER_TEST_F( |
635 PushMessagingBrowserTest, | 632 PushMessagingBrowserTest, |
636 ResubscribeWithoutKeyAfterSubscribingFromDocumentWithP256Key) { | 633 ResubscribeWithoutKeyAfterSubscribingFromDocumentWithP256Key) { |
637 std::string script_result; | 634 std::string script_result; |
638 | 635 |
639 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); | 636 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); |
640 ASSERT_EQ("ok - service worker registered", script_result); | 637 ASSERT_EQ("ok - service worker registered", script_result); |
641 | 638 |
(...skipping 18 matching lines...) Expand all Loading... |
660 // Now try to resubscribe from the service worker without a key. | 657 // Now try to resubscribe from the service worker without a key. |
661 // This should also fail as the original key was not numeric. | 658 // This should also fail as the original key was not numeric. |
662 ASSERT_TRUE(RunScript("workerSubscribePushNoKey()", &script_result)); | 659 ASSERT_TRUE(RunScript("workerSubscribePushNoKey()", &script_result)); |
663 EXPECT_EQ( | 660 EXPECT_EQ( |
664 "AbortError - Registration failed - missing applicationServerKey, " | 661 "AbortError - Registration failed - missing applicationServerKey, " |
665 "and gcm_sender_id not found in manifest", | 662 "and gcm_sender_id not found in manifest", |
666 script_result); | 663 script_result); |
667 | 664 |
668 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); | 665 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); |
669 EXPECT_EQ("unsubscribe result: true", script_result); | 666 EXPECT_EQ("unsubscribe result: true", script_result); |
670 EXPECT_NE(push_service(), GetAppHandler()); | |
671 | 667 |
672 // After unsubscribing, try to resubscribe again without a key. | 668 // After unsubscribing, try to resubscribe again without a key. |
673 // This should again fail. | 669 // This should again fail. |
674 ASSERT_TRUE(RunScript("workerSubscribePushNoKey()", &script_result)); | 670 ASSERT_TRUE(RunScript("workerSubscribePushNoKey()", &script_result)); |
675 EXPECT_EQ( | 671 EXPECT_EQ( |
676 "AbortError - Registration failed - missing applicationServerKey, " | 672 "AbortError - Registration failed - missing applicationServerKey, " |
677 "and gcm_sender_id not found in manifest", | 673 "and gcm_sender_id not found in manifest", |
678 script_result); | 674 script_result); |
679 } | 675 } |
680 | 676 |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
763 // manifest, not a numeric applicationServerKey, but for code simplicity | 759 // manifest, not a numeric applicationServerKey, but for code simplicity |
764 // this case is allowed. | 760 // this case is allowed. |
765 ASSERT_TRUE(RunScript("workerSubscribePushNoKey()", &script_result)); | 761 ASSERT_TRUE(RunScript("workerSubscribePushNoKey()", &script_result)); |
766 std::string token2; | 762 std::string token2; |
767 ASSERT_NO_FATAL_FAILURE( | 763 ASSERT_NO_FATAL_FAILURE( |
768 EndpointToToken(script_result, false /* standard_protocol */, &token2)); | 764 EndpointToToken(script_result, false /* standard_protocol */, &token2)); |
769 EXPECT_EQ(token1, token2); | 765 EXPECT_EQ(token1, token2); |
770 | 766 |
771 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); | 767 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); |
772 EXPECT_EQ("unsubscribe result: true", script_result); | 768 EXPECT_EQ("unsubscribe result: true", script_result); |
773 EXPECT_NE(push_service(), GetAppHandler()); | |
774 | 769 |
775 // After unsubscribing, subscribe again from the worker with no key. | 770 // After unsubscribing, subscribe again from the worker with no key. |
776 // The sender id should again be read from the datastore, so the | 771 // The sender id should again be read from the datastore, so the |
777 // subcribe should succeed, and we should get a new subscription token. | 772 // subcribe should succeed, and we should get a new subscription token. |
778 ASSERT_TRUE(RunScript("workerSubscribePushNoKey()", &script_result)); | 773 ASSERT_TRUE(RunScript("workerSubscribePushNoKey()", &script_result)); |
779 std::string token3; | 774 std::string token3; |
780 ASSERT_NO_FATAL_FAILURE( | 775 ASSERT_NO_FATAL_FAILURE( |
781 EndpointToToken(script_result, false /* standard_protocol */, &token3)); | 776 EndpointToToken(script_result, false /* standard_protocol */, &token3)); |
782 EXPECT_NE(token1, token3); | 777 EXPECT_NE(token1, token3); |
783 | 778 |
784 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); | 779 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); |
785 EXPECT_EQ("unsubscribe result: true", script_result); | 780 EXPECT_EQ("unsubscribe result: true", script_result); |
786 EXPECT_NE(push_service(), GetAppHandler()); | |
787 } | 781 } |
788 | 782 |
789 IN_PROC_BROWSER_TEST_F( | 783 IN_PROC_BROWSER_TEST_F( |
790 PushMessagingBrowserTest, | 784 PushMessagingBrowserTest, |
791 ResubscribeWithoutKeyAfterSubscribingFromWorkerWithNumber) { | 785 ResubscribeWithoutKeyAfterSubscribingFromWorkerWithNumber) { |
792 std::string script_result; | 786 std::string script_result; |
793 | 787 |
794 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); | 788 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); |
795 ASSERT_EQ("ok - service worker registered", script_result); | 789 ASSERT_EQ("ok - service worker registered", script_result); |
796 | 790 |
(...skipping 25 matching lines...) Expand all Loading... |
822 // manifest, not a numeric applicationServerKey, but for code simplicity | 816 // manifest, not a numeric applicationServerKey, but for code simplicity |
823 // this case is allowed. | 817 // this case is allowed. |
824 ASSERT_TRUE(RunScript("workerSubscribePushNoKey()", &script_result)); | 818 ASSERT_TRUE(RunScript("workerSubscribePushNoKey()", &script_result)); |
825 std::string token2; | 819 std::string token2; |
826 ASSERT_NO_FATAL_FAILURE( | 820 ASSERT_NO_FATAL_FAILURE( |
827 EndpointToToken(script_result, false /* standard_protocol */, &token2)); | 821 EndpointToToken(script_result, false /* standard_protocol */, &token2)); |
828 EXPECT_EQ(token1, token2); | 822 EXPECT_EQ(token1, token2); |
829 | 823 |
830 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); | 824 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); |
831 EXPECT_EQ("unsubscribe result: true", script_result); | 825 EXPECT_EQ("unsubscribe result: true", script_result); |
832 EXPECT_NE(push_service(), GetAppHandler()); | |
833 | 826 |
834 // After unsubscribing, subscribe again from the worker with no key. | 827 // After unsubscribing, subscribe again from the worker with no key. |
835 // The sender id should again be read from the datastore, so the | 828 // The sender id should again be read from the datastore, so the |
836 // subcribe should succeed, and we should get a new subscription token. | 829 // subcribe should succeed, and we should get a new subscription token. |
837 ASSERT_TRUE(RunScript("workerSubscribePushNoKey()", &script_result)); | 830 ASSERT_TRUE(RunScript("workerSubscribePushNoKey()", &script_result)); |
838 std::string token3; | 831 std::string token3; |
839 ASSERT_NO_FATAL_FAILURE( | 832 ASSERT_NO_FATAL_FAILURE( |
840 EndpointToToken(script_result, false /* standard_protocol */, &token3)); | 833 EndpointToToken(script_result, false /* standard_protocol */, &token3)); |
841 EXPECT_NE(token1, token3); | 834 EXPECT_NE(token1, token3); |
842 | 835 |
843 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); | 836 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); |
844 EXPECT_EQ("unsubscribe result: true", script_result); | 837 EXPECT_EQ("unsubscribe result: true", script_result); |
845 EXPECT_NE(push_service(), GetAppHandler()); | |
846 } | 838 } |
847 | 839 |
848 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, ResubscribeWithMismatchedKey) { | 840 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, ResubscribeWithMismatchedKey) { |
849 std::string script_result; | 841 std::string script_result; |
850 | 842 |
851 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); | 843 ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result)); |
852 ASSERT_EQ("ok - service worker registered", script_result); | 844 ASSERT_EQ("ok - service worker registered", script_result); |
853 | 845 |
854 ASSERT_NO_FATAL_FAILURE(RequestAndAcceptPermission()); | 846 ASSERT_NO_FATAL_FAILURE(RequestAndAcceptPermission()); |
855 | 847 |
(...skipping 22 matching lines...) Expand all Loading... |
878 // Try to resubscribe with the original key - should succeed. | 870 // Try to resubscribe with the original key - should succeed. |
879 ASSERT_TRUE( | 871 ASSERT_TRUE( |
880 RunScript("workerSubscribePushWithNumericKey('11111')", &script_result)); | 872 RunScript("workerSubscribePushWithNumericKey('11111')", &script_result)); |
881 std::string token2; | 873 std::string token2; |
882 ASSERT_NO_FATAL_FAILURE( | 874 ASSERT_NO_FATAL_FAILURE( |
883 EndpointToToken(script_result, false /* standard_protocol */, &token2)); | 875 EndpointToToken(script_result, false /* standard_protocol */, &token2)); |
884 EXPECT_EQ(token1, token2); | 876 EXPECT_EQ(token1, token2); |
885 | 877 |
886 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); | 878 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); |
887 EXPECT_EQ("unsubscribe result: true", script_result); | 879 EXPECT_EQ("unsubscribe result: true", script_result); |
888 EXPECT_NE(push_service(), GetAppHandler()); | |
889 | 880 |
890 // Resubscribe with a different key after unsubscribing. | 881 // Resubscribe with a different key after unsubscribing. |
891 // Should succeed, and we should get a new subscription token. | 882 // Should succeed, and we should get a new subscription token. |
892 ASSERT_TRUE( | 883 ASSERT_TRUE( |
893 RunScript("workerSubscribePushWithNumericKey('22222')", &script_result)); | 884 RunScript("workerSubscribePushWithNumericKey('22222')", &script_result)); |
894 std::string token3; | 885 std::string token3; |
895 ASSERT_NO_FATAL_FAILURE( | 886 ASSERT_NO_FATAL_FAILURE( |
896 EndpointToToken(script_result, false /* standard_protocol */, &token3)); | 887 EndpointToToken(script_result, false /* standard_protocol */, &token3)); |
897 EXPECT_NE(token1, token3); | 888 EXPECT_NE(token1, token3); |
898 | 889 |
899 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); | 890 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); |
900 EXPECT_EQ("unsubscribe result: true", script_result); | 891 EXPECT_EQ("unsubscribe result: true", script_result); |
901 EXPECT_NE(push_service(), GetAppHandler()); | |
902 } | 892 } |
903 | 893 |
904 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, SubscribePersisted) { | 894 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, SubscribePersisted) { |
905 std::string script_result; | 895 std::string script_result; |
906 | 896 |
907 // First, test that Service Worker registration IDs are assigned in order of | 897 // First, test that Service Worker registration IDs are assigned in order of |
908 // registering the Service Workers, and the (fake) push subscription ids are | 898 // registering the Service Workers, and the (fake) push subscription ids are |
909 // assigned in order of push subscription (even when these orders are | 899 // assigned in order of push subscription (even when these orders are |
910 // different). | 900 // different). |
911 | 901 |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
976 EXPECT_NE(push_service(), GetAppHandler()); | 966 EXPECT_NE(push_service(), GetAppHandler()); |
977 ASSERT_NO_FATAL_FAILURE(RestartPushService()); | 967 ASSERT_NO_FATAL_FAILURE(RestartPushService()); |
978 EXPECT_NE(push_service(), GetAppHandler()); | 968 EXPECT_NE(push_service(), GetAppHandler()); |
979 | 969 |
980 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully()); | 970 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully()); |
981 | 971 |
982 EXPECT_EQ(push_service(), GetAppHandler()); | 972 EXPECT_EQ(push_service(), GetAppHandler()); |
983 ASSERT_NO_FATAL_FAILURE(RestartPushService()); | 973 ASSERT_NO_FATAL_FAILURE(RestartPushService()); |
984 EXPECT_EQ(push_service(), GetAppHandler()); | 974 EXPECT_EQ(push_service(), GetAppHandler()); |
985 | 975 |
| 976 std::string script_result; |
| 977 |
986 // Unsubscribe. | 978 // Unsubscribe. |
987 std::string script_result; | 979 base::RunLoop run_loop; |
| 980 push_service()->SetUnsubscribeCallbackForTesting(run_loop.QuitClosure()); |
988 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); | 981 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); |
989 EXPECT_EQ("unsubscribe result: true", script_result); | 982 EXPECT_EQ("unsubscribe result: true", script_result); |
| 983 // The app handler is only guaranteed to be unregistered once the unsubscribe |
| 984 // callback for testing has been run (PushSubscription.unsubscribe() usually |
| 985 // resolves before that, in order to avoid blocking on network retries etc). |
| 986 run_loop.Run(); |
990 | 987 |
991 EXPECT_NE(push_service(), GetAppHandler()); | 988 EXPECT_NE(push_service(), GetAppHandler()); |
992 ASSERT_NO_FATAL_FAILURE(RestartPushService()); | 989 ASSERT_NO_FATAL_FAILURE(RestartPushService()); |
993 EXPECT_NE(push_service(), GetAppHandler()); | 990 EXPECT_NE(push_service(), GetAppHandler()); |
994 } | 991 } |
995 | 992 |
996 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PushEventSuccess) { | 993 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PushEventSuccess) { |
997 std::string script_result; | 994 std::string script_result; |
998 | 995 |
999 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully()); | 996 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully()); |
(...skipping 688 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1688 histogram_tester_.ExpectBucketCount( | 1685 histogram_tester_.ExpectBucketCount( |
1689 "PushMessaging.UnregistrationReason", | 1686 "PushMessaging.UnregistrationReason", |
1690 content::PUSH_UNREGISTRATION_REASON_SERVICE_WORKER_UNREGISTERED, 1); | 1687 content::PUSH_UNREGISTRATION_REASON_SERVICE_WORKER_UNREGISTERED, 1); |
1691 histogram_tester_.ExpectTotalCount("PushMessaging.UnregistrationReason", 6); | 1688 histogram_tester_.ExpectTotalCount("PushMessaging.UnregistrationReason", 6); |
1692 | 1689 |
1693 // Now manual unsubscribe should return false. | 1690 // Now manual unsubscribe should return false. |
1694 ASSERT_TRUE(RunScript("unsubscribeStoredPushSubscription()", &script_result)); | 1691 ASSERT_TRUE(RunScript("unsubscribeStoredPushSubscription()", &script_result)); |
1695 EXPECT_EQ("unsubscribe result: false", script_result); | 1692 EXPECT_EQ("unsubscribe result: false", script_result); |
1696 } | 1693 } |
1697 | 1694 |
| 1695 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, UnsubscribeOffline) { |
| 1696 std::string script_result; |
| 1697 |
| 1698 EXPECT_NE(push_service(), GetAppHandler()); |
| 1699 |
| 1700 std::string token; |
| 1701 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully(true /* use_key */, &token)); |
| 1702 |
| 1703 gcm_service_->set_offline(true); |
| 1704 |
| 1705 // Should quickly resolve true after deleting local state (rather than waiting |
| 1706 // until unsubscribing over the network exceeds the maximum backoff duration). |
| 1707 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); |
| 1708 EXPECT_EQ("unsubscribe result: true", script_result); |
| 1709 histogram_tester_.ExpectUniqueSample( |
| 1710 "PushMessaging.UnregistrationReason", |
| 1711 content::PUSH_UNREGISTRATION_REASON_JAVASCRIPT_API, 1); |
| 1712 |
| 1713 // Since the service is offline, the network request to GCM is still being |
| 1714 // retried, so the app handler shouldn't have been unregistered yet. |
| 1715 EXPECT_EQ(push_service(), GetAppHandler()); |
| 1716 // But restarting the push service will unregister the app handler, since the |
| 1717 // subscription is no longer stored in the PushMessagingAppIdentifier map. |
| 1718 ASSERT_NO_FATAL_FAILURE(RestartPushService()); |
| 1719 EXPECT_NE(push_service(), GetAppHandler()); |
| 1720 } |
| 1721 |
1698 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, | 1722 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, |
1699 UnregisteringServiceWorkerUnsubscribes) { | 1723 UnregisteringServiceWorkerUnsubscribes) { |
1700 std::string script_result; | 1724 std::string script_result; |
1701 | 1725 |
1702 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully()); | 1726 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully()); |
1703 | 1727 |
1704 LoadTestPage(); // Reload to become controlled. | 1728 LoadTestPage(); // Reload to become controlled. |
1705 ASSERT_TRUE(RunScript("isControlled()", &script_result)); | 1729 ASSERT_TRUE(RunScript("isControlled()", &script_result)); |
1706 ASSERT_EQ("true - is controlled", script_result); | 1730 ASSERT_EQ("true - is controlled", script_result); |
1707 | 1731 |
(...skipping 415 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2123 BackgroundModeManager* background_mode_manager = | 2147 BackgroundModeManager* background_mode_manager = |
2124 g_browser_process->background_mode_manager(); | 2148 g_browser_process->background_mode_manager(); |
2125 ASSERT_FALSE(background_mode_manager->IsBackgroundModeActive()); | 2149 ASSERT_FALSE(background_mode_manager->IsBackgroundModeActive()); |
2126 | 2150 |
2127 // Once there is a push subscription background mode is still inactive. | 2151 // Once there is a push subscription background mode is still inactive. |
2128 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully()); | 2152 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully()); |
2129 ASSERT_FALSE(background_mode_manager->IsBackgroundModeActive()); | 2153 ASSERT_FALSE(background_mode_manager->IsBackgroundModeActive()); |
2130 | 2154 |
2131 // After dropping the last subscription it is still inactive. | 2155 // After dropping the last subscription it is still inactive. |
2132 std::string script_result; | 2156 std::string script_result; |
| 2157 base::RunLoop run_loop; |
| 2158 push_service()->SetUnsubscribeCallbackForTesting(run_loop.QuitClosure()); |
2133 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); | 2159 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); |
2134 EXPECT_EQ("unsubscribe result: true", script_result); | 2160 EXPECT_EQ("unsubscribe result: true", script_result); |
| 2161 // Background mode is only guaranteed to have updated once the unsubscribe |
| 2162 // callback for testing has been run (PushSubscription.unsubscribe() usually |
| 2163 // resolves before that, in order to avoid blocking on network retries etc). |
| 2164 run_loop.Run(); |
2135 ASSERT_FALSE(background_mode_manager->IsBackgroundModeActive()); | 2165 ASSERT_FALSE(background_mode_manager->IsBackgroundModeActive()); |
2136 } | 2166 } |
2137 | 2167 |
2138 class PushMessagingBackgroundModeEnabledBrowserTest | 2168 class PushMessagingBackgroundModeEnabledBrowserTest |
2139 : public PushMessagingBrowserTest { | 2169 : public PushMessagingBrowserTest { |
2140 public: | 2170 public: |
2141 ~PushMessagingBackgroundModeEnabledBrowserTest() override {} | 2171 ~PushMessagingBackgroundModeEnabledBrowserTest() override {} |
2142 | 2172 |
2143 // PushMessagingBrowserTest: | 2173 // PushMessagingBrowserTest: |
2144 void SetUpCommandLine(base::CommandLine* command_line) override { | 2174 void SetUpCommandLine(base::CommandLine* command_line) override { |
2145 command_line->AppendSwitch(switches::kEnablePushApiBackgroundMode); | 2175 command_line->AppendSwitch(switches::kEnablePushApiBackgroundMode); |
2146 PushMessagingBrowserTest::SetUpCommandLine(command_line); | 2176 PushMessagingBrowserTest::SetUpCommandLine(command_line); |
2147 } | 2177 } |
2148 }; | 2178 }; |
2149 | 2179 |
2150 // In this test the command line enables push background mode. | 2180 // In this test the command line enables push background mode. |
2151 IN_PROC_BROWSER_TEST_F(PushMessagingBackgroundModeEnabledBrowserTest, | 2181 IN_PROC_BROWSER_TEST_F(PushMessagingBackgroundModeEnabledBrowserTest, |
2152 BackgroundModeEnabledWithCommandLine) { | 2182 BackgroundModeEnabledWithCommandLine) { |
2153 // Initially background mode is inactive. | 2183 // Initially background mode is inactive. |
2154 BackgroundModeManager* background_mode_manager = | 2184 BackgroundModeManager* background_mode_manager = |
2155 g_browser_process->background_mode_manager(); | 2185 g_browser_process->background_mode_manager(); |
2156 ASSERT_FALSE(background_mode_manager->IsBackgroundModeActive()); | 2186 ASSERT_FALSE(background_mode_manager->IsBackgroundModeActive()); |
2157 | 2187 |
2158 // Once there is a push subscription background mode is active. | 2188 // Once there is a push subscription background mode is active. |
2159 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully()); | 2189 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully()); |
2160 ASSERT_TRUE(background_mode_manager->IsBackgroundModeActive()); | 2190 ASSERT_TRUE(background_mode_manager->IsBackgroundModeActive()); |
2161 | 2191 |
2162 // Dropping the last subscription deactivates background mode. | 2192 // Dropping the last subscription deactivates background mode. |
2163 std::string script_result; | 2193 std::string script_result; |
| 2194 base::RunLoop run_loop; |
| 2195 push_service()->SetUnsubscribeCallbackForTesting(run_loop.QuitClosure()); |
2164 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); | 2196 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); |
2165 EXPECT_EQ("unsubscribe result: true", script_result); | 2197 EXPECT_EQ("unsubscribe result: true", script_result); |
| 2198 // Background mode is only guaranteed to have updated once the unsubscribe |
| 2199 // callback for testing has been run (PushSubscription.unsubscribe() usually |
| 2200 // resolves before that, in order to avoid blocking on network retries etc). |
| 2201 run_loop.Run(); |
2166 ASSERT_FALSE(background_mode_manager->IsBackgroundModeActive()); | 2202 ASSERT_FALSE(background_mode_manager->IsBackgroundModeActive()); |
2167 } | 2203 } |
2168 | 2204 |
2169 class PushMessagingBackgroundModeDisabledBrowserTest | 2205 class PushMessagingBackgroundModeDisabledBrowserTest |
2170 : public PushMessagingBrowserTest { | 2206 : public PushMessagingBrowserTest { |
2171 public: | 2207 public: |
2172 ~PushMessagingBackgroundModeDisabledBrowserTest() override {} | 2208 ~PushMessagingBackgroundModeDisabledBrowserTest() override {} |
2173 | 2209 |
2174 // PushMessagingBrowserTest: | 2210 // PushMessagingBrowserTest: |
2175 void SetUpCommandLine(base::CommandLine* command_line) override { | 2211 void SetUpCommandLine(base::CommandLine* command_line) override { |
2176 command_line->AppendSwitch(switches::kDisablePushApiBackgroundMode); | 2212 command_line->AppendSwitch(switches::kDisablePushApiBackgroundMode); |
2177 PushMessagingBrowserTest::SetUpCommandLine(command_line); | 2213 PushMessagingBrowserTest::SetUpCommandLine(command_line); |
2178 } | 2214 } |
2179 }; | 2215 }; |
2180 | 2216 |
2181 // In this test the command line disables push background mode. | 2217 // In this test the command line disables push background mode. |
2182 IN_PROC_BROWSER_TEST_F(PushMessagingBackgroundModeDisabledBrowserTest, | 2218 IN_PROC_BROWSER_TEST_F(PushMessagingBackgroundModeDisabledBrowserTest, |
2183 BackgroundModeDisabledWithCommandLine) { | 2219 BackgroundModeDisabledWithCommandLine) { |
2184 // Initially background mode is inactive. | 2220 // Initially background mode is inactive. |
2185 BackgroundModeManager* background_mode_manager = | 2221 BackgroundModeManager* background_mode_manager = |
2186 g_browser_process->background_mode_manager(); | 2222 g_browser_process->background_mode_manager(); |
2187 ASSERT_FALSE(background_mode_manager->IsBackgroundModeActive()); | 2223 ASSERT_FALSE(background_mode_manager->IsBackgroundModeActive()); |
2188 | 2224 |
2189 // Once there is a push subscription background mode is still inactive. | 2225 // Once there is a push subscription background mode is still inactive. |
2190 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully()); | 2226 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully()); |
2191 ASSERT_FALSE(background_mode_manager->IsBackgroundModeActive()); | 2227 ASSERT_FALSE(background_mode_manager->IsBackgroundModeActive()); |
2192 | 2228 |
2193 // After dropping the last subscription background mode is still inactive. | 2229 // After dropping the last subscription background mode is still inactive. |
2194 std::string script_result; | 2230 std::string script_result; |
| 2231 base::RunLoop run_loop; |
| 2232 push_service()->SetUnsubscribeCallbackForTesting(run_loop.QuitClosure()); |
2195 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); | 2233 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); |
2196 EXPECT_EQ("unsubscribe result: true", script_result); | 2234 EXPECT_EQ("unsubscribe result: true", script_result); |
| 2235 // Background mode is only guaranteed to have updated once the unsubscribe |
| 2236 // callback for testing has been run (PushSubscription.unsubscribe() usually |
| 2237 // resolves before that, in order to avoid blocking on network retries etc). |
| 2238 run_loop.Run(); |
2197 ASSERT_FALSE(background_mode_manager->IsBackgroundModeActive()); | 2239 ASSERT_FALSE(background_mode_manager->IsBackgroundModeActive()); |
2198 } | 2240 } |
2199 #endif // BUILDFLAG(ENABLE_BACKGROUND) && !defined(OS_CHROMEOS) | 2241 #endif // BUILDFLAG(ENABLE_BACKGROUND) && !defined(OS_CHROMEOS) |
OLD | NEW |