| Index: chrome/browser/push_messaging/push_messaging_browsertest.cc
|
| diff --git a/chrome/browser/push_messaging/push_messaging_browsertest.cc b/chrome/browser/push_messaging/push_messaging_browsertest.cc
|
| index c498827fe330f1ce9ea241053174f67b2210e889..c7ee2155c33fedb96698bc0c97ee59a4d21bd150 100644
|
| --- a/chrome/browser/push_messaging/push_messaging_browsertest.cc
|
| +++ b/chrome/browser/push_messaging/push_messaging_browsertest.cc
|
| @@ -722,9 +722,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PushEventSuccess) {
|
|
|
| ASSERT_TRUE(RunScript("isControlled()", &script_result));
|
| ASSERT_EQ("false - is not controlled", script_result);
|
| -
|
| LoadTestPage(); // Reload to become controlled.
|
| -
|
| ASSERT_TRUE(RunScript("isControlled()", &script_result));
|
| ASSERT_EQ("true - is controlled", script_result);
|
|
|
| @@ -757,11 +755,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PushEventWithoutPayload) {
|
| PushMessagingAppIdentifier app_identifier =
|
| GetAppIdentifierForServiceWorkerRegistration(0LL);
|
|
|
| - ASSERT_TRUE(RunScript("isControlled()", &script_result));
|
| - ASSERT_EQ("false - is not controlled", script_result);
|
| -
|
| LoadTestPage(); // Reload to become controlled.
|
| -
|
| ASSERT_TRUE(RunScript("isControlled()", &script_result));
|
| ASSERT_EQ("true - is controlled", script_result);
|
|
|
| @@ -781,11 +775,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, LegacyPushEvent) {
|
| PushMessagingAppIdentifier app_identifier =
|
| GetAppIdentifierForServiceWorkerRegistration(0LL);
|
|
|
| - ASSERT_TRUE(RunScript("isControlled()", &script_result));
|
| - ASSERT_EQ("false - is not controlled", script_result);
|
| -
|
| LoadTestPage(); // Reload to become controlled.
|
| -
|
| ASSERT_TRUE(RunScript("isControlled()", &script_result));
|
| ASSERT_EQ("true - is controlled", script_result);
|
|
|
| @@ -805,20 +795,19 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PushEventNoServiceWorker) {
|
| PushMessagingAppIdentifier app_identifier =
|
| GetAppIdentifierForServiceWorkerRegistration(0LL);
|
|
|
| - ASSERT_TRUE(RunScript("isControlled()", &script_result));
|
| - ASSERT_EQ("false - is not controlled", script_result);
|
| -
|
| LoadTestPage(); // Reload to become controlled.
|
| -
|
| ASSERT_TRUE(RunScript("isControlled()", &script_result));
|
| ASSERT_EQ("true - is controlled", script_result);
|
|
|
| // Unregister service worker. Sending a message should now fail.
|
| ASSERT_TRUE(RunScript("unregisterServiceWorker()", &script_result));
|
| ASSERT_EQ("service worker unregistration status: true", script_result);
|
| -
|
| - // Unregistering the service worker doesn't yet unsubscribe from push (though
|
| - // it should), and FindByServiceWorker doesn't require a live SW.
|
| + // Ideally unregistering the service worker would unsubscribe from push, but
|
| + // that isn't yet implemented (crbug.com/402458).
|
| + histogram_tester_.ExpectTotalCount("PushMessaging.UnregistrationReason", 0);
|
| + // Since unregistering the service worker doesn't yet unsubscribe from push,
|
| + // and FindByServiceWorker doesn't require a live SW, we can still lookup the
|
| + // push subscription's app identifier.
|
| GURL origin = https_server()->GetURL("/").GetOrigin();
|
| PushMessagingAppIdentifier app_identifier2 =
|
| PushMessagingAppIdentifier::FindByServiceWorker(
|
| @@ -840,6 +829,10 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PushEventNoServiceWorker) {
|
| run_loop.Run();
|
| EXPECT_TRUE(IsRegisteredKeepAliveEqualTo(false));
|
|
|
| + // No push data should have been received.
|
| + ASSERT_TRUE(RunScript("resultQueue.popImmediately()", &script_result));
|
| + EXPECT_EQ("null", script_result);
|
| +
|
| // Check that we record this case in UMA.
|
| histogram_tester_.ExpectUniqueSample(
|
| "PushMessaging.DeliveryStatus.FindServiceWorker",
|
| @@ -850,17 +843,116 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PushEventNoServiceWorker) {
|
| "PushMessaging.DeliveryStatus",
|
| content::PUSH_DELIVERY_STATUS_NO_SERVICE_WORKER, 1);
|
|
|
| - // Now the push service has received a message and failed to find its service
|
| - // worker, it should have automatically unsubscribed app_identifier.app_id().
|
| + // Missing Service Workers should trigger an automatic unsubscription attempt.
|
| + EXPECT_EQ(app_identifier.app_id(), gcm_driver_->last_deletetoken_app_id());
|
| PushMessagingAppIdentifier app_identifier3 =
|
| PushMessagingAppIdentifier::FindByServiceWorker(
|
| GetBrowser()->profile(), origin,
|
| 0LL /* service_worker_registration_id */);
|
| EXPECT_TRUE(app_identifier3.is_null());
|
| + histogram_tester_.ExpectUniqueSample(
|
| + "PushMessaging.UnregistrationReason",
|
| + content::PUSH_UNREGISTRATION_REASON_DELIVERY_NO_SERVICE_WORKER, 1);
|
| +}
|
| +
|
| +// Tests receiving messages for a subscription that no longer exists.
|
| +IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, NoSubscription) {
|
| + std::string script_result;
|
| +
|
| + ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully());
|
| + PushMessagingAppIdentifier app_identifier =
|
| + GetAppIdentifierForServiceWorkerRegistration(0LL);
|
| +
|
| + LoadTestPage(); // Reload to become controlled.
|
| + ASSERT_TRUE(RunScript("isControlled()", &script_result));
|
| + ASSERT_EQ("true - is controlled", script_result);
|
| +
|
| + ASSERT_TRUE(RunScript("unsubscribePush()", &script_result));
|
| + EXPECT_EQ("unsubscribe result: true", script_result);
|
| + histogram_tester_.ExpectUniqueSample(
|
| + "PushMessaging.UnregistrationReason",
|
| + content::PUSH_UNREGISTRATION_REASON_JAVASCRIPT_API, 1);
|
| +
|
| + gcm::IncomingMessage message;
|
| + message.sender_id = GetTestApplicationServerKey();
|
| + message.raw_data = "testdata";
|
| + message.decrypted = true;
|
| + SendMessageAndWaitUntilHandled(app_identifier, message);
|
| +
|
| + // No push data should have been received.
|
| + ASSERT_TRUE(RunScript("resultQueue.popImmediately()", &script_result));
|
| + EXPECT_EQ("null", script_result);
|
| +
|
| + // Check that we record this case in UMA.
|
| + histogram_tester_.ExpectTotalCount(
|
| + "PushMessaging.DeliveryStatus.FindServiceWorker", 0);
|
| + histogram_tester_.ExpectTotalCount(
|
| + "PushMessaging.DeliveryStatus.ServiceWorkerEvent", 0);
|
| + histogram_tester_.ExpectUniqueSample(
|
| + "PushMessaging.DeliveryStatus",
|
| + content::PUSH_DELIVERY_STATUS_UNKNOWN_APP_ID, 1);
|
| +
|
| + // Missing subscriptions should trigger an automatic unsubscription attempt.
|
| + EXPECT_EQ(app_identifier.app_id(), gcm_driver_->last_deletetoken_app_id());
|
| + histogram_tester_.ExpectBucketCount(
|
| + "PushMessaging.UnregistrationReason",
|
| + content::PUSH_UNREGISTRATION_REASON_DELIVERY_UNKNOWN_APP_ID, 1);
|
| +}
|
| +
|
| +// Tests receiving messages for an origin that does not have permission, but
|
| +// somehow still has a subscription (as happened in https://crbug.com/633310).
|
| +IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PushEventWithoutPermission) {
|
| + std::string script_result;
|
| +
|
| + ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully());
|
| + PushMessagingAppIdentifier app_identifier =
|
| + GetAppIdentifierForServiceWorkerRegistration(0LL);
|
| +
|
| + LoadTestPage(); // Reload to become controlled.
|
| + ASSERT_TRUE(RunScript("isControlled()", &script_result));
|
| + ASSERT_EQ("true - is controlled", script_result);
|
| +
|
| + // Revoke notifications permission, but first disable the
|
| + // PushMessagingServiceImpl's OnContentSettingChanged handler so that it
|
| + // doesn't automatically unsubscribe, since we want to test the case where
|
| + // there is still a subscription.
|
| + HostContentSettingsMapFactory::GetForProfile(GetBrowser()->profile())
|
| + ->RemoveObserver(push_service());
|
| + HostContentSettingsMapFactory::GetForProfile(GetBrowser()->profile())
|
| + ->ClearSettingsForOneType(CONTENT_SETTINGS_TYPE_NOTIFICATIONS);
|
| + base::RunLoop().RunUntilIdle();
|
| +
|
| + gcm::IncomingMessage message;
|
| + message.sender_id = GetTestApplicationServerKey();
|
| + message.raw_data = "testdata";
|
| + message.decrypted = true;
|
| + SendMessageAndWaitUntilHandled(app_identifier, message);
|
|
|
| // No push data should have been received.
|
| ASSERT_TRUE(RunScript("resultQueue.popImmediately()", &script_result));
|
| EXPECT_EQ("null", script_result);
|
| +
|
| + // Check that we record this case in UMA.
|
| + histogram_tester_.ExpectTotalCount(
|
| + "PushMessaging.DeliveryStatus.FindServiceWorker", 0);
|
| + histogram_tester_.ExpectTotalCount(
|
| + "PushMessaging.DeliveryStatus.ServiceWorkerEvent", 0);
|
| + histogram_tester_.ExpectUniqueSample(
|
| + "PushMessaging.DeliveryStatus",
|
| + content::PUSH_DELIVERY_STATUS_PERMISSION_DENIED, 1);
|
| +
|
| + // Missing permission should trigger an automatic unsubscription attempt.
|
| + EXPECT_EQ(app_identifier.app_id(), gcm_driver_->last_deletetoken_app_id());
|
| + ASSERT_TRUE(RunScript("hasSubscription()", &script_result));
|
| + EXPECT_EQ("false - not subscribed", script_result);
|
| + GURL origin = https_server()->GetURL("/").GetOrigin();
|
| + PushMessagingAppIdentifier app_identifier_afterwards =
|
| + PushMessagingAppIdentifier::FindByServiceWorker(GetBrowser()->profile(),
|
| + origin, 0LL);
|
| + EXPECT_TRUE(app_identifier_afterwards.is_null());
|
| + histogram_tester_.ExpectUniqueSample(
|
| + "PushMessaging.UnregistrationReason",
|
| + content::PUSH_UNREGISTRATION_REASON_DELIVERY_PERMISSION_DENIED, 1);
|
| }
|
|
|
| #if defined(ENABLE_NOTIFICATIONS)
|
| @@ -1174,18 +1266,24 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PermissionStateSaysDenied) {
|
| IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, UnsubscribeSuccess) {
|
| std::string script_result;
|
|
|
| - EXPECT_TRUE(RunScript("registerServiceWorker()", &script_result));
|
| - EXPECT_EQ("ok - service worker registered", script_result);
|
| -
|
| - // Resolves true if there was a subscription.
|
| std::string token1;
|
| ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully(false /* use_key */, &token1));
|
| + ASSERT_TRUE(RunScript("storePushSubscription()", &script_result));
|
| + EXPECT_EQ("ok - stored", script_result);
|
| +
|
| + // Resolves true if there was a subscription.
|
| ASSERT_TRUE(RunScript("unsubscribePush()", &script_result));
|
| EXPECT_EQ("unsubscribe result: true", script_result);
|
| + histogram_tester_.ExpectUniqueSample(
|
| + "PushMessaging.UnregistrationReason",
|
| + content::PUSH_UNREGISTRATION_REASON_JAVASCRIPT_API, 1);
|
|
|
| // Resolves false if there was no longer a subscription.
|
| - ASSERT_TRUE(RunScript("unsubscribePush()", &script_result));
|
| + ASSERT_TRUE(RunScript("unsubscribeStoredPushSubscription()", &script_result));
|
| EXPECT_EQ("unsubscribe result: false", script_result);
|
| + histogram_tester_.ExpectUniqueSample(
|
| + "PushMessaging.UnregistrationReason",
|
| + content::PUSH_UNREGISTRATION_REASON_JAVASCRIPT_API, 2);
|
|
|
| // TODO(johnme): Test that doesn't reject if there was a network error (should
|
| // deactivate subscription locally anyway).
|
| @@ -1193,14 +1291,37 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, UnsubscribeSuccess) {
|
| // errors (should deactivate subscription locally anyway).
|
|
|
| // Unsubscribing (with an existing reference to a PushSubscription), after
|
| - // unregistering the Service Worker, just means push subscription isn't found.
|
| + // replacing the Service Worker, actually still works, since we don't yet
|
| + // auto-unsubscribe when a Service Worker is unregistered (crbug.com/402458).
|
| std::string token2;
|
| ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully(false /* use_key */, &token2));
|
| EXPECT_NE(token1, token2);
|
| + ASSERT_TRUE(RunScript("storePushSubscription()", &script_result));
|
| + EXPECT_EQ("ok - stored", script_result);
|
| + ASSERT_TRUE(RunScript("replaceServiceWorker()", &script_result));
|
| + EXPECT_EQ("ok - service worker replaced", script_result);
|
| + ASSERT_TRUE(RunScript("unsubscribeStoredPushSubscription()", &script_result));
|
| + EXPECT_EQ("unsubscribe result: true", script_result);
|
| + histogram_tester_.ExpectUniqueSample(
|
| + "PushMessaging.UnregistrationReason",
|
| + content::PUSH_UNREGISTRATION_REASON_JAVASCRIPT_API, 3);
|
| +
|
| + // Unsubscribing (with an existing reference to a PushSubscription), after
|
| + // unregistering the Service Worker, actually still works, since we don't yet
|
| + // auto-unsubscribe when a Service Worker is unregistered (crbug.com/402458).
|
| + std::string token3;
|
| + ASSERT_NO_FATAL_FAILURE(SubscribeSuccessfully(false /* use_key */, &token3));
|
| + EXPECT_NE(token1, token3);
|
| + EXPECT_NE(token2, token3);
|
| + ASSERT_TRUE(RunScript("storePushSubscription()", &script_result));
|
| + EXPECT_EQ("ok - stored", script_result);
|
| ASSERT_TRUE(RunScript("unregisterServiceWorker()", &script_result));
|
| - ASSERT_EQ("service worker unregistration status: true", script_result);
|
| - ASSERT_TRUE(RunScript("unsubscribePush()", &script_result));
|
| - EXPECT_EQ("unsubscribe result: false", script_result);
|
| + EXPECT_EQ("service worker unregistration status: true", script_result);
|
| + ASSERT_TRUE(RunScript("unsubscribeStoredPushSubscription()", &script_result));
|
| + EXPECT_EQ("unsubscribe result: true", script_result);
|
| + histogram_tester_.ExpectUniqueSample(
|
| + "PushMessaging.UnregistrationReason",
|
| + content::PUSH_UNREGISTRATION_REASON_JAVASCRIPT_API, 4);
|
| }
|
|
|
| // Push subscriptions used to be non-InstanceID GCM registrations. Still need
|
| @@ -1208,16 +1329,25 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, UnsubscribeSuccess) {
|
| IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, LegacyUnsubscribeSuccess) {
|
| std::string script_result;
|
|
|
| - // Resolves true if there was a subscription.
|
| std::string subscription_id1;
|
| ASSERT_NO_FATAL_FAILURE(LegacySubscribeSuccessfully(&subscription_id1));
|
| + ASSERT_TRUE(RunScript("storePushSubscription()", &script_result));
|
| + EXPECT_EQ("ok - stored", script_result);
|
| +
|
| + // Resolves true if there was a subscription.
|
| gcm_service_->AddExpectedUnregisterResponse(gcm::GCMClient::SUCCESS);
|
| ASSERT_TRUE(RunScript("unsubscribePush()", &script_result));
|
| EXPECT_EQ("unsubscribe result: true", script_result);
|
| + histogram_tester_.ExpectUniqueSample(
|
| + "PushMessaging.UnregistrationReason",
|
| + content::PUSH_UNREGISTRATION_REASON_JAVASCRIPT_API, 1);
|
|
|
| // Resolves false if there was no longer a subscription.
|
| - ASSERT_TRUE(RunScript("unsubscribePush()", &script_result));
|
| + ASSERT_TRUE(RunScript("unsubscribeStoredPushSubscription()", &script_result));
|
| EXPECT_EQ("unsubscribe result: false", script_result);
|
| + histogram_tester_.ExpectUniqueSample(
|
| + "PushMessaging.UnregistrationReason",
|
| + content::PUSH_UNREGISTRATION_REASON_JAVASCRIPT_API, 2);
|
|
|
| // Doesn't reject if there was a network error (deactivates subscription
|
| // locally anyway).
|
| @@ -1227,6 +1357,9 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, LegacyUnsubscribeSuccess) {
|
| gcm_service_->AddExpectedUnregisterResponse(gcm::GCMClient::NETWORK_ERROR);
|
| ASSERT_TRUE(RunScript("unsubscribePush()", &script_result));
|
| EXPECT_EQ("unsubscribe result: true", script_result);
|
| + histogram_tester_.ExpectUniqueSample(
|
| + "PushMessaging.UnregistrationReason",
|
| + content::PUSH_UNREGISTRATION_REASON_JAVASCRIPT_API, 3);
|
| ASSERT_TRUE(RunScript("hasSubscription()", &script_result));
|
| EXPECT_EQ("false - not subscribed", script_result);
|
|
|
| @@ -1240,18 +1373,46 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, LegacyUnsubscribeSuccess) {
|
| gcm::GCMClient::INVALID_PARAMETER);
|
| ASSERT_TRUE(RunScript("unsubscribePush()", &script_result));
|
| EXPECT_EQ("unsubscribe result: true", script_result);
|
| + histogram_tester_.ExpectUniqueSample(
|
| + "PushMessaging.UnregistrationReason",
|
| + content::PUSH_UNREGISTRATION_REASON_JAVASCRIPT_API, 4);
|
|
|
| // Unsubscribing (with an existing reference to a PushSubscription), after
|
| - // unregistering the Service Worker, just means push subscription isn't found.
|
| + // replacing the Service Worker, actually still works, since we don't yet
|
| + // auto-unsubscribe when a Service Worker is unregistered (crbug.com/402458).
|
| std::string subscription_id4;
|
| ASSERT_NO_FATAL_FAILURE(LegacySubscribeSuccessfully(&subscription_id4));
|
| EXPECT_NE(subscription_id1, subscription_id4);
|
| EXPECT_NE(subscription_id2, subscription_id4);
|
| EXPECT_NE(subscription_id3, subscription_id4);
|
| + ASSERT_TRUE(RunScript("storePushSubscription()", &script_result));
|
| + EXPECT_EQ("ok - stored", script_result);
|
| + ASSERT_TRUE(RunScript("replaceServiceWorker()", &script_result));
|
| + EXPECT_EQ("ok - service worker replaced", script_result);
|
| + ASSERT_TRUE(RunScript("unsubscribeStoredPushSubscription()", &script_result));
|
| + EXPECT_EQ("unsubscribe result: true", script_result);
|
| + histogram_tester_.ExpectUniqueSample(
|
| + "PushMessaging.UnregistrationReason",
|
| + content::PUSH_UNREGISTRATION_REASON_JAVASCRIPT_API, 5);
|
| +
|
| + // Unsubscribing (with an existing reference to a PushSubscription), after
|
| + // unregistering the Service Worker, actually still works, since we don't yet
|
| + // auto-unsubscribe when a Service Worker is unregistered (crbug.com/402458).
|
| + std::string subscription_id5;
|
| + ASSERT_NO_FATAL_FAILURE(LegacySubscribeSuccessfully(&subscription_id5));
|
| + EXPECT_NE(subscription_id1, subscription_id5);
|
| + EXPECT_NE(subscription_id2, subscription_id5);
|
| + EXPECT_NE(subscription_id3, subscription_id5);
|
| + EXPECT_NE(subscription_id4, subscription_id5);
|
| + ASSERT_TRUE(RunScript("storePushSubscription()", &script_result));
|
| + EXPECT_EQ("ok - stored", script_result);
|
| ASSERT_TRUE(RunScript("unregisterServiceWorker()", &script_result));
|
| - ASSERT_EQ("service worker unregistration status: true", script_result);
|
| - ASSERT_TRUE(RunScript("unsubscribePush()", &script_result));
|
| - EXPECT_EQ("unsubscribe result: false", script_result);
|
| + EXPECT_EQ("service worker unregistration status: true", script_result);
|
| + ASSERT_TRUE(RunScript("unsubscribeStoredPushSubscription()", &script_result));
|
| + EXPECT_EQ("unsubscribe result: true", script_result);
|
| + histogram_tester_.ExpectUniqueSample(
|
| + "PushMessaging.UnregistrationReason",
|
| + content::PUSH_UNREGISTRATION_REASON_JAVASCRIPT_API, 6);
|
| }
|
|
|
| IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest,
|
| @@ -1281,6 +1442,10 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest,
|
|
|
| ASSERT_TRUE(RunScript("hasSubscription()", &script_result));
|
| EXPECT_EQ("false - not subscribed", script_result);
|
| +
|
| + histogram_tester_.ExpectUniqueSample(
|
| + "PushMessaging.UnregistrationReason",
|
| + content::PUSH_UNREGISTRATION_REASON_PERMISSION_REVOKED, 1);
|
| }
|
|
|
| IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest,
|
| @@ -1313,6 +1478,10 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest,
|
|
|
| ASSERT_TRUE(RunScript("hasSubscription()", &script_result));
|
| EXPECT_EQ("false - not subscribed", script_result);
|
| +
|
| + histogram_tester_.ExpectUniqueSample(
|
| + "PushMessaging.UnregistrationReason",
|
| + content::PUSH_UNREGISTRATION_REASON_PERMISSION_REVOKED, 1);
|
| }
|
|
|
| IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest,
|
| @@ -1345,6 +1514,10 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest,
|
|
|
| ASSERT_TRUE(RunScript("hasSubscription()", &script_result));
|
| EXPECT_EQ("false - not subscribed", script_result);
|
| +
|
| + histogram_tester_.ExpectUniqueSample(
|
| + "PushMessaging.UnregistrationReason",
|
| + content::PUSH_UNREGISTRATION_REASON_PERMISSION_REVOKED, 1);
|
| }
|
|
|
| IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest,
|
| @@ -1374,6 +1547,10 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest,
|
|
|
| ASSERT_TRUE(RunScript("hasSubscription()", &script_result));
|
| EXPECT_EQ("false - not subscribed", script_result);
|
| +
|
| + histogram_tester_.ExpectUniqueSample(
|
| + "PushMessaging.UnregistrationReason",
|
| + content::PUSH_UNREGISTRATION_REASON_PERMISSION_REVOKED, 1);
|
| }
|
|
|
| IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest,
|
| @@ -1406,6 +1583,10 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest,
|
|
|
| ASSERT_TRUE(RunScript("hasSubscription()", &script_result));
|
| EXPECT_EQ("false - not subscribed", script_result);
|
| +
|
| + histogram_tester_.ExpectUniqueSample(
|
| + "PushMessaging.UnregistrationReason",
|
| + content::PUSH_UNREGISTRATION_REASON_PERMISSION_REVOKED, 1);
|
| }
|
|
|
| IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest,
|
| @@ -1438,6 +1619,10 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest,
|
|
|
| ASSERT_TRUE(RunScript("hasSubscription()", &script_result));
|
| EXPECT_EQ("false - not subscribed", script_result);
|
| +
|
| + histogram_tester_.ExpectUniqueSample(
|
| + "PushMessaging.UnregistrationReason",
|
| + content::PUSH_UNREGISTRATION_REASON_PERMISSION_REVOKED, 1);
|
| }
|
|
|
| IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest,
|
| @@ -1470,6 +1655,8 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest,
|
|
|
| ASSERT_TRUE(RunScript("hasSubscription()", &script_result));
|
| EXPECT_EQ("true - subscribed", script_result);
|
| +
|
| + histogram_tester_.ExpectTotalCount("PushMessaging.UnregistrationReason", 0);
|
| }
|
|
|
| // This test is testing some non-trivial content settings rules and make sure
|
| @@ -1506,7 +1693,7 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest,
|
|
|
| // The two first rules should give |origin| the permission to use Push even
|
| // if the rules it used to have have been reset.
|
| - // The Push service should not unsubcribe |origin| because at no point it was
|
| + // The Push service should not unsubscribe |origin| because at no point it was
|
| // left without permission to use Push.
|
|
|
| ASSERT_TRUE(RunScript("permissionState()", &script_result));
|
| @@ -1514,6 +1701,8 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest,
|
|
|
| ASSERT_TRUE(RunScript("hasSubscription()", &script_result));
|
| EXPECT_EQ("true - subscribed", script_result);
|
| +
|
| + histogram_tester_.ExpectTotalCount("PushMessaging.UnregistrationReason", 0);
|
| }
|
|
|
| // Checks automatically unsubscribing due to a revoked permission after
|
| @@ -1558,6 +1747,10 @@ IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest,
|
| PushMessagingAppIdentifier::FindByAppId(GetBrowser()->profile(),
|
| app_identifier.app_id());
|
| EXPECT_TRUE(stored_app_identifier2.is_null());
|
| +
|
| + histogram_tester_.ExpectUniqueSample(
|
| + "PushMessaging.UnregistrationReason",
|
| + content::PUSH_UNREGISTRATION_REASON_PERMISSION_REVOKED, 1);
|
| }
|
|
|
| IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, EncryptionKeyUniqueness) {
|
|
|