Chromium Code Reviews| 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); |
| 805 // Ideally unregistering the service worker would unsubscribe from push, but | |
| 806 // that isn't yet implemented. | |
|
Peter Beverloo
2016/09/30 14:26:06
nit: refer to 402458?
johnme
2016/09/30 17:02:09
Done.
| |
| 807 histogram_tester_.ExpectTotalCount("PushMessaging.UnregistrationReason", 0); | |
| 819 | 808 |
| 820 // Unregistering the service worker doesn't yet unsubscribe from push (though | 809 // Unregistering the service worker doesn't yet unsubscribe from push (though |
| 821 // it should), and FindByServiceWorker doesn't require a live SW. | 810 // it should), and FindByServiceWorker doesn't require a live SW. |
| 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 | |
| 873 // Use a fresh HistogramTester to ignore UMA logged by the unsubscribe above. | |
| 874 base::HistogramTester histogram_tester2; | |
|
Peter Beverloo
2016/09/30 14:26:06
Any reason to not just increment the expected coun
johnme
2016/09/30 17:02:09
Done (but I had to switch to a less strict ExpectB
| |
| 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_tester2.ExpectTotalCount( | |
| 888 "PushMessaging.DeliveryStatus.FindServiceWorker", 0); | |
| 889 histogram_tester2.ExpectTotalCount( | |
| 890 "PushMessaging.DeliveryStatus.ServiceWorkerEvent", 0); | |
| 891 histogram_tester2.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_tester2.ExpectUniqueSample( | |
| 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 (but we should). | |
| 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 (but we should). | |
|
Peter Beverloo
2016/09/30 14:26:06
Here and everywhere else: please refer to the bug
johnme
2016/09/30 17:02:09
Done.
| |
| 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 (but we should). | |
| 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 (but we should). | |
| 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 |