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 704 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
715 | 715 |
716 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PushEventSuccess) { | 716 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PushEventSuccess) { |
717 std::string script_result; | 717 std::string script_result; |
718 | 718 |
719 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully()); | 719 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully()); |
720 PushMessagingAppIdentifier app_identifier = | 720 PushMessagingAppIdentifier app_identifier = |
721 GetAppIdentifierForServiceWorkerRegistration(0LL); | 721 GetAppIdentifierForServiceWorkerRegistration(0LL); |
722 | 722 |
723 ASSERT_TRUE(RunScript("isControlled()", &script_result)); | 723 ASSERT_TRUE(RunScript("isControlled()", &script_result)); |
724 ASSERT_EQ("false - is not controlled", script_result); | 724 ASSERT_EQ("false - is not controlled", script_result); |
725 | |
726 LoadTestPage(); // Reload to become controlled. | 725 LoadTestPage(); // Reload to become controlled. |
727 | |
728 ASSERT_TRUE(RunScript("isControlled()", &script_result)); | 726 ASSERT_TRUE(RunScript("isControlled()", &script_result)); |
729 ASSERT_EQ("true - is controlled", script_result); | 727 ASSERT_EQ("true - is controlled", script_result); |
730 | 728 |
731 EXPECT_TRUE(IsRegisteredKeepAliveEqualTo(false)); | 729 EXPECT_TRUE(IsRegisteredKeepAliveEqualTo(false)); |
732 gcm::IncomingMessage message; | 730 gcm::IncomingMessage message; |
733 message.sender_id = GetTestApplicationServerKey(); | 731 message.sender_id = GetTestApplicationServerKey(); |
734 message.raw_data = "testdata"; | 732 message.raw_data = "testdata"; |
735 message.decrypted = true; | 733 message.decrypted = true; |
736 push_service()->OnMessage(app_identifier.app_id(), message); | 734 push_service()->OnMessage(app_identifier.app_id(), message); |
737 EXPECT_TRUE(IsRegisteredKeepAliveEqualTo(true)); | 735 EXPECT_TRUE(IsRegisteredKeepAliveEqualTo(true)); |
(...skipping 12 matching lines...) Expand all Loading... |
750 content::PUSH_DELIVERY_STATUS_SUCCESS, 1); | 748 content::PUSH_DELIVERY_STATUS_SUCCESS, 1); |
751 } | 749 } |
752 | 750 |
753 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PushEventWithoutPayload) { | 751 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PushEventWithoutPayload) { |
754 std::string script_result; | 752 std::string script_result; |
755 | 753 |
756 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully()); | 754 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully()); |
757 PushMessagingAppIdentifier app_identifier = | 755 PushMessagingAppIdentifier app_identifier = |
758 GetAppIdentifierForServiceWorkerRegistration(0LL); | 756 GetAppIdentifierForServiceWorkerRegistration(0LL); |
759 | 757 |
760 ASSERT_TRUE(RunScript("isControlled()", &script_result)); | |
761 ASSERT_EQ("false - is not controlled", script_result); | |
762 | |
763 LoadTestPage(); // Reload to become controlled. | 758 LoadTestPage(); // Reload to become controlled. |
764 | |
765 ASSERT_TRUE(RunScript("isControlled()", &script_result)); | 759 ASSERT_TRUE(RunScript("isControlled()", &script_result)); |
766 ASSERT_EQ("true - is controlled", script_result); | 760 ASSERT_EQ("true - is controlled", script_result); |
767 | 761 |
768 gcm::IncomingMessage message; | 762 gcm::IncomingMessage message; |
769 message.sender_id = GetTestApplicationServerKey(); | 763 message.sender_id = GetTestApplicationServerKey(); |
770 message.decrypted = false; | 764 message.decrypted = false; |
771 | 765 |
772 push_service()->OnMessage(app_identifier.app_id(), message); | 766 push_service()->OnMessage(app_identifier.app_id(), message); |
773 ASSERT_TRUE(RunScript("resultQueue.pop()", &script_result)); | 767 ASSERT_TRUE(RunScript("resultQueue.pop()", &script_result)); |
774 EXPECT_EQ("[NULL]", script_result); | 768 EXPECT_EQ("[NULL]", script_result); |
775 } | 769 } |
776 | 770 |
777 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, LegacyPushEvent) { | 771 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, LegacyPushEvent) { |
778 std::string script_result; | 772 std::string script_result; |
779 | 773 |
780 ASSERT_NO_FATAL_FAILURE(LegacySubscribeSuccessfully()); | 774 ASSERT_NO_FATAL_FAILURE(LegacySubscribeSuccessfully()); |
781 PushMessagingAppIdentifier app_identifier = | 775 PushMessagingAppIdentifier app_identifier = |
782 GetAppIdentifierForServiceWorkerRegistration(0LL); | 776 GetAppIdentifierForServiceWorkerRegistration(0LL); |
783 | 777 |
784 ASSERT_TRUE(RunScript("isControlled()", &script_result)); | |
785 ASSERT_EQ("false - is not controlled", script_result); | |
786 | |
787 LoadTestPage(); // Reload to become controlled. | 778 LoadTestPage(); // Reload to become controlled. |
788 | |
789 ASSERT_TRUE(RunScript("isControlled()", &script_result)); | 779 ASSERT_TRUE(RunScript("isControlled()", &script_result)); |
790 ASSERT_EQ("true - is controlled", script_result); | 780 ASSERT_EQ("true - is controlled", script_result); |
791 | 781 |
792 gcm::IncomingMessage message; | 782 gcm::IncomingMessage message; |
793 message.sender_id = kManifestSenderId; | 783 message.sender_id = kManifestSenderId; |
794 message.decrypted = false; | 784 message.decrypted = false; |
795 | 785 |
796 push_service()->OnMessage(app_identifier.app_id(), message); | 786 push_service()->OnMessage(app_identifier.app_id(), message); |
797 ASSERT_TRUE(RunScript("resultQueue.pop()", &script_result)); | 787 ASSERT_TRUE(RunScript("resultQueue.pop()", &script_result)); |
798 EXPECT_EQ("[NULL]", script_result); | 788 EXPECT_EQ("[NULL]", script_result); |
799 } | 789 } |
800 | 790 |
801 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PushEventNoServiceWorker) { | 791 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PushEventNoServiceWorker) { |
802 std::string script_result; | 792 std::string script_result; |
803 | 793 |
804 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully()); | 794 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully()); |
805 PushMessagingAppIdentifier app_identifier = | 795 PushMessagingAppIdentifier app_identifier = |
806 GetAppIdentifierForServiceWorkerRegistration(0LL); | 796 GetAppIdentifierForServiceWorkerRegistration(0LL); |
807 | 797 |
808 ASSERT_TRUE(RunScript("isControlled()", &script_result)); | |
809 ASSERT_EQ("false - is not controlled", script_result); | |
810 | |
811 LoadTestPage(); // Reload to become controlled. | 798 LoadTestPage(); // Reload to become controlled. |
812 | |
813 ASSERT_TRUE(RunScript("isControlled()", &script_result)); | 799 ASSERT_TRUE(RunScript("isControlled()", &script_result)); |
814 ASSERT_EQ("true - is controlled", script_result); | 800 ASSERT_EQ("true - is controlled", script_result); |
815 | 801 |
816 // Unregister service worker. Sending a message should now fail. | 802 // Unregister service worker. Sending a message should now fail. |
817 ASSERT_TRUE(RunScript("unregisterServiceWorker()", &script_result)); | 803 ASSERT_TRUE(RunScript("unregisterServiceWorker()", &script_result)); |
818 ASSERT_EQ("service worker unregistration status: true", script_result); | 804 ASSERT_EQ("service worker unregistration status: true", script_result); |
819 | 805 // Ideally unregistering the service worker would unsubscribe from push, but |
820 // Unregistering the service worker doesn't yet unsubscribe from push (though | 806 // that isn't yet implemented (crbug.com/402458). |
821 // it should), and FindByServiceWorker doesn't require a live SW. | 807 histogram_tester_.ExpectTotalCount("PushMessaging.UnregistrationReason", 0); |
| 808 // Since unregistering the service worker doesn't yet unsubscribe from push, |
| 809 // and FindByServiceWorker doesn't require a live SW, we can still lookup the |
| 810 // push subscription's app identifier. |
822 GURL origin = https_server()->GetURL("/").GetOrigin(); | 811 GURL origin = https_server()->GetURL("/").GetOrigin(); |
823 PushMessagingAppIdentifier app_identifier2 = | 812 PushMessagingAppIdentifier app_identifier2 = |
824 PushMessagingAppIdentifier::FindByServiceWorker( | 813 PushMessagingAppIdentifier::FindByServiceWorker( |
825 GetBrowser()->profile(), origin, | 814 GetBrowser()->profile(), origin, |
826 0LL /* service_worker_registration_id */); | 815 0LL /* service_worker_registration_id */); |
827 EXPECT_FALSE(app_identifier2.is_null()); | 816 EXPECT_FALSE(app_identifier2.is_null()); |
828 EXPECT_EQ(app_identifier.app_id(), app_identifier2.app_id()); | 817 EXPECT_EQ(app_identifier.app_id(), app_identifier2.app_id()); |
829 | 818 |
830 gcm::IncomingMessage message; | 819 gcm::IncomingMessage message; |
831 message.sender_id = GetTestApplicationServerKey(); | 820 message.sender_id = GetTestApplicationServerKey(); |
832 message.raw_data = "testdata"; | 821 message.raw_data = "testdata"; |
833 message.decrypted = true; | 822 message.decrypted = true; |
834 | 823 |
835 base::RunLoop run_loop; | 824 base::RunLoop run_loop; |
836 push_service()->SetMessageCallbackForTesting(run_loop.QuitClosure()); | 825 push_service()->SetMessageCallbackForTesting(run_loop.QuitClosure()); |
837 EXPECT_TRUE(IsRegisteredKeepAliveEqualTo(false)); | 826 EXPECT_TRUE(IsRegisteredKeepAliveEqualTo(false)); |
838 push_service()->OnMessage(app_identifier.app_id(), message); | 827 push_service()->OnMessage(app_identifier.app_id(), message); |
839 EXPECT_TRUE(IsRegisteredKeepAliveEqualTo(true)); | 828 EXPECT_TRUE(IsRegisteredKeepAliveEqualTo(true)); |
840 run_loop.Run(); | 829 run_loop.Run(); |
841 EXPECT_TRUE(IsRegisteredKeepAliveEqualTo(false)); | 830 EXPECT_TRUE(IsRegisteredKeepAliveEqualTo(false)); |
842 | 831 |
| 832 // No push data should have been received. |
| 833 ASSERT_TRUE(RunScript("resultQueue.popImmediately()", &script_result)); |
| 834 EXPECT_EQ("null", script_result); |
| 835 |
843 // Check that we record this case in UMA. | 836 // Check that we record this case in UMA. |
844 histogram_tester_.ExpectUniqueSample( | 837 histogram_tester_.ExpectUniqueSample( |
845 "PushMessaging.DeliveryStatus.FindServiceWorker", | 838 "PushMessaging.DeliveryStatus.FindServiceWorker", |
846 5 /* SERVICE_WORKER_ERROR_NOT_FOUND */, 1); | 839 5 /* SERVICE_WORKER_ERROR_NOT_FOUND */, 1); |
847 histogram_tester_.ExpectTotalCount( | 840 histogram_tester_.ExpectTotalCount( |
848 "PushMessaging.DeliveryStatus.ServiceWorkerEvent", 0); | 841 "PushMessaging.DeliveryStatus.ServiceWorkerEvent", 0); |
849 histogram_tester_.ExpectUniqueSample( | 842 histogram_tester_.ExpectUniqueSample( |
850 "PushMessaging.DeliveryStatus", | 843 "PushMessaging.DeliveryStatus", |
851 content::PUSH_DELIVERY_STATUS_NO_SERVICE_WORKER, 1); | 844 content::PUSH_DELIVERY_STATUS_NO_SERVICE_WORKER, 1); |
852 | 845 |
853 // Now the push service has received a message and failed to find its service | 846 // Missing Service Workers should trigger an automatic unsubscription attempt. |
854 // worker, it should have automatically unsubscribed app_identifier.app_id(). | 847 EXPECT_EQ(app_identifier.app_id(), gcm_driver_->last_deletetoken_app_id()); |
855 PushMessagingAppIdentifier app_identifier3 = | 848 PushMessagingAppIdentifier app_identifier3 = |
856 PushMessagingAppIdentifier::FindByServiceWorker( | 849 PushMessagingAppIdentifier::FindByServiceWorker( |
857 GetBrowser()->profile(), origin, | 850 GetBrowser()->profile(), origin, |
858 0LL /* service_worker_registration_id */); | 851 0LL /* service_worker_registration_id */); |
859 EXPECT_TRUE(app_identifier3.is_null()); | 852 EXPECT_TRUE(app_identifier3.is_null()); |
| 853 histogram_tester_.ExpectUniqueSample( |
| 854 "PushMessaging.UnregistrationReason", |
| 855 content::PUSH_UNREGISTRATION_REASON_DELIVERY_NO_SERVICE_WORKER, 1); |
| 856 } |
| 857 |
| 858 // Tests receiving messages for a subscription that no longer exists. |
| 859 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, NoSubscription) { |
| 860 std::string script_result; |
| 861 |
| 862 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully()); |
| 863 PushMessagingAppIdentifier app_identifier = |
| 864 GetAppIdentifierForServiceWorkerRegistration(0LL); |
| 865 |
| 866 LoadTestPage(); // Reload to become controlled. |
| 867 ASSERT_TRUE(RunScript("isControlled()", &script_result)); |
| 868 ASSERT_EQ("true - is controlled", script_result); |
| 869 |
| 870 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); |
| 871 EXPECT_EQ("unsubscribe result: true", script_result); |
| 872 histogram_tester_.ExpectUniqueSample( |
| 873 "PushMessaging.UnregistrationReason", |
| 874 content::PUSH_UNREGISTRATION_REASON_JAVASCRIPT_API, 1); |
| 875 |
| 876 gcm::IncomingMessage message; |
| 877 message.sender_id = GetTestApplicationServerKey(); |
| 878 message.raw_data = "testdata"; |
| 879 message.decrypted = true; |
| 880 SendMessageAndWaitUntilHandled(app_identifier, message); |
860 | 881 |
861 // No push data should have been received. | 882 // No push data should have been received. |
862 ASSERT_TRUE(RunScript("resultQueue.popImmediately()", &script_result)); | 883 ASSERT_TRUE(RunScript("resultQueue.popImmediately()", &script_result)); |
863 EXPECT_EQ("null", script_result); | 884 EXPECT_EQ("null", script_result); |
| 885 |
| 886 // Check that we record this case in UMA. |
| 887 histogram_tester_.ExpectTotalCount( |
| 888 "PushMessaging.DeliveryStatus.FindServiceWorker", 0); |
| 889 histogram_tester_.ExpectTotalCount( |
| 890 "PushMessaging.DeliveryStatus.ServiceWorkerEvent", 0); |
| 891 histogram_tester_.ExpectUniqueSample( |
| 892 "PushMessaging.DeliveryStatus", |
| 893 content::PUSH_DELIVERY_STATUS_UNKNOWN_APP_ID, 1); |
| 894 |
| 895 // Missing subscriptions should trigger an automatic unsubscription attempt. |
| 896 EXPECT_EQ(app_identifier.app_id(), gcm_driver_->last_deletetoken_app_id()); |
| 897 histogram_tester_.ExpectBucketCount( |
| 898 "PushMessaging.UnregistrationReason", |
| 899 content::PUSH_UNREGISTRATION_REASON_DELIVERY_UNKNOWN_APP_ID, 1); |
| 900 } |
| 901 |
| 902 // Tests receiving messages for an origin that does not have permission, but |
| 903 // somehow still has a subscription (as happened in https://crbug.com/633310). |
| 904 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PushEventWithoutPermission) { |
| 905 std::string script_result; |
| 906 |
| 907 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully()); |
| 908 PushMessagingAppIdentifier app_identifier = |
| 909 GetAppIdentifierForServiceWorkerRegistration(0LL); |
| 910 |
| 911 LoadTestPage(); // Reload to become controlled. |
| 912 ASSERT_TRUE(RunScript("isControlled()", &script_result)); |
| 913 ASSERT_EQ("true - is controlled", script_result); |
| 914 |
| 915 // Revoke notifications permission, but first disable the |
| 916 // PushMessagingServiceImpl's OnContentSettingChanged handler so that it |
| 917 // doesn't automatically unsubscribe, since we want to test the case where |
| 918 // there is still a subscription. |
| 919 HostContentSettingsMapFactory::GetForProfile(GetBrowser()->profile()) |
| 920 ->RemoveObserver(push_service()); |
| 921 HostContentSettingsMapFactory::GetForProfile(GetBrowser()->profile()) |
| 922 ->ClearSettingsForOneType(CONTENT_SETTINGS_TYPE_NOTIFICATIONS); |
| 923 base::RunLoop().RunUntilIdle(); |
| 924 |
| 925 gcm::IncomingMessage message; |
| 926 message.sender_id = GetTestApplicationServerKey(); |
| 927 message.raw_data = "testdata"; |
| 928 message.decrypted = true; |
| 929 SendMessageAndWaitUntilHandled(app_identifier, message); |
| 930 |
| 931 // No push data should have been received. |
| 932 ASSERT_TRUE(RunScript("resultQueue.popImmediately()", &script_result)); |
| 933 EXPECT_EQ("null", script_result); |
| 934 |
| 935 // Check that we record this case in UMA. |
| 936 histogram_tester_.ExpectTotalCount( |
| 937 "PushMessaging.DeliveryStatus.FindServiceWorker", 0); |
| 938 histogram_tester_.ExpectTotalCount( |
| 939 "PushMessaging.DeliveryStatus.ServiceWorkerEvent", 0); |
| 940 histogram_tester_.ExpectUniqueSample( |
| 941 "PushMessaging.DeliveryStatus", |
| 942 content::PUSH_DELIVERY_STATUS_PERMISSION_DENIED, 1); |
| 943 |
| 944 // Missing permission should trigger an automatic unsubscription attempt. |
| 945 EXPECT_EQ(app_identifier.app_id(), gcm_driver_->last_deletetoken_app_id()); |
| 946 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); |
| 947 EXPECT_EQ("false - not subscribed", script_result); |
| 948 GURL origin = https_server()->GetURL("/").GetOrigin(); |
| 949 PushMessagingAppIdentifier app_identifier_afterwards = |
| 950 PushMessagingAppIdentifier::FindByServiceWorker(GetBrowser()->profile(), |
| 951 origin, 0LL); |
| 952 EXPECT_TRUE(app_identifier_afterwards.is_null()); |
| 953 histogram_tester_.ExpectUniqueSample( |
| 954 "PushMessaging.UnregistrationReason", |
| 955 content::PUSH_UNREGISTRATION_REASON_DELIVERY_PERMISSION_DENIED, 1); |
864 } | 956 } |
865 | 957 |
866 #if defined(ENABLE_NOTIFICATIONS) | 958 #if defined(ENABLE_NOTIFICATIONS) |
867 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, | 959 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, |
868 PushEventEnforcesUserVisibleNotification) { | 960 PushEventEnforcesUserVisibleNotification) { |
869 std::string script_result; | 961 std::string script_result; |
870 | 962 |
871 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully()); | 963 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully()); |
872 PushMessagingAppIdentifier app_identifier = | 964 PushMessagingAppIdentifier app_identifier = |
873 GetAppIdentifierForServiceWorkerRegistration(0LL); | 965 GetAppIdentifierForServiceWorkerRegistration(0LL); |
(...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1167 EXPECT_EQ("NotAllowedError - Registration failed - permission denied", | 1259 EXPECT_EQ("NotAllowedError - Registration failed - permission denied", |
1168 script_result); | 1260 script_result); |
1169 | 1261 |
1170 ASSERT_TRUE(RunScript("permissionState()", &script_result)); | 1262 ASSERT_TRUE(RunScript("permissionState()", &script_result)); |
1171 EXPECT_EQ("permission status - denied", script_result); | 1263 EXPECT_EQ("permission status - denied", script_result); |
1172 } | 1264 } |
1173 | 1265 |
1174 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, UnsubscribeSuccess) { | 1266 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, UnsubscribeSuccess) { |
1175 std::string script_result; | 1267 std::string script_result; |
1176 | 1268 |
1177 EXPECT_TRUE(RunScript("registerServiceWorker()", &script_result)); | 1269 std::string token1; |
1178 EXPECT_EQ("ok - service worker registered", script_result); | 1270 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully(false /* use_key */, &token1)); |
| 1271 ASSERT_TRUE(RunScript("storePushSubscription()", &script_result)); |
| 1272 EXPECT_EQ("ok - stored", script_result); |
1179 | 1273 |
1180 // Resolves true if there was a subscription. | 1274 // Resolves true if there was a subscription. |
1181 std::string token1; | |
1182 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully(false /* use_key */, &token1)); | |
1183 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); | 1275 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); |
1184 EXPECT_EQ("unsubscribe result: true", script_result); | 1276 EXPECT_EQ("unsubscribe result: true", script_result); |
| 1277 histogram_tester_.ExpectUniqueSample( |
| 1278 "PushMessaging.UnregistrationReason", |
| 1279 content::PUSH_UNREGISTRATION_REASON_JAVASCRIPT_API, 1); |
1185 | 1280 |
1186 // Resolves false if there was no longer a subscription. | 1281 // Resolves false if there was no longer a subscription. |
1187 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); | 1282 ASSERT_TRUE(RunScript("unsubscribeStoredPushSubscription()", &script_result)); |
1188 EXPECT_EQ("unsubscribe result: false", script_result); | 1283 EXPECT_EQ("unsubscribe result: false", script_result); |
| 1284 histogram_tester_.ExpectUniqueSample( |
| 1285 "PushMessaging.UnregistrationReason", |
| 1286 content::PUSH_UNREGISTRATION_REASON_JAVASCRIPT_API, 2); |
1189 | 1287 |
1190 // TODO(johnme): Test that doesn't reject if there was a network error (should | 1288 // TODO(johnme): Test that doesn't reject if there was a network error (should |
1191 // deactivate subscription locally anyway). | 1289 // deactivate subscription locally anyway). |
1192 // TODO(johnme): Test that doesn't reject if there were other push service | 1290 // TODO(johnme): Test that doesn't reject if there were other push service |
1193 // errors (should deactivate subscription locally anyway). | 1291 // errors (should deactivate subscription locally anyway). |
1194 | 1292 |
1195 // Unsubscribing (with an existing reference to a PushSubscription), after | 1293 // Unsubscribing (with an existing reference to a PushSubscription), after |
1196 // unregistering the Service Worker, just means push subscription isn't found. | 1294 // replacing the Service Worker, actually still works, since we don't yet |
| 1295 // auto-unsubscribe when a Service Worker is unregistered (crbug.com/402458). |
1197 std::string token2; | 1296 std::string token2; |
1198 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully(false /* use_key */, &token2)); | 1297 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully(false /* use_key */, &token2)); |
1199 EXPECT_NE(token1, token2); | 1298 EXPECT_NE(token1, token2); |
| 1299 ASSERT_TRUE(RunScript("storePushSubscription()", &script_result)); |
| 1300 EXPECT_EQ("ok - stored", script_result); |
| 1301 ASSERT_TRUE(RunScript("replaceServiceWorker()", &script_result)); |
| 1302 EXPECT_EQ("ok - service worker replaced", script_result); |
| 1303 ASSERT_TRUE(RunScript("unsubscribeStoredPushSubscription()", &script_result)); |
| 1304 EXPECT_EQ("unsubscribe result: true", script_result); |
| 1305 histogram_tester_.ExpectUniqueSample( |
| 1306 "PushMessaging.UnregistrationReason", |
| 1307 content::PUSH_UNREGISTRATION_REASON_JAVASCRIPT_API, 3); |
| 1308 |
| 1309 // Unsubscribing (with an existing reference to a PushSubscription), after |
| 1310 // unregistering the Service Worker, actually still works, since we don't yet |
| 1311 // auto-unsubscribe when a Service Worker is unregistered (crbug.com/402458). |
| 1312 std::string token3; |
| 1313 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully(false /* use_key */, &token3)); |
| 1314 EXPECT_NE(token1, token3); |
| 1315 EXPECT_NE(token2, token3); |
| 1316 ASSERT_TRUE(RunScript("storePushSubscription()", &script_result)); |
| 1317 EXPECT_EQ("ok - stored", script_result); |
1200 ASSERT_TRUE(RunScript("unregisterServiceWorker()", &script_result)); | 1318 ASSERT_TRUE(RunScript("unregisterServiceWorker()", &script_result)); |
1201 ASSERT_EQ("service worker unregistration status: true", script_result); | 1319 EXPECT_EQ("service worker unregistration status: true", script_result); |
1202 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); | 1320 ASSERT_TRUE(RunScript("unsubscribeStoredPushSubscription()", &script_result)); |
1203 EXPECT_EQ("unsubscribe result: false", script_result); | 1321 EXPECT_EQ("unsubscribe result: true", script_result); |
| 1322 histogram_tester_.ExpectUniqueSample( |
| 1323 "PushMessaging.UnregistrationReason", |
| 1324 content::PUSH_UNREGISTRATION_REASON_JAVASCRIPT_API, 4); |
1204 } | 1325 } |
1205 | 1326 |
1206 // Push subscriptions used to be non-InstanceID GCM registrations. Still need | 1327 // Push subscriptions used to be non-InstanceID GCM registrations. Still need |
1207 // to be able to unsubscribe these, even though new ones are no longer created. | 1328 // to be able to unsubscribe these, even though new ones are no longer created. |
1208 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, LegacyUnsubscribeSuccess) { | 1329 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, LegacyUnsubscribeSuccess) { |
1209 std::string script_result; | 1330 std::string script_result; |
1210 | 1331 |
1211 // Resolves true if there was a subscription. | |
1212 std::string subscription_id1; | 1332 std::string subscription_id1; |
1213 ASSERT_NO_FATAL_FAILURE(LegacySubscribeSuccessfully(&subscription_id1)); | 1333 ASSERT_NO_FATAL_FAILURE(LegacySubscribeSuccessfully(&subscription_id1)); |
| 1334 ASSERT_TRUE(RunScript("storePushSubscription()", &script_result)); |
| 1335 EXPECT_EQ("ok - stored", script_result); |
| 1336 |
| 1337 // Resolves true if there was a subscription. |
1214 gcm_service_->AddExpectedUnregisterResponse(gcm::GCMClient::SUCCESS); | 1338 gcm_service_->AddExpectedUnregisterResponse(gcm::GCMClient::SUCCESS); |
1215 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); | 1339 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); |
1216 EXPECT_EQ("unsubscribe result: true", script_result); | 1340 EXPECT_EQ("unsubscribe result: true", script_result); |
| 1341 histogram_tester_.ExpectUniqueSample( |
| 1342 "PushMessaging.UnregistrationReason", |
| 1343 content::PUSH_UNREGISTRATION_REASON_JAVASCRIPT_API, 1); |
1217 | 1344 |
1218 // Resolves false if there was no longer a subscription. | 1345 // Resolves false if there was no longer a subscription. |
1219 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); | 1346 ASSERT_TRUE(RunScript("unsubscribeStoredPushSubscription()", &script_result)); |
1220 EXPECT_EQ("unsubscribe result: false", script_result); | 1347 EXPECT_EQ("unsubscribe result: false", script_result); |
| 1348 histogram_tester_.ExpectUniqueSample( |
| 1349 "PushMessaging.UnregistrationReason", |
| 1350 content::PUSH_UNREGISTRATION_REASON_JAVASCRIPT_API, 2); |
1221 | 1351 |
1222 // Doesn't reject if there was a network error (deactivates subscription | 1352 // Doesn't reject if there was a network error (deactivates subscription |
1223 // locally anyway). | 1353 // locally anyway). |
1224 std::string subscription_id2; | 1354 std::string subscription_id2; |
1225 ASSERT_NO_FATAL_FAILURE(LegacySubscribeSuccessfully(&subscription_id2)); | 1355 ASSERT_NO_FATAL_FAILURE(LegacySubscribeSuccessfully(&subscription_id2)); |
1226 EXPECT_NE(subscription_id1, subscription_id2); | 1356 EXPECT_NE(subscription_id1, subscription_id2); |
1227 gcm_service_->AddExpectedUnregisterResponse(gcm::GCMClient::NETWORK_ERROR); | 1357 gcm_service_->AddExpectedUnregisterResponse(gcm::GCMClient::NETWORK_ERROR); |
1228 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); | 1358 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); |
1229 EXPECT_EQ("unsubscribe result: true", script_result); | 1359 EXPECT_EQ("unsubscribe result: true", script_result); |
| 1360 histogram_tester_.ExpectUniqueSample( |
| 1361 "PushMessaging.UnregistrationReason", |
| 1362 content::PUSH_UNREGISTRATION_REASON_JAVASCRIPT_API, 3); |
1230 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); | 1363 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); |
1231 EXPECT_EQ("false - not subscribed", script_result); | 1364 EXPECT_EQ("false - not subscribed", script_result); |
1232 | 1365 |
1233 // Doesn't reject if there were other push service errors (deactivates | 1366 // Doesn't reject if there were other push service errors (deactivates |
1234 // subscription locally anyway). | 1367 // subscription locally anyway). |
1235 std::string subscription_id3; | 1368 std::string subscription_id3; |
1236 ASSERT_NO_FATAL_FAILURE(LegacySubscribeSuccessfully(&subscription_id3)); | 1369 ASSERT_NO_FATAL_FAILURE(LegacySubscribeSuccessfully(&subscription_id3)); |
1237 EXPECT_NE(subscription_id1, subscription_id3); | 1370 EXPECT_NE(subscription_id1, subscription_id3); |
1238 EXPECT_NE(subscription_id2, subscription_id3); | 1371 EXPECT_NE(subscription_id2, subscription_id3); |
1239 gcm_service_->AddExpectedUnregisterResponse( | 1372 gcm_service_->AddExpectedUnregisterResponse( |
1240 gcm::GCMClient::INVALID_PARAMETER); | 1373 gcm::GCMClient::INVALID_PARAMETER); |
1241 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); | 1374 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); |
1242 EXPECT_EQ("unsubscribe result: true", script_result); | 1375 EXPECT_EQ("unsubscribe result: true", script_result); |
| 1376 histogram_tester_.ExpectUniqueSample( |
| 1377 "PushMessaging.UnregistrationReason", |
| 1378 content::PUSH_UNREGISTRATION_REASON_JAVASCRIPT_API, 4); |
1243 | 1379 |
1244 // Unsubscribing (with an existing reference to a PushSubscription), after | 1380 // Unsubscribing (with an existing reference to a PushSubscription), after |
1245 // unregistering the Service Worker, just means push subscription isn't found. | 1381 // replacing the Service Worker, actually still works, since we don't yet |
| 1382 // auto-unsubscribe when a Service Worker is unregistered (crbug.com/402458). |
1246 std::string subscription_id4; | 1383 std::string subscription_id4; |
1247 ASSERT_NO_FATAL_FAILURE(LegacySubscribeSuccessfully(&subscription_id4)); | 1384 ASSERT_NO_FATAL_FAILURE(LegacySubscribeSuccessfully(&subscription_id4)); |
1248 EXPECT_NE(subscription_id1, subscription_id4); | 1385 EXPECT_NE(subscription_id1, subscription_id4); |
1249 EXPECT_NE(subscription_id2, subscription_id4); | 1386 EXPECT_NE(subscription_id2, subscription_id4); |
1250 EXPECT_NE(subscription_id3, subscription_id4); | 1387 EXPECT_NE(subscription_id3, subscription_id4); |
| 1388 ASSERT_TRUE(RunScript("storePushSubscription()", &script_result)); |
| 1389 EXPECT_EQ("ok - stored", script_result); |
| 1390 ASSERT_TRUE(RunScript("replaceServiceWorker()", &script_result)); |
| 1391 EXPECT_EQ("ok - service worker replaced", script_result); |
| 1392 ASSERT_TRUE(RunScript("unsubscribeStoredPushSubscription()", &script_result)); |
| 1393 EXPECT_EQ("unsubscribe result: true", script_result); |
| 1394 histogram_tester_.ExpectUniqueSample( |
| 1395 "PushMessaging.UnregistrationReason", |
| 1396 content::PUSH_UNREGISTRATION_REASON_JAVASCRIPT_API, 5); |
| 1397 |
| 1398 // Unsubscribing (with an existing reference to a PushSubscription), after |
| 1399 // unregistering the Service Worker, actually still works, since we don't yet |
| 1400 // auto-unsubscribe when a Service Worker is unregistered (crbug.com/402458). |
| 1401 std::string subscription_id5; |
| 1402 ASSERT_NO_FATAL_FAILURE(LegacySubscribeSuccessfully(&subscription_id5)); |
| 1403 EXPECT_NE(subscription_id1, subscription_id5); |
| 1404 EXPECT_NE(subscription_id2, subscription_id5); |
| 1405 EXPECT_NE(subscription_id3, subscription_id5); |
| 1406 EXPECT_NE(subscription_id4, subscription_id5); |
| 1407 ASSERT_TRUE(RunScript("storePushSubscription()", &script_result)); |
| 1408 EXPECT_EQ("ok - stored", script_result); |
1251 ASSERT_TRUE(RunScript("unregisterServiceWorker()", &script_result)); | 1409 ASSERT_TRUE(RunScript("unregisterServiceWorker()", &script_result)); |
1252 ASSERT_EQ("service worker unregistration status: true", script_result); | 1410 EXPECT_EQ("service worker unregistration status: true", script_result); |
1253 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); | 1411 ASSERT_TRUE(RunScript("unsubscribeStoredPushSubscription()", &script_result)); |
1254 EXPECT_EQ("unsubscribe result: false", script_result); | 1412 EXPECT_EQ("unsubscribe result: true", script_result); |
| 1413 histogram_tester_.ExpectUniqueSample( |
| 1414 "PushMessaging.UnregistrationReason", |
| 1415 content::PUSH_UNREGISTRATION_REASON_JAVASCRIPT_API, 6); |
1255 } | 1416 } |
1256 | 1417 |
1257 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, | 1418 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, |
1258 GlobalResetPushPermissionUnsubscribes) { | 1419 GlobalResetPushPermissionUnsubscribes) { |
1259 std::string script_result; | 1420 std::string script_result; |
1260 | 1421 |
1261 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully()); | 1422 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully()); |
1262 | 1423 |
1263 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); | 1424 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); |
1264 EXPECT_EQ("true - subscribed", script_result); | 1425 EXPECT_EQ("true - subscribed", script_result); |
1265 | 1426 |
1266 ASSERT_TRUE(RunScript("permissionState()", &script_result)); | 1427 ASSERT_TRUE(RunScript("permissionState()", &script_result)); |
1267 EXPECT_EQ("permission status - granted", script_result); | 1428 EXPECT_EQ("permission status - granted", script_result); |
1268 | 1429 |
1269 scoped_refptr<content::MessageLoopRunner> message_loop_runner = | 1430 scoped_refptr<content::MessageLoopRunner> message_loop_runner = |
1270 new content::MessageLoopRunner; | 1431 new content::MessageLoopRunner; |
1271 push_service()->SetContentSettingChangedCallbackForTesting( | 1432 push_service()->SetContentSettingChangedCallbackForTesting( |
1272 message_loop_runner->QuitClosure()); | 1433 message_loop_runner->QuitClosure()); |
1273 | 1434 |
1274 HostContentSettingsMapFactory::GetForProfile(GetBrowser()->profile()) | 1435 HostContentSettingsMapFactory::GetForProfile(GetBrowser()->profile()) |
1275 ->ClearSettingsForOneType(CONTENT_SETTINGS_TYPE_NOTIFICATIONS); | 1436 ->ClearSettingsForOneType(CONTENT_SETTINGS_TYPE_NOTIFICATIONS); |
1276 | 1437 |
1277 message_loop_runner->Run(); | 1438 message_loop_runner->Run(); |
1278 | 1439 |
1279 ASSERT_TRUE(RunScript("permissionState()", &script_result)); | 1440 ASSERT_TRUE(RunScript("permissionState()", &script_result)); |
1280 EXPECT_EQ("permission status - prompt", script_result); | 1441 EXPECT_EQ("permission status - prompt", script_result); |
1281 | 1442 |
1282 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); | 1443 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); |
1283 EXPECT_EQ("false - not subscribed", script_result); | 1444 EXPECT_EQ("false - not subscribed", script_result); |
| 1445 |
| 1446 histogram_tester_.ExpectUniqueSample( |
| 1447 "PushMessaging.UnregistrationReason", |
| 1448 content::PUSH_UNREGISTRATION_REASON_PERMISSION_REVOKED, 1); |
1284 } | 1449 } |
1285 | 1450 |
1286 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, | 1451 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, |
1287 LocalResetPushPermissionUnsubscribes) { | 1452 LocalResetPushPermissionUnsubscribes) { |
1288 std::string script_result; | 1453 std::string script_result; |
1289 | 1454 |
1290 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully()); | 1455 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully()); |
1291 | 1456 |
1292 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); | 1457 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); |
1293 EXPECT_EQ("true - subscribed", script_result); | 1458 EXPECT_EQ("true - subscribed", script_result); |
(...skipping 12 matching lines...) Expand all Loading... |
1306 CONTENT_SETTINGS_TYPE_NOTIFICATIONS, | 1471 CONTENT_SETTINGS_TYPE_NOTIFICATIONS, |
1307 std::string(), CONTENT_SETTING_DEFAULT); | 1472 std::string(), CONTENT_SETTING_DEFAULT); |
1308 | 1473 |
1309 message_loop_runner->Run(); | 1474 message_loop_runner->Run(); |
1310 | 1475 |
1311 ASSERT_TRUE(RunScript("permissionState()", &script_result)); | 1476 ASSERT_TRUE(RunScript("permissionState()", &script_result)); |
1312 EXPECT_EQ("permission status - prompt", script_result); | 1477 EXPECT_EQ("permission status - prompt", script_result); |
1313 | 1478 |
1314 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); | 1479 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); |
1315 EXPECT_EQ("false - not subscribed", script_result); | 1480 EXPECT_EQ("false - not subscribed", script_result); |
| 1481 |
| 1482 histogram_tester_.ExpectUniqueSample( |
| 1483 "PushMessaging.UnregistrationReason", |
| 1484 content::PUSH_UNREGISTRATION_REASON_PERMISSION_REVOKED, 1); |
1316 } | 1485 } |
1317 | 1486 |
1318 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, | 1487 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, |
1319 DenyPushPermissionUnsubscribes) { | 1488 DenyPushPermissionUnsubscribes) { |
1320 std::string script_result; | 1489 std::string script_result; |
1321 | 1490 |
1322 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully()); | 1491 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully()); |
1323 | 1492 |
1324 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); | 1493 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); |
1325 EXPECT_EQ("true - subscribed", script_result); | 1494 EXPECT_EQ("true - subscribed", script_result); |
(...skipping 12 matching lines...) Expand all Loading... |
1338 CONTENT_SETTINGS_TYPE_NOTIFICATIONS, | 1507 CONTENT_SETTINGS_TYPE_NOTIFICATIONS, |
1339 std::string(), CONTENT_SETTING_BLOCK); | 1508 std::string(), CONTENT_SETTING_BLOCK); |
1340 | 1509 |
1341 message_loop_runner->Run(); | 1510 message_loop_runner->Run(); |
1342 | 1511 |
1343 ASSERT_TRUE(RunScript("permissionState()", &script_result)); | 1512 ASSERT_TRUE(RunScript("permissionState()", &script_result)); |
1344 EXPECT_EQ("permission status - denied", script_result); | 1513 EXPECT_EQ("permission status - denied", script_result); |
1345 | 1514 |
1346 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); | 1515 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); |
1347 EXPECT_EQ("false - not subscribed", script_result); | 1516 EXPECT_EQ("false - not subscribed", script_result); |
| 1517 |
| 1518 histogram_tester_.ExpectUniqueSample( |
| 1519 "PushMessaging.UnregistrationReason", |
| 1520 content::PUSH_UNREGISTRATION_REASON_PERMISSION_REVOKED, 1); |
1348 } | 1521 } |
1349 | 1522 |
1350 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, | 1523 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, |
1351 GlobalResetNotificationsPermissionUnsubscribes) { | 1524 GlobalResetNotificationsPermissionUnsubscribes) { |
1352 std::string script_result; | 1525 std::string script_result; |
1353 | 1526 |
1354 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully()); | 1527 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully()); |
1355 | 1528 |
1356 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); | 1529 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); |
1357 EXPECT_EQ("true - subscribed", script_result); | 1530 EXPECT_EQ("true - subscribed", script_result); |
1358 | 1531 |
1359 ASSERT_TRUE(RunScript("permissionState()", &script_result)); | 1532 ASSERT_TRUE(RunScript("permissionState()", &script_result)); |
1360 EXPECT_EQ("permission status - granted", script_result); | 1533 EXPECT_EQ("permission status - granted", script_result); |
1361 | 1534 |
1362 scoped_refptr<content::MessageLoopRunner> message_loop_runner = | 1535 scoped_refptr<content::MessageLoopRunner> message_loop_runner = |
1363 new content::MessageLoopRunner; | 1536 new content::MessageLoopRunner; |
1364 push_service()->SetContentSettingChangedCallbackForTesting( | 1537 push_service()->SetContentSettingChangedCallbackForTesting( |
1365 message_loop_runner->QuitClosure()); | 1538 message_loop_runner->QuitClosure()); |
1366 | 1539 |
1367 HostContentSettingsMapFactory::GetForProfile(GetBrowser()->profile()) | 1540 HostContentSettingsMapFactory::GetForProfile(GetBrowser()->profile()) |
1368 ->ClearSettingsForOneType(CONTENT_SETTINGS_TYPE_NOTIFICATIONS); | 1541 ->ClearSettingsForOneType(CONTENT_SETTINGS_TYPE_NOTIFICATIONS); |
1369 | 1542 |
1370 message_loop_runner->Run(); | 1543 message_loop_runner->Run(); |
1371 | 1544 |
1372 ASSERT_TRUE(RunScript("permissionState()", &script_result)); | 1545 ASSERT_TRUE(RunScript("permissionState()", &script_result)); |
1373 EXPECT_EQ("permission status - prompt", script_result); | 1546 EXPECT_EQ("permission status - prompt", script_result); |
1374 | 1547 |
1375 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); | 1548 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); |
1376 EXPECT_EQ("false - not subscribed", script_result); | 1549 EXPECT_EQ("false - not subscribed", script_result); |
| 1550 |
| 1551 histogram_tester_.ExpectUniqueSample( |
| 1552 "PushMessaging.UnregistrationReason", |
| 1553 content::PUSH_UNREGISTRATION_REASON_PERMISSION_REVOKED, 1); |
1377 } | 1554 } |
1378 | 1555 |
1379 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, | 1556 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, |
1380 LocalResetNotificationsPermissionUnsubscribes) { | 1557 LocalResetNotificationsPermissionUnsubscribes) { |
1381 std::string script_result; | 1558 std::string script_result; |
1382 | 1559 |
1383 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully()); | 1560 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully()); |
1384 | 1561 |
1385 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); | 1562 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); |
1386 EXPECT_EQ("true - subscribed", script_result); | 1563 EXPECT_EQ("true - subscribed", script_result); |
(...skipping 12 matching lines...) Expand all Loading... |
1399 CONTENT_SETTINGS_TYPE_NOTIFICATIONS, | 1576 CONTENT_SETTINGS_TYPE_NOTIFICATIONS, |
1400 std::string(), CONTENT_SETTING_DEFAULT); | 1577 std::string(), CONTENT_SETTING_DEFAULT); |
1401 | 1578 |
1402 message_loop_runner->Run(); | 1579 message_loop_runner->Run(); |
1403 | 1580 |
1404 ASSERT_TRUE(RunScript("permissionState()", &script_result)); | 1581 ASSERT_TRUE(RunScript("permissionState()", &script_result)); |
1405 EXPECT_EQ("permission status - prompt", script_result); | 1582 EXPECT_EQ("permission status - prompt", script_result); |
1406 | 1583 |
1407 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); | 1584 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); |
1408 EXPECT_EQ("false - not subscribed", script_result); | 1585 EXPECT_EQ("false - not subscribed", script_result); |
| 1586 |
| 1587 histogram_tester_.ExpectUniqueSample( |
| 1588 "PushMessaging.UnregistrationReason", |
| 1589 content::PUSH_UNREGISTRATION_REASON_PERMISSION_REVOKED, 1); |
1409 } | 1590 } |
1410 | 1591 |
1411 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, | 1592 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, |
1412 DenyNotificationsPermissionUnsubscribes) { | 1593 DenyNotificationsPermissionUnsubscribes) { |
1413 std::string script_result; | 1594 std::string script_result; |
1414 | 1595 |
1415 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully()); | 1596 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully()); |
1416 | 1597 |
1417 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); | 1598 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); |
1418 EXPECT_EQ("true - subscribed", script_result); | 1599 EXPECT_EQ("true - subscribed", script_result); |
(...skipping 12 matching lines...) Expand all Loading... |
1431 CONTENT_SETTINGS_TYPE_NOTIFICATIONS, | 1612 CONTENT_SETTINGS_TYPE_NOTIFICATIONS, |
1432 std::string(), CONTENT_SETTING_BLOCK); | 1613 std::string(), CONTENT_SETTING_BLOCK); |
1433 | 1614 |
1434 message_loop_runner->Run(); | 1615 message_loop_runner->Run(); |
1435 | 1616 |
1436 ASSERT_TRUE(RunScript("permissionState()", &script_result)); | 1617 ASSERT_TRUE(RunScript("permissionState()", &script_result)); |
1437 EXPECT_EQ("permission status - denied", script_result); | 1618 EXPECT_EQ("permission status - denied", script_result); |
1438 | 1619 |
1439 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); | 1620 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); |
1440 EXPECT_EQ("false - not subscribed", script_result); | 1621 EXPECT_EQ("false - not subscribed", script_result); |
| 1622 |
| 1623 histogram_tester_.ExpectUniqueSample( |
| 1624 "PushMessaging.UnregistrationReason", |
| 1625 content::PUSH_UNREGISTRATION_REASON_PERMISSION_REVOKED, 1); |
1441 } | 1626 } |
1442 | 1627 |
1443 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, | 1628 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, |
1444 GrantAlreadyGrantedPermissionDoesNotUnsubscribe) { | 1629 GrantAlreadyGrantedPermissionDoesNotUnsubscribe) { |
1445 std::string script_result; | 1630 std::string script_result; |
1446 | 1631 |
1447 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully()); | 1632 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully()); |
1448 | 1633 |
1449 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); | 1634 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); |
1450 EXPECT_EQ("true - subscribed", script_result); | 1635 EXPECT_EQ("true - subscribed", script_result); |
(...skipping 12 matching lines...) Expand all Loading... |
1463 CONTENT_SETTINGS_TYPE_NOTIFICATIONS, | 1648 CONTENT_SETTINGS_TYPE_NOTIFICATIONS, |
1464 std::string(), CONTENT_SETTING_ALLOW); | 1649 std::string(), CONTENT_SETTING_ALLOW); |
1465 | 1650 |
1466 message_loop_runner->Run(); | 1651 message_loop_runner->Run(); |
1467 | 1652 |
1468 ASSERT_TRUE(RunScript("permissionState()", &script_result)); | 1653 ASSERT_TRUE(RunScript("permissionState()", &script_result)); |
1469 EXPECT_EQ("permission status - granted", script_result); | 1654 EXPECT_EQ("permission status - granted", script_result); |
1470 | 1655 |
1471 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); | 1656 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); |
1472 EXPECT_EQ("true - subscribed", script_result); | 1657 EXPECT_EQ("true - subscribed", script_result); |
| 1658 |
| 1659 histogram_tester_.ExpectTotalCount("PushMessaging.UnregistrationReason", 0); |
1473 } | 1660 } |
1474 | 1661 |
1475 // This test is testing some non-trivial content settings rules and make sure | 1662 // This test is testing some non-trivial content settings rules and make sure |
1476 // that they are respected with regards to automatic unsubscription. In other | 1663 // that they are respected with regards to automatic unsubscription. In other |
1477 // words, it checks that the push service does not end up unsubscribing origins | 1664 // words, it checks that the push service does not end up unsubscribing origins |
1478 // that have push permission with some non-common rules. | 1665 // that have push permission with some non-common rules. |
1479 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, | 1666 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, |
1480 AutomaticUnsubscriptionFollowsContentSettingRules) { | 1667 AutomaticUnsubscriptionFollowsContentSettingRules) { |
1481 std::string script_result; | 1668 std::string script_result; |
1482 | 1669 |
(...skipping 16 matching lines...) Expand all Loading... |
1499 CONTENT_SETTING_ALLOW); | 1686 CONTENT_SETTING_ALLOW); |
1500 HostContentSettingsMapFactory::GetForProfile(GetBrowser()->profile()) | 1687 HostContentSettingsMapFactory::GetForProfile(GetBrowser()->profile()) |
1501 ->SetContentSettingDefaultScope(origin, GURL(), | 1688 ->SetContentSettingDefaultScope(origin, GURL(), |
1502 CONTENT_SETTINGS_TYPE_NOTIFICATIONS, | 1689 CONTENT_SETTINGS_TYPE_NOTIFICATIONS, |
1503 std::string(), CONTENT_SETTING_DEFAULT); | 1690 std::string(), CONTENT_SETTING_DEFAULT); |
1504 | 1691 |
1505 message_loop_runner->Run(); | 1692 message_loop_runner->Run(); |
1506 | 1693 |
1507 // The two first rules should give |origin| the permission to use Push even | 1694 // The two first rules should give |origin| the permission to use Push even |
1508 // if the rules it used to have have been reset. | 1695 // if the rules it used to have have been reset. |
1509 // The Push service should not unsubcribe |origin| because at no point it was | 1696 // The Push service should not unsubscribe |origin| because at no point it was |
1510 // left without permission to use Push. | 1697 // left without permission to use Push. |
1511 | 1698 |
1512 ASSERT_TRUE(RunScript("permissionState()", &script_result)); | 1699 ASSERT_TRUE(RunScript("permissionState()", &script_result)); |
1513 EXPECT_EQ("permission status - granted", script_result); | 1700 EXPECT_EQ("permission status - granted", script_result); |
1514 | 1701 |
1515 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); | 1702 ASSERT_TRUE(RunScript("hasSubscription()", &script_result)); |
1516 EXPECT_EQ("true - subscribed", script_result); | 1703 EXPECT_EQ("true - subscribed", script_result); |
| 1704 |
| 1705 histogram_tester_.ExpectTotalCount("PushMessaging.UnregistrationReason", 0); |
1517 } | 1706 } |
1518 | 1707 |
1519 // Checks automatically unsubscribing due to a revoked permission after | 1708 // Checks automatically unsubscribing due to a revoked permission after |
1520 // previously clearing site data. | 1709 // previously clearing site data. |
1521 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, | 1710 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, |
1522 ResetPushPermissionAfterClearingSiteData) { | 1711 ResetPushPermissionAfterClearingSiteData) { |
1523 std::string script_result; | 1712 std::string script_result; |
1524 | 1713 |
1525 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully()); | 1714 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully()); |
1526 | 1715 |
(...skipping 24 matching lines...) Expand all Loading... |
1551 HostContentSettingsMapFactory::GetForProfile(GetBrowser()->profile()) | 1740 HostContentSettingsMapFactory::GetForProfile(GetBrowser()->profile()) |
1552 ->ClearSettingsForOneType(CONTENT_SETTINGS_TYPE_NOTIFICATIONS); | 1741 ->ClearSettingsForOneType(CONTENT_SETTINGS_TYPE_NOTIFICATIONS); |
1553 | 1742 |
1554 run_loop.Run(); | 1743 run_loop.Run(); |
1555 | 1744 |
1556 // |app_identifier| should no longer be stored in prefs. | 1745 // |app_identifier| should no longer be stored in prefs. |
1557 PushMessagingAppIdentifier stored_app_identifier2 = | 1746 PushMessagingAppIdentifier stored_app_identifier2 = |
1558 PushMessagingAppIdentifier::FindByAppId(GetBrowser()->profile(), | 1747 PushMessagingAppIdentifier::FindByAppId(GetBrowser()->profile(), |
1559 app_identifier.app_id()); | 1748 app_identifier.app_id()); |
1560 EXPECT_TRUE(stored_app_identifier2.is_null()); | 1749 EXPECT_TRUE(stored_app_identifier2.is_null()); |
| 1750 |
| 1751 histogram_tester_.ExpectUniqueSample( |
| 1752 "PushMessaging.UnregistrationReason", |
| 1753 content::PUSH_UNREGISTRATION_REASON_PERMISSION_REVOKED, 1); |
1561 } | 1754 } |
1562 | 1755 |
1563 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, EncryptionKeyUniqueness) { | 1756 IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, EncryptionKeyUniqueness) { |
1564 std::string token1; | 1757 std::string token1; |
1565 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully(false /* use_key */, &token1)); | 1758 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully(false /* use_key */, &token1)); |
1566 | 1759 |
1567 std::string first_public_key; | 1760 std::string first_public_key; |
1568 ASSERT_TRUE(RunScript("GetP256dh()", &first_public_key)); | 1761 ASSERT_TRUE(RunScript("GetP256dh()", &first_public_key)); |
1569 EXPECT_GE(first_public_key.size(), 32u); | 1762 EXPECT_GE(first_public_key.size(), 32u); |
1570 | 1763 |
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1691 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully()); | 1884 ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully()); |
1692 ASSERT_FALSE(background_mode_manager->IsBackgroundModeActive()); | 1885 ASSERT_FALSE(background_mode_manager->IsBackgroundModeActive()); |
1693 | 1886 |
1694 // After dropping the last subscription background mode is still inactive. | 1887 // After dropping the last subscription background mode is still inactive. |
1695 std::string script_result; | 1888 std::string script_result; |
1696 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); | 1889 ASSERT_TRUE(RunScript("unsubscribePush()", &script_result)); |
1697 EXPECT_EQ("unsubscribe result: true", script_result); | 1890 EXPECT_EQ("unsubscribe result: true", script_result); |
1698 ASSERT_FALSE(background_mode_manager->IsBackgroundModeActive()); | 1891 ASSERT_FALSE(background_mode_manager->IsBackgroundModeActive()); |
1699 } | 1892 } |
1700 #endif // BUILDFLAG(ENABLE_BACKGROUND) && !defined(OS_CHROMEOS) | 1893 #endif // BUILDFLAG(ENABLE_BACKGROUND) && !defined(OS_CHROMEOS) |
OLD | NEW |