Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(260)

Side by Side Diff: chrome/browser/push_messaging/push_messaging_browsertest.cc

Issue 2387483002: Push API: Refactor and fix unsubscribe API (Closed)
Patch Set: Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
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
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
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
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
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
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
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
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)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698